「智能合约」Polkadot 中的智能合约

原创 曾经沧海  |  文章来源:币圈达人发布时间:2020-05-24 01:35  阅读 140 次 评论 0 条
众人帮 趣闲赚 牛帮
摘要:

本文来自 Polkadot Wiki,更新时间为 2020 年 5 月 4 日。
Polkadot 中继链并不原生支持智能合约。不过 Polkadot 上的平行链将支持智能合约。现在有像 Edgeware[1] 这样已公布的项目,并且由于

本文来自 Polkadot Wiki,更新时间为 2020 年 5 月 4 日。

Polkadot 中继链并不原生支持智能合约。不过 Polkadot 上的平行链将支持智能合约。现在有像 Edgeware[1] 这样已公布的项目,并且由于 Substrate 有内置的合约模块[2],将来应该会有更多的平行链支持这一功能。

资源

对于那些想开始编写智能合约,并部署在基于 Substrate 的平行链上的开发者,我们列出了目前可以使用的资源。

· ink![3]- Parity 出的用于编写智能合约的 ink!

· Substrate 合约工作坊[4] - 指导你完成使用 ink!编写和部署 ERC20 token 的基础

实例

下面收集的是社区中使用 ink!做的智能合约的一些案例。你正在做一个智能合约案例吗?请我们联系将其添加到本页!

Ownable[5] — OpenZeppelin Ownable 合约的端口。

开发智能合约和平行链有什么区别?

抽象层

当编写智能合约时,你创建的是将部署并关联到特定链地址的指令。

相比之下,runtime 模块是链的状态转换(即所谓的状态转换函数)的整个逻辑。

智能合约必须有意识地实现可升级性,而平行链将能够完全通过根命令或通过治理模块替换代码。

当你构建智能合约时,它最终将被部署到具有自己环境的目标链中。平行链允许开发人员声明自己链的环境,甚至允许其他人为其编写智能合约。

Gas 费

智能合约必须找到限制自身执行的方法,否则整个节点都容易受到 DOS 攻击。例如,智能合约中的无限循环可能消耗整个链的计算资源,从而阻止其他人使用它。停机问题[6]表明,使用足够强大的语言,不可能提前知道程序是否会停止执行。一些平台,比如比特币,通过使用一种非常受限的脚本语言来绕过这个限制。其他一些公司,比如以太坊,则收取智能合约 “gas” 费来作为执行代码的条件。如果智能合约确实进入了一个执行永远不会停止的状态,它最终会耗尽能量,停止执行,并且智能合约本应进行的任何状态转换都会回滚。

平行链可以实现任意强大的编程语言,并且也不包含 gas 的概念。这意味着某些功能对于开发人员来说更容易实现,但也意味着某些构造永远不该被实现,例如没有终止条件的循环。将某些逻辑(例如可能无限期运行的复杂循环)留给非智能合约层,甚至试着完全消除它,通常是明智的选择。

资源

我何时应该创建 Substrate runtime,何时应该创建 Substrate 智能合约[7] —— 从技术的角度回答了开发者什么时候可以选择开发 runtime,什么时候可以选择智能合约的问题。

参考链接

[1]Edgeware: https://edgewa.re/

[2]合约模块: https://crates.parity.io/pallet_contracts/index.html

[3]ink!: https://github.com/paritytech/ink

[4]Substrate 合约工作坊: https://substrate.dev/substrate-contracts-workshop/#/

[5]Ownable: https://github.com/JesseAbram/foRust/

[6]停机问题: https://en.wikipedia.org/wiki/Halting_problem

[7]我何时应该创建 Substrate runtime,何时应该创建 Substrate 智能合约: https://stackoverflow.com/a/56041305

历史上的今天:

本文地址:https://www.u5881.com/6774.html
版权声明:本站推荐的部分活动具有时效性,老淘本人并不能保证当您看到本文时,该项活动是否仍在继续。

发表评论


表情