Tron生态开发及智能合约语言Solidity
通过我们的分步指导课程,学习在Tron网络上构建自己的去中心化应用,探究区块链技术的无限潜力。
Tron区块链介绍
欢迎大家与我们一同开启探索Tron区块链世界的第一步。今天,我们将熟悉Tron生态系统,这是一个改变我们对内容共享的看法的强大平台。我们将探讨Tron在区块链领域至关重要的原因,以及支持它成为构建去中心化应用的理想平台的具体功能。最后,我们将学习如何设置开发环境并使用Tron的测试网。准备好了吗?我们马上开始!
Tron及其在区块链生态系统中的作用
区块链技术正在变革数字世界,Tron则是这场革命的重要组成部分。想象一下,在一个全球免费的内容娱乐系统中,您无需中介即可共享和访问内容,这是怎样一种场景!而这正是Tron想要实现的目标!那么,Tron到底是什么呢?简单来说,Tron是一种基于区块链的协议,旨在实现数字内容的免费共享。Tron与其他区块链平台有哪些区别呢?总的来说,它的高吞吐量、可扩展性和可用性使其成为区块链爱好者的独特选择。
在Tron构建去中心化应用的优势
Tron的主要优势之一是其三层架构:存储层、核心层和应用层。这种结构使Tron能够为开发人员提供安全高效的开发环境。

此外,Tron采用委托权益证明共识机制,实现了更快、更高效的交易。在Tron上,您可以享受低交易费用,并参与一个充满活力的用户社区。
设置您的Tron开发环境
现在是时候动手搭建我们的开发环境了!
第一步:安装TronLink钱包。TronLink钱包是我们进入Tron区块链的桥梁。我们可以直接将其安装为Chrome浏览器的扩展程序,非常方便。方法如下:进入Chrome浏览器的网上商店,搜索TronLink,按电脑屏幕提示将其添加到Chrome浏览器,然后按照设置说明进行操作。
第二步:设置Tron IDE。Tron IDE是Tron自己的集成开发环境(IDE),专为创建Tron应用而设计。它类似于Remix,但是专为Tron生态系统打造的。您可以通过访问Tron IDE网站(https://www.tronide.io/)来使用它。无需在电脑上下载或安装任何东西!
使用Tron的测试网进行试验
在我们进入真正的Tron网络之前,需要在沙盒环境中进行试验。Tron的官方测试网站Nile即提供了这样一种功能。将TronLink连接到Nile可以遵循以下步骤:
第一步:在浏览器中打开TronLink扩展程序并创建一个新钱包。
第二步:设置好钱包后,在TronLink弹出窗口的顶部有一个下拉菜单。单击它并选择“Nile Testnet”。

第三步:要使用该测试网,我们需要一些测试TRX。进入此页面,按照说明在Nile上获取测试TRX。只需粘贴您的钱包地址即可。

接下来我们将深入探讨在Tron IDE上使用Solidity编写智能合约,并使用TronWeb和TronLink钱包将这些合约部署到Tron网络上。
Solidity智能合约基础
Solidity编程语言介绍
Solidity是在Tron和其他基于以太坊的区块链上创建智能合约的主要编程语言。Solidity的语法类似于JavaScript,使具有JavaScript背景的人更容易学习。
活动1:用大约20分钟时间阅读Solidity文档(https://docs.soliditylang.org/)。写下你注意到的Solidity和你知道的其他编程语言之间的任何相似之处或不同之处。
Solidity中的语法、数据类型、变量和函数
在Solidity中,我们有各种数据类型,包括uint、address、bool和string。我们通过定义变量来存储数据,并编写函数来操作这些数据。我们将创建一个非常基本的智能合约,用于存储数字并实现检索和更改该数字的功能。
打开Tron IDE并创建一个新的工作区。在第一个名为Storage.sol的合约中,您可以找到以下代码:
Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
在本合约中,我们定义:
一个名为number的状态变量,类型为uint256(256位无符号整数)。
一个名为store()的函数,用于更新number的值。
一个名为retrieve()的函数,用于返回number的当前值。
在Nile测试网上编写和部署简单的Tron智能合约
我们的合约已经编写完毕,接下来就需要将其部署在Nile测试网上。
第一步:单击左侧边栏顶部自上而下的第二个图标(COMPILER),在Tron IDE中编译合约。
第二步:确保您的TronLink钱包已连接到Nile测试网。

第三步:单击左侧边栏自上而下的第三个图标(DEPLOY & RUN TRANSACTIONS),在下拉菜单中选择您的合约,然后单击“Deploy”。

好了,您的第一份合约现已成功部署在Nile测试网上!
运行已部署合约
通过Tron IDE成功在Nile测试网上部署智能合约后,您需要执行以下步骤:
第一步:在Tron IDE中打开“DEPLOY & RUN TRANSACTIONS”选项卡,即左侧边栏从上往下数第三个图标。
第二步:在下面的“Deployed Contracts”部分,您可以看到已部署的所有合约。找到名为“Storage”的合约。单击它可以查看合约的函数。
第三步:您可以看到两个函数,store()和retrieve()。
第四步:要存储数字,只需在store()函数旁边的方框中输入该数字。这个数字需要uint256可接受的范围内(在0到大约1.15x10^77之间)。输入数字后,点击store()按钮。此操作将发起一笔交易。

第五步:此时将弹出一个TronLink通知,要求您确认执行此交易。点击确认交易。
第六步:交易确认后(您可以在TronLink钱包的交易历史中查看状态),您可以调用retrieve()函数。只需单击retrieve()按钮,而无需输入任何值。
第七步:调用retrieve()函数不会创建新的交易,因为此函数是一个view函数(不会修改合约状态)。在Tron IDE屏幕底部的“console”选项卡中会显示输出的数字,此数字应该与您使用store()函数存储的数字相同。
至此,您已经成功运行了已部署合约,这是用户使用您的dApp的核心步骤。
在Tron上构建简单的去中心化应用(DApp)
设计基本的Tron DApp的结构和功能
DApp是前端和后端的组合,前端使用可以进行web3.js调用的语言编写,后端基本上是智能合约。我们的DApp将采用简单直观的界面,提供两个主要功能:存储数字和从智能合约中检索数字。我们将使用超文本标记语言(HTML)来构建前端结构,并使用带有TronWeb库的JavaScript与Tron网络进行交互。
开发和部署DApp所需的智能合约
我们已经在第2课中完成了这一步!我们的智能合约“Storage”已经部署在Nile测试网上。
使用Web技术实现用户界面和前端组件
使用以下代码创建一个名为index.html的HTML文件:
HTML
htmlCopy code
<!DOCTYPE html><html><body><h2>Simple Storage DApp</h2><input id="storageValue" type="number"><button id="storeButton">Store</button><button id="retrieveButton">Retrieve</button><p id="displayValue"></p><!-- Load TronWeb --><script src="https://cdn.jsdelivr.net/npm/tronweb@2/dist/tronweb.min.js"></script><script src="app.js"></script></body></html>
FAQ
我应该在哪里创建这些文件?
您应该在本地计算机上的新文件夹中创建index.html和app.js这两个文件。具体请参考以下步骤:
第一步:在电脑上创建一个新文件夹并自行命名。例如,我们将其命名为TronDApp。
第二步:在TronDApp文件夹中,创建一个新文件并命名为index.html。这将是我们编写网页结构的HTML文件。
第三步:在TronDApp文件夹中,继续创建一个新文件并命名为app.js。这将是我们编写与Tron区块链进行交互的代码的JavaScript文件。
第四步:在任意文本编辑器(如Notepad、Sublime Text、Visual Studio Code等)中打开上述文件,并将第3.3课中提供的相应代码粘贴进去。
请记得用您自己的合约地址和私钥分别替换app.js文件中的"YOUR_CONTRACT_ADDRESS"和"YOUR_PRIVATE_KEY"。
第五步:要查看您的DApp,请在浏览器(如Chrome、Firefox等)中打开index.html文件。
请记住,这些文件应始终保存在同一文件夹中,因为它们是互相关联的(index.html文件通过HTML代码中的<script src="app.js"></script>行与app.js文件关联)。如果您移动了其中一个文件而不移动另一个文件,链接将断开,您的DApp将无法正常工作。
以上步骤将创建一个简单的网页,其中包含一个输入字段、两个按钮(一个用于存储数字,另一个用于检索数字)和一个用于显示检索到的数字的段落。
接下来,使用以下代码创建一个名为app.js的JavaScript文件:
JavaScript
javascriptCopy code
const contractAddress = "YOUR_CONTRACT_ADDRESS"; // replace with your contract address// setup TronWebconst tronWeb = new TronWeb({
fullHost: 'https://api.nile.trongrid.io',
privateKey: 'YOUR_PRIVATE_KEY' // replace with your private key
})
// get contract instanceasync function getContract() {
const contract = await tronWeb.contract().at(contractAddress);
return contract;
}
// setup listeners for buttonsdocument.getElementById('storeButton').addEventListener('click', async () => {
const num = document.getElementById('storageValue').value;
const contract = await getContract();
await contract.store(num).send();
});
document.getElementById('retrieveButton').addEventListener('click', async () => {
const contract = await getContract();
const response = await contract.retrieve().call();
document.getElementById('displayValue').innerText = response;
});
在此脚本中,将"YOUR_CONTRACT_ADDRESS"和'YOUR_PRIVATE_KEY'分别替换为您的合约地址和私钥。此JavaScript文件设置了TronWeb并与我们的合约相连,在单击按钮后会与合约交互。
要获取私钥,只需点击“Export Account”并选择“Private Key”,如下所示:

注意:在真实的DApp中,您绝不应该像这样暴露自己的私钥。在这里,我们只是为了方便您理解而举例说明。对于生产级别的DApp,您应该使用安全的方式签署交易,如TronLink。
Tron DApp测试与部署
您可以通过在浏览器中打开index.html文件来测试您的DApp。请务必使用安装了TronLink扩展程序并与Nile测试网连接的浏览器(如Chrome或Brave浏览器)。在输入框中输入一个数字并点击“Store”。交易确认后,点击“Retrieve”,您所存储的数字将作为输出显示出来。
Tron DApp开发的最后一环
DApp回顾
现在,我们已经构建好了一个去中心化应用,可以与Tron区块链上的智能合约交互。DApp由一个简单的HTML前端和一个JavaScript后端组成。JavaScript使用TronWeb与Tron网络通信,也就是与您的Storage智能合约通信。
在这个DApp中,用户可以在智能合约中存储一个数字并进行检索。虽然这个例子比较简单,但它包含了DApp开发的核心原则:编写智能合约,部署到区块链,并为用户创建与之交互的界面。
继续Tron DApp开发之旅
继续在Tron区块链上开发DApp的过程中,您可能希望深入探讨以下一些概念和主题:
高级Solidity的概念:虽然我们在本课程中介绍了Solidity的基本概念,但还有很多东西需要我们学习,包括更复杂的数据类型(如结构和映射)、函数修饰符、错误处理等等。
高级DApp功能:DApp中可以添加很多功能,例如与TronLink的整合、监听并响应智能合约事件、发送和接收TRX或TRC10/TRC20代币等。
安全性:智能合约和DApp开发最重要的一个因素便是安全性。您应该了解常见的智能合约漏洞、避免方法,以及如何为您的合约编写测试。
前端开发:本课程侧重于DApp开发的区块链/智能合约方面,但开发良好的用户交互界面同样重要。若想要进一步在此领域探索,您可以学习更多关于前端开发的知识,包括更复杂的HTML/CSS、JavaScript或React等前端库/框架。
结语
恭喜您成功完成课程《Tron生态开发及智能合约语言Solidity》的学习!您开启了一段激动人心的编程之旅,从Tron和Solidity的基础概念学习到打造自己的个性化DApp。我们相信,通过这门课程培养的见解和能力将激发您对区块链开发的持久兴趣和深厚热情。坚持探索,继续在去中心化应用领域开发自己的潜能。您迈出的每一步都反映了您在这个开创性领域的成长。我们期待看到您为区块链社区带来令人惊叹的创新和解决方案。不断突破自我,开启愉快的编程之旅!