LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > TON 编程大赛的幕后花絮:Button Wallet 团队部署智能合约的经验和教训

TON 编程大赛的幕后花絮:Button Wallet 团队部署智能合约的经验和教训

2019-12-17 爱莉莎 来源:区块链网络


尽管收到美国证券交易委员会(SEC)的限令,Telegram的TON 开放式网络还是如期举行了开发竞赛。竞赛吸引了新的开发人员,下面是 Button Wallet 团队的赛后总结。

缺文件

FunC — TON编写智能合约的另一种语言是FunC,这是一种类似于C的高级语言,带函数和变量,比Fift( TON的通用编程语言)更容易读写。类似的比较将是C#和CIL。但是,在竞赛之前,几乎没有任何 FunC的文档。而大多数TON竞赛任务都要求参赛者编写智能合约,因为缺少有关使用FunC编写TON的文档,因此参赛者需要分析和学习现有示例,这些示例连同一些理论细节已上传到GitHub代码仓库和TON测试网站。

虽然,这并不是一件艰巨的任务,但是仅凭示例来理解一种语言很有挑战性。不过,大多数参赛者在开始的几天后就可以用FunC中自由写Code了。

基础知识
使用FunC编写智能合约时,我们需要了解如何部署和编译智能合约,以及如何使用参数调用函数。除了没有任何完整步骤示例外,有关语言的基本信息也没有。TON的简要指南对参赛人员非常有帮助,但这只是在TON上编写智能合约的介绍,它省略了有关在智能合约上部署和运行函数调用的详细信息。耗费了参赛人员大量的时间和精力。

比赛任务

本文强调五项任务中的两项:同步支付渠道和异步支付渠道。

首先,什么是支付渠道?

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


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

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


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

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

同步支付渠道


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

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

同步支付通道有一个状态号,除非满足特定的要求(比如接收方确认和签名),否则状态号不会发生改变。因此,甲方不能连续向乙方发送多笔交易,因为每个新的状态都需要双方签字。

甲方在向乙方发送交易时,需要创建一个状态。该状态将改变属于甲、乙双方的金额。甲方使用私钥签署该状态,然后将新状态和签名发送给乙方。
然后,乙方签署该状态,并将其签名发送回甲方,从而确认交易状态。
在乙方创建新的状态之前,甲方不能向乙方发送另一笔交易。这一过程被称为同步支付渠道

异步支付渠道


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

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

这两个渠道最困难的方面是提款过程。在提取资金之前,智能合约需要检查:双方是否提供了正确的数据。我们需要检查状态的签名,而且这个状态必须是最新的。如果双方发生冲突,智能合约需要根据最新状态进行裁决。

必须防止将相同的数据发送到不同的支付渠道,以及当一方不提供任何信息时的裁决方案。所有这些都必须用FunC编写,并经过完全测试,以确保支付安全。

解决方案和竞争对手

据大赛官方频道统计,共有68份参赛作品。

大多数提交作品是:多重签名钱包和域名系统(或DNS)解析器。但是,有几个提交用于支付渠道的。编写支付渠道是最复杂的任务,因此提出有效解决方案的团队(如363,375,381)比其他队伍更为突出。

下一步是什么?

目前,大约有10到20个团队拥有足够的技能和知识,可以开始构建TON的基础设施,他们可能会将大部分成功的以太坊解决方案转移到TON上。TON大赛及20万美元奖金激励,大大增加了与TON 平台合作的团队数量。现在,参与团队都准备在TON上建立自己的项目或初创公司。

Button Wallet 获奖

Button Wallet 的八人团队构建了同步和异步支付渠道。尽管在比赛中犯了一些错误,但最终还是设法使用命令行界面,创建了一个同步的支付通道,其中包含了允许存款、取款和交易转账的所有功能。团队不仅订立多分智能合约,并利用在Plasma开发中获取的经验,构建了另一个实现异步链下支付的智能合约。最终,Button Wallet团队获得了同步支付渠道第一名,和异步支付渠道的第三名。

原文地址

https://cointelegraph.com/news/behind-the-scenes-of-ton-lessons-learned-on-deploying-smart-contracts:



系列课程1《爱莉莎科普区块链》75课 !点击!

系列课程2《一起开发 EOS DAPP系列》 点击!
系列课程3《区块链工具百宝箱》 点击!

微信公众号:竹三七










—-

编译者/作者:爱莉莎

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...