LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > TON幕后花絮:部署智能合约的经验教训

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

2019-12-16 不详 来源:区块链网络

在最近与美国证券交易委员会发生争执的消息中,很少有人听说过Telegram几周前发生的开放网络竞争。这是一个里程碑式的事件,它改变了曾经用Fift(TON的通用编程语言)编写的TON开发人员社区的微不足道的内容,由于它的底层方法,它与通用语言有很大的不同。

竞赛吸引了新的开发人员,进一步围绕新平台建立了社区,并通过提供示例以及如何在TON上部署解决了有关智能合约缺乏文档的现有问题。我的团队,Button钱包和我也参加了比赛,总结了TON比赛期间和之后发生的一切。

缺乏文件

FunC — TON编写智能合约的另一种语言是FunC,这是一种类似于C的高级语言,具有函数和变量,比通用的Fift更容易读写。类似的比较将是C#和CIL。但是,在竞赛之前,几乎没有FunC的任何文档。这就构成了一个问题,因为大多数TON竞赛任务都要求参赛者编写智能合约。

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

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

比赛任务

我要强调的五项任务中有两项:异步支付渠道和同步支付渠道。但是首先,什么是支付渠道?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

解决方案和竞争对手

根据比赛的官方频道,共有68项参赛作品。

提交的大部分内容是多重签名钱包和域名系统(或DNS)解析器。但是,一些提交用于支付渠道。编写支付渠道是竞争中最复杂的任务,因此,少数能够产生这种解决方案的强大团队(例如363、375、381)比其他团队更为突出。

下一步是什么?

目前,大约有10到20个具有足够技能和知识的团队可以开始构建TON的基础架构,他们很可能会将大多数成功的以太坊解决方案转移到TON。 TON竞赛及其200,000美元的奖池奖励通过提供一个直接获得使用该平台经验的机会,大大增加了可以使用该平台的团队数量。现在,所有参与团队都准备在TON上构建自己的项目或初创公司。

Button钱包团队的要点

作为TON的早期采用者和Telegram爱好者,我和我的团队决定参加TON竞赛。我们有八人组成的大型团队。对于我们的解决方案,我们决定建立同步和异步支付渠道。尽管我们在比赛中犯了一些错误,但我们确实设法与所有盘点程序建立了一个同步付款渠道,该盘点程序允许使用命令行界面进行存款,提款和交易转账。因此,我们不仅订立了智能合约,而且还签订了许多盘点协议,使与TON的合作变得更加容易。完成同步通道后,我们利用等离子开发经验中的知识,并构建了另一个实现异步链下支付的智能合约。但是,我们无法在截止日期之前将所有盘点都写入其中。

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

本文表达的观点,想法和观点仅代表作者个人,不一定反映或代表Cointelegraph的观点和观点。

尼克·科兹洛夫(Nick Kozlov)是软件开发人员兼研究人员Button钱包的CTO,也是TON竞赛的获胜者之一。

—-

编译者/作者:不详

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

LOADING...
LOADING...