区块链新闻 bc
您现在的位置:首页 > 区块链新闻 > TON幕后花絮:部署智能合约的经验教训

区块链新闻

ClonTrader创新金融服务模式,为投资者开拓多元选择 ClonTrader创新金融服务模式,为投资者开拓多元选择

(2025年4月9日,香港)近日,全球领先的金融科技平台ClonTrader正式发布其最新战略规划,旨在凭借创新...

  • 臭臭!体味可能让你丧失参赛资格?

    你是否曾想过,扑克桌上的“异味问题”竟然会成为赛事总监的一大困扰? 根据EV官网报导 (evpk1.com),近日锦标赛赛事总监 Matt Savage 分享了一个令全球赛事总监头疼的难题——如何应对选手身上的体味问题。 这...

  • 全球化与合规双驱动:BYDFi正式加入韩国CODEVASP联盟

    BYDFi加密货币交易所于2024年11月27日完成了里程碑式的合规突破—正式入驻韩国CODEVASP联盟。此举不仅大大提升了BYDFi在韩国市场的合规可信度,也展现了平台在国际化加密货币交易所合规领域上的持续努力。与此同时...

  • Candy Club推出奖励全新范式,开启区块链游戏新时代

    奖励加密游戏玩家的新范式——Candy Gold Candy Club是全球首家接受超过83种加密货币的社交加密游戏平台,近期上线新版本推出Candy Gold, 是一个可持续的ingame奖励计划,旨在奖励加密项目和gamefi工会,NFT社区...

区块链技术

区块链技术和元数据粉碎如何迎来新时代 区块链技术和元数据粉碎如何迎来新时代

  自爱德华·斯诺登(EdwardSnowden)吹响了高度机密的全球监控计划以来,已经有将近7年的时间,煽动...

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

发布时间:2019/12/17 区块链新闻 浏览:472

 
在最近与美国证券交易委员会发生争执的消息中,很少有人听说过Telegram几周前发生的开放网络竞争。这是一个里程碑式的事件,它改变了曾经用Fift(TON的通用编程语言)编写的TON开发人员社区的微不足道的内容,该方法由于其底层方法而与普通语言有很大不同。
竞赛吸引了新的开发人员,进一步围绕新平台建立了社区,并通过提供示例以及如何在TON上部署解决了有关智能合约缺乏文档的现有问题。我的团队,Button Wallet和我也参加了比赛,总结了TON比赛期间和之后发生的一切。
缺乏文件
FunC — TON编写智能合约的另一种语言是FunC,这是一种类似于C的高级语言,具有函数和变量,比通用的Fift更容易读写。类似的比较将是C#和CIL。但是,在竞赛之前,几乎没有FunC的任何文档。这就构成了一个问题,因为大多数TON竞赛任务都要求参赛者编写智能合约。
由于缺少有关使用FunC编写TON的文档,因此参赛者需要分析和学习现有示例,这些示例连同一些理论细节已上传到一个小型GitHub存储库和TON测试网站。虽然这并不是一件艰巨的任务,但仅凭示例理解语言的基本必要性就具有挑战性。不过,大多数参赛者在开始的几天后就可以开始在FunC中自由写作。
基础知识—使用FunC编写智能合约时,我们需要了解如何部署和编译智能合约,以及如何使用参数调用函数。除了没有任何显示完整步骤的示例外,完全缺少有关语言基本方面的详细信息,这简直是可笑的。 TON的简要指南对参加比赛的人员非常有帮助,但这只是在TON上编写智能合约的介绍,它方便地省略了有关在智能合约上部署和运行函数调用的示例或详细信息。最终,每个人都想出了所有这些方法,但是这花费了大量的时间和精力。
比赛任务
我要强调的五项任务中有两项:异步支付渠道和同步支付渠道。但是首先,什么是支付渠道?
支付渠道是一种在链下(即在区块链外部)的两方之间发送交易的方法,以使其更快,更便宜且更自定义。用户在区块链上拥有自己的账户,并可以使用其存入的金额在他们之间发送交易。为此,一个特殊的智能合约会在支付通道打开时存储双方的存款。提款需要包含某些数据的智能合约,下面将对此进行讨论。
甲方和乙方将硬币发送到智能合约,进行存款以打开他们之间的支付渠道甲方和乙方将硬币发送到智能合约,进行存款以打开他们之间的支付通道
要打开支付渠道,需要从双方将资金存入智能合约。
甲方向乙方发送交易,将付款渠道的状态从(a,b)更改为新的
Parties A and B send coins to the smart contract, making deposits to open a payment channel between them
如果支付渠道是开放的,则交易双方之间可以以每秒100,000笔以上的速度发送交易。重要的是要了解这一切都是在链外发生的,并且在某些时候,各方将需要达成协议并从智能合约中提取资金。
通过其同步支付渠道从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和其他一些信息)。
同步付款渠道的状态编号不会更改,除非满足特定要求(例如,接收方B的确认和签名)。因此,甲方不能连续向乙发送几笔交易,因为每个新州都需要双方签字。
在向乙方发送交易时,甲方需要创建一个状态,该状态将更改属于甲方和乙方的金额,使用自己的私钥对该状态进行签名,然后将新状态和签名发送给乙方。然后,B签署该状态并将其签名发回给甲方,从而确认交易状态。在乙方创建新状态之前,甲方无法将其他交易发送给乙方。因此,它称为同步通道。
通过异步支付渠道从甲方到乙方的脱链交易
An off-chain transaction from A to B through their synchronous payment channel
在异步支付渠道中,每个交易对手都有自己的状态组。每个州都包括甲方从乙方收到的金额,甲方已发送给乙方的交易次数,乙方发送给甲方的金额以及乙方发送给甲方的交易数。在同步支付渠道中,A和B不需要等待对方的确认,他们只需要发送一个已签名状态即可。
这两个渠道最困难的方面是提款过程。智能合约需要在提取资金之前检查各方是否提供了正确的数据。我们需要检查状态的签名,并且还要检查该状态是否为最新状态。如果双方之间存在冲突,则智能合约需要根据最新状态进行解决。
必须有保护措施,以防止将相同的数据发送到不同的支付渠道,以及一种解决方案,以解决一方不提供任何信息的问题。所有这些都必须用FunC编写并经过全面测试,以确保安全。
解决方案和竞争对手
An off-chain transaction from Party A to Party B through an asynchronous payment channel
提交的大部分内容是多重签名钱包和域名系统(或DNS)解析器。但是,一些提交用于支付渠道。编写支付渠道是竞争中最复杂的任务,因此,少数能够产生这种解决方案的强大团队(例如363、375、381)比其他团队更为突出。
下一步是什么?
目前,大约有10到20个具有足够技能和知识的团队可以开始构建TON的基础架构,他们很可能会将大多数成功的以太坊解决方案转移到TON。 TON竞赛及其200,000美元的奖池奖励通过提供一个直接获得使用该平台经验的机会,大大增加了可以使用该平台的团队数量。现在,所有参与团队都准备在TON上构建自己的项目或初创公司。
Button Wallet团队的要点
作为TON的早期采用者和Telegram爱好者,我和我的团队决定参加TON竞赛。我们有八人组成的大型团队。对于我们的解决方案,我们决定建立同步和异步支付渠道。尽管我们在比赛中犯了一些错误,但我们确实设法与所有包装程序建立了一个同步付款渠道,该包装程序允许使用命令行界面进行存款,提款和交易转账。因此,我们不仅订立了智能合约,而且还签订了许多包装协议,使与TON的合作变得更加容易。完成同步通道后,我们利用等离子开发经验中的知识,并构建了另一个实现异步链下支付的智能合约。但是,我们无法在截止日期之前将所有包装都写入其中。
我们非常喜欢所有任务,并希望我们有更多的时间来执行所有任务。尽管如此,我们还是获得了最佳同步支付渠道的第一名和最佳异步支付渠道的第三名。