查看原文
其他

Polkadot 中的智能合约

Joe Petrowski PolkaWorld 2020-11-11

本文来自 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


  • 欢迎学习 Substrate: 

    https://substrate.dev/

  • 关注 Substrate 进展:

    https://github.com/paritytech/substrate

  • 关注 Polkadot 进展:

    https://github.com/paritytech/polkadot

  • 申请 Bootcamp: 

    https://bootcamp.web3.foundation/

更多内容:


曹寅:波卡跨链网络将成为未来 DeFi2.0 新基础

平行链必须是区块链,Plasm layer2 可以是单个数据库 | PW 专访

波卡周报 | Gavin 发推,波卡即使没有平行链或多线程,仍可保持 1000 tx/s


扫码关注公众号,回复 “1” 加入波卡群

关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存