div#pop_ad { opacity: 0; }
AD
首页 > 数字货币 > 正文

TON幕后花絮:部署智能合约的经验教训

[2021-01-29 05:15:23] 来源: 编辑:wangjia 点击量:
评论 点击收藏
导读: 在一片最近的新闻争吵与美国证券交易委员会,相对较少的人可能已经听说过电报的开放式网络的竞争发生几个星期前。这是一个里程碑式的事件,它改变了曾经用Fift(TON的通用编程语言)编写的TON开发人员社
在一片最近的新闻争吵与美国证券交易委员会,相对较少的人可能已经听说过电报的开放式网络的竞争发生几个星期前。这是一个里程碑式的事件,它改变了曾经用Fift(TON的通用编程语言)编写的TON开发人员社区的微不足道的内容,由于其底层方法,它与通用语言有很大不同。

竞赛吸引了新的开发人员,进一步围绕新平台建立了社区,并通过提供示例以及如何在TON上部署解决了有关智能合约缺乏文档的现有问题。我的团队,Button Wallet和我也参加了比赛,总结了TON比赛期间和之后发生的一切。
缺乏文件
FunC — TON编写智能合约的另一种语言是FunC,这是一种类似于C的高级语言,具有函数和变量,比通用的Fift更容易读写。类似的比较将是C#和CIL。但是,在竞赛之前,几乎没有FunC的任何文档。这就构成了一个问题,因为大多数TON竞赛任务都要求参赛者编写智能合约。

由于缺少有关使用FunC编写TON的文档,因此参赛者需要分析和学习现有示例,这些示例连同一些理论细节已上传到一个小型GitHub存储库和TON测试网站。虽然这并不是一件艰巨的任务,但是仅凭示例来理解一种语言的基本必要性就具有挑战性。不过,大多数参赛者在开始的几天后就可以开始在FunC中自由写作。

基础知识 —使用FunC编写智能合约时,我们需要了解如何部署和编译智能合约,以及如何使用参数调用函数。除了没有任何显示完整步骤的示例外,完全缺少有关语言基本方面的详细信息,这简直是可笑的。TON的简要指南对参加比赛的人员非常有帮助,但这只是在TON上编写智能合约的介绍,它方便地省略了有关在智能合约上部署和运行函数调用的示例或详细信息。最终,每个人​​都想出了所有这些方法,但是这花费了大量的时间和精力。
比赛任务
我要强调的五项任务中有两项:异步支付渠道和同步支付渠道。但是首先,什么是支付渠道?

支付渠道是一种在链下(即,在区块链外部)的两方之间发送交易的方法,以使其更快,更便宜且更具定制性。用户在区块链上拥有自己的账户,并可以使用其存入的金额在他们之间发送交易。为此,一个特殊的智能合约会在支付通道打开时存储双方的存款。提款需要包含某些数据的智能合约,下面将对此进行讨论。

TON幕后花絮:部署智能合约的经验教训

甲方和乙方将硬币发送到智能合约,进行存款以在它们之间建立支付渠道

要打开支付渠道,需要从双方将资金存入智能合约。

TON幕后花絮:部署智能合约的经验教训

甲方向乙方发送交易,将付款渠道的状态从(a,b)更改为新的

如果支付渠道是开放的,则交易双方之间可以以每秒100,000笔以上的速度发送交易。重要的是要了解这一切都是在链下进行的,并且在某些时候,各方将需要达成协议并从智能合约中提取资金。

TON幕后花絮:部署智能合约的经验教训

通过其同步支付渠道从A到B的脱链交易

假定当事各方可能试图不公平地提取资金池中的所有资金。因此,各方都需要证明自己要提取的款项属于他们。为了证明这一点,各方都需要发送其签名,以正确证明状态(总和A,总和B和其他一些信息)。

同步支付通道的状态编号除非满足接收方B的确认和签名等特定要求,否则不会更改。因此,甲方不能连续向乙发送几笔交易,因为每个新州都需要双方签字。

在向乙方发送交易时,甲方需要创建一个状态,该状态将更改属于甲方和乙方的金额,使用自己的私钥对该状态进行签名,然后将新状态和签名发送给乙方。然后,B签署该状态并将其签名发回给甲方,从而确认交易状态。在乙方创建新状态之前,甲方无法将其他交易发送给乙方。因此,它称为同步通道。

TON幕后花絮:部署智能合约的经验教训

通过异步支付渠道从甲方到乙方的脱链交易

在异步支付渠道中,每个交易对手都有自己的状态组。每个州都包括甲方从乙方收到的金额,甲方已发送给乙方的交易次数,乙方发送给甲方的金额以及乙方发送给甲方的交易数。在同步支付渠道中,A和B不需要等待对方的确认,他们只需要发送一个已签名状态即可。

这两个渠道最困难的方面是提款过程。智能合约需要在提取资金之前检查各方是否提供了正确的数据。我们需要检查状态的签名,并且还要检查该状态是否为最新状态。如果双方之间存在冲突,则智能合约需要根据最新状态进行解决。

必须有保护措施,以防止将相同的数据发送到不同的支付渠道,以及一种解决方案,以解决一方不提供任何信息的问题。所有这些都必须用FunC编写并经过全面测试,以确保安全。
解决方案和竞争对手
根据比赛的官方频道,共有68项参赛作品。

提交的大部分内容是多重签名钱包和域名系统(或DNS)解析器。但是,一些提交用于支付渠道。写作支付渠道是竞争的最复杂的任务,所以一些强队(如363,375,381是能够产生这样的解决方案)是比别人更突出。
下一步是什么?
目前,大约有10到20个具有足够技能和知识的团队可以开始构建TON的基础架构,他们很可能会将大多数成功的以太坊解决方案转移到TON。TON竞赛及其200,000美元的奖池奖励提供了亲身体验,从而大大提高了可以使用该平台的团队数量。现在,所有参与团队都准备在TON上构建自己的项目或初创公司。
Button Wallet团队的要点
作为TON的早期采用者和Telegram爱好者,我和我的团队决定参加TON竞赛。我们有八人组成的大型团队。对于我们的解决方案,我们决定建立同步和异步支付渠道。尽管我们在比赛中犯了一些错误,但我们确实设法与所有包装程序建立了一个同步付款渠道,该包装程序允许使用命令行界面进行存款,提款和交易转账。因此,我们不仅订立了智能合约,而且还签订了许多包装协议,使与TON的合作变得更加容易。完成同步通道后,我们利用等离子开发经验中的知识,并构建了另一个实现异步链下支付的智能合约。但是,我们无法在截止日期之前将所有包装都写入其中。

我们非常喜欢所有任务,并希望我们有更多的时间来执行所有任务。尽管如此,我们还是获得了最佳同步支付渠道的第一名和最佳异步支付渠道的第三名。

添加新手交流群:币种分析、每日早晚盘分析

添加助理微信,一对一亲自指导:YoYo8abc

查看更多:

为您推荐