首页 > 世链号 > 【jex交易所登录】TON(Telegram)开发竞赛后续:在部署智能合约的过程中学到的东西
区块科技  

【jex交易所登录】TON(Telegram)开发竞赛后续:在部署智能合约的过程中学到的东西

摘要:以内部视角来分析Telegram网络开发公开赛的竞赛内容

以内部视角来分析Telegram网络开发公开赛的竞赛内容

TON(Telegram)开发竞赛后续:在部署智能合约的过程中学到的东西
观点

很多人知道他们最近与美国证券交易委员会(SEC)发生的争端,但可能很少有人知道Telegram在数周之前举办的开放网络竞赛。这是一个里程碑式的事件,它改变了曾经以Fift(TON的通用编程语言)作为开发语言的小型TON 开发者社区,Fift语言由于其低级编程语言而与普通编程语言有很大的区别。

竞赛吸引了新的开发人员,通过提供相关的案例,以及介绍如何将它们部署在Ton上,进而围绕这个新平台建立了一个新的社区,此外还解决了现有的关于智能合约文档缺失的问题。我和我的Button Wallet团队也参加了这次竞赛,并在之后总结了在TON大赛期间和之后发生的一切。

缺少开发文档

FunC--在TON编写智能合约的另一种语言是FunC,它是一种类似C语言的高级语言,它具有比Fift语言更易于读写的函数和变量。它们之间的关系就像是C#和CIL的关系。然而,在比赛之前,几乎没有关于FunC的任何开发文档。这就给所有人提出了一个难题,因为大多数TON的比赛任务都要求参赛者编写出一个智能合约。

由于缺少FUNC的开发文档,竞赛选手需要分析和学习现有的项目示例,这些示例已经上传到一个小型GitHub资源站,另外Ton的测试站点还有一些理论方面的细节内容。虽然这些竞赛开发任务算不上困难,但是仅仅基于项目示例来理解和掌握一门语言还是很有挑战性的。尽管如此,大多数参赛者在几天之后就可以用FunC语言进行自由地编程了。

基础知识--在使用FunC编写小型智能合约时,我们需要了解如何部署和编译智能合约,以及如何使用参数调用函数。关于这一基本方面的详细信息是完全缺失的——此外,也没有任何完整的可以展示所有开发步骤的项目示例——这简直有点滑稽。TON的简要指南对那些参与竞赛的选手来说确实是有帮助的,但它只是介绍如何在TON上编写智能合约,而且也是省略了有关在智能合约上如何部署和运行函数调用的示例的详细信息。尽管最后每个人都弄明白了如何开工,但这无疑让大家付出了大量额外时间和精力。

竞赛任务

我想特别说一下的是所有五个任务中的两个:异步支付通道和同步支付通道。但首先我们需要明白一点,什么是支付通道?

支付通道是指通过线下的方式(也就是说,脱离区块链网络)将一笔交易在交易双方之间发送出去的方式,以使交易更快、更经济、更据个性化。用户在区块链上有自己的账户,可以使用自己的存款相互之间转账交易。为此,在支付渠道开放的情况下,一个特殊的智能合约将存储交易双方的存款。提款则需要一个包含特定数据的智能合约,将在下面讨论。

Parties A and B send coins to the smart contract, making deposits to open a payment channel between them

A、B向智能合约发币,存入保证金,在双方之间开通支付通道

要打开支付通道,需要双方将资金存入智能合约。Party A sends a transaction to Party B, changing the state of payment channel from (a, b) to a new one

A向B发送一项交易,改变支付通道的状态,从(a,b)到新的状态。

如果支付通道是开放的,交易双方可以按每秒10万笔以上的速率进行转账交易。需要明白的是,这一切都是在链下发生的,在某些时候,双方需要达成一致意见,才能从智能合约中提取资金。

An off-chain transaction from A to B through their synchronous payment channel

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

我们还要假设当事双方可能会试图非法提取池内的所有资金。因此,双方都需要用签名来证明他们要提取的款项是属于他们的。为了证明这一点,每一方都需要发送他们的签名,签名正确地显示了合约的状态( A的资金,B的资金,以及其他一些信息)。

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

当向B方发送交易时,A方需要创建一个状态来更改本来属于A、B双方的资金,A方使用自己的私钥来签署该状态,然后将新状态和签名一并发送给B方。然后B方签署确认该状态并将其签名发回给A方,从而确认交易状态。在B方创建新的状态之前,A方不能向B方发送新的交易。因此,它被称为同步信道。

An off-chain transaction from Party A to Party B through an asynchronous payment channel

通过异步支付通道实现的从A到B的链下交易

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

这两个通道中最难搞定的是取款的环节。在提取资金之前,智能合约需要检查各方是否提供了正确的数据。我们需要检查状态的签名,而且这个状态是不是最新的。如果双方之间存在冲突,智能合约需要根据最新的状态解决这些冲突。

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

解决方案和竞争对手

据大赛官方频道统计的数据显示,参赛选手共提交了68份参赛作品。

大多数参赛的作品是有关多重签名钱包和域名系统(或DNS)解析器的。尽管如此,还是有几个作品是关于支付通道的。开发支付通道是参赛作品里最艰巨的任务,因此能够提供这类解决方案的少数强队(如363,375,381)比其他队伍显得更加抢眼。

接下来怎么做?

目前,大约有10到20个团队拥有足够强大的技能和知识储备来从事TON的基础设施开发,接下来,他们可能会将大部分成功的以太坊解决方案转移到TON。TON大赛及其20万美元的奖金池激励措施,通过提供一个可以让参与者获取实战经验的平台的机会,大大增加了可以与平台合作的团队数量。现在,参赛的团队都开始准备在TON上创建自己的项目或初创公司。

 Button钱包团队的主要收获

作为TON早期支持者和Telegram的爱好者,我和我的团队决定参加TON的开发竞赛。我们有一个八人组成的大团队。关于我们的解决方案,实际上我们决定同时完成构建同步和异步支付通道两项作品。尽管我们在比赛中也犯了一些错误,但我们还是设法用命令行界面创建了一个同步的支付通道,其中包括了存款、取款和转账的所有封包。所以说,我们不仅写了一个智能合约,而且还提供了很多可以和TON更易兼容的封包。在完成同步信道后,我们利用Plasma开发中积累的经验和知识,构建了另一个可以实现链下异步支付的智能合约。遗憾的是,我们还无法在截止日期前把所有的封包都写下来。

我们非常享受比赛的整个过程,并且希望有更多的时间来完成所有的任务。尽管如此,我们还是获得了最佳同步支付通道组的第一名和最佳异步支付通道组的第三名。

本文所表达的观点、思想和观点是作者的个人观点,并不一定反映或代表Cointelegraph的观点和意见。

本文作者:Nick Kozlov是Button Wallet的CTO,他是一位软件开发和研究人员,也是TON开发大赛的获胜者之一。

来源:Cointelegraph中文


免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。