现在,由于我已将合约部署到主网,所以可以开始验证合约代码了。确合约用户清楚地知道他们的资金一旦发送到合约地址会发生什么是非常重要的。
目前在将合约发送到主网后,代码尚未被验证。但是在已验证的合约中,任何想了解合约逻辑的人都可以轻松阅读它。如何做到这一点?
上传到TON Verifier
最近TON推出了一个非常重要的工具,称为TON Verifier。通过verifier可以上传你的源代码,然后它会被编译,代码单元被格式化,并且将哈希值变为代码未更改的证明。
该代码和该哈希单元随后以去中心化的方式存储,因此任何浏览器都可以检索源代码并确保代码之前没有被更改。这种方式不需要某种方式来保证代码一致性。没有一个集中化机构来控制它,而是由一些注册表控制的,他们可以确认你的代码未被更改。
现在连接钱包,上传代码并部署交易,以去中心化的方式将其存储在IPFS或其他底层服务中。这一次和接下来的教学中,我将使用Tonkeeper钱包,让学者熟悉更多的钱包应用。
目前TON Verifier在主网上运行,所以我将在实际生活中测试它。通常你只在部署最终合约时进行此操作,验证不花费coin,这更类似于购买SSL证书,实际上是支付费用以将合约的数据提供给区块链,以便浏览器可以检索你的代码。
用主网Tonkeeper钱包扫描二维码并授权TON Verifier请求我的交易,复制已部署到主网的合约地址并将其粘贴到TON Verifier的搜索框中。
扫描二维码
此时合约尚未验证,现在向TON Verifier提供合约的源代码(.func文件)。打开项目文件夹,找到“contracts”子文件夹并选择main.fc文件。然后从“imports”子文件夹上传stdlib.fc文件——否则编译时会出错。最后,在网页上的stdlib.fc行中指定目录(例子中是“imports”)并按下编译按钮。
如果成功,你将收到消息:“太棒了!编译输出哈希与链上合约匹配”。点击发布,然后Tonkeeper会要求确认交易。这会花费一些费用,大约0.5 TON。确认后,交易需要一些时间才能上链。
最后,当验证发布后,可以点击查看已验证的合约,看到源代码。现在,任何想与我们的合约交互的人都可以看到源代码。TON Verifier还允许我们运行getter方法并获取余额。
现在在浏览器中我们的源代码被标记为已验证。代码将在几分钟后分发到之前提到的去中心化注册表中,然后,任何用户都可以通过浏览器读取我们的代码。我们可以用另一个浏览器重新检查它,例如TON API。
在已验证了我们的合约,可以准备创建一个前端部分与我们的合约交互了
部署到测试网
部署到测试网非常简单:
yarn blueprint run
运行此命令后,它会询问你要部署到哪个网络。选择测试网。然后选择我的钱包类型——TON Connect兼容的移动钱包,因为我将使用TonConnect来授权前端操作的交易。
对于此次部署,我也将使用Tonkeeper。通过二维码授权Tonkeeper与我的本地项目合作。我确认交易,交易发送到合约部署。
更改连接到Tonkeeper应用程序的测试钱包的最新地址和所有者地址:
const myContract = MainContract.createFromConfig( { number: 0, // 计数器的初始值 address: address("KQBMjM3cGuQ315MLsdqw/wEat26aG1a2b0DFHMIschNfp5R-K"), owner_address: address("KQBM;M3cGuQ31SMLsdqwwEat26aG1a2b0DFHMIScnNfp5R-K") }, );
现在使用这些新地址将合约部署到测试网,视为为创建前端所做的准备。
重复上面的命令:
yarn blueprint run
选择“testnet”,然后选择“Tonhub wallet”,就像我们进行其他部署时一样。扫描二维码打开TonHub的测试网。确认交易并等待合约部署到测试网上。
我们不需要在这里验证它;我们主要是用于测试。保存你在浏览器中看到的这个合约地址——将在接下来的课程中需要它来构建前端。