FRAME 提供了两个智能合约虚拟机,可以添加到 Substrate runtime。
FRAME 合约模块(SEAL)为 runtime 提供部署和执行 WebAssembly 智能合约的功能。它旨在迭代现代智能合约平台的设计。
FRAME EVM 模块[1]提供了 EVM 执行环境,允许未修改的 EVM 代码在基于 Substrate 的区块链中执行。它的设计目的是在 Substrate runtime 上最接近的模拟在以太坊主网上执行合约的功能。
Substrate 不是一个仅限制于自带模块的平台。
我们鼓励在 Substrate runtime 的基础上进一步开发更多选择的智能合约平台。你可以使用这些预先构建的模块在现有的系统上设计自己的系统或端口,然后去运行了一个基于 Substrate 的链。
ink![2] 是一个基于 Rust 的 eDSL,专门用于为合约模块[3]编写 Wasm 智能合约。它设计的目的是为了正确、简洁和高效。
Substrate runtime 模块和 Substrate 智能合约是使用 Substrate 框架构建“去中心化应用程序”的两种不同方法。
传统的智能合约平台允许用户在一些核心区块链逻辑的基础上增加额外的逻辑。由于任何人都可以发布智能合约逻辑,包括恶意行为人和缺乏经验的开发人员,因此在这些公共智能合约平台都建立了许多安全卫士。
一些例子:
这些不同的管理开销使得运行合约变得更慢、成本更高,但是,合约开发的“目标受众”与 runtime 开发人员不同。
合约可以让你的社区在 runtime 逻辑的基础上进行扩展和开发,而无需经历所有疯狂的提议、runtime 升级等等... 它甚至可以用作将来 runtime 更改的测试基础,这种方式可以将你的网络与 “成长带来的痛苦” 或可能发生的错误隔离开来。
总结一下,Substrate 智能合约:
Runtime 模块不提供智能合约提供的这些安全保护。所以作为一个 runtime 开发人员,你的开发成本会比较高。
你可以完全控制网络上每个节点运行的底层逻辑。你可以完全访问所有模块中的每个存储项,也可以对其进行修改和控制。你甚至可以用不正确的逻辑或糟糕的错误处理来构建你的链。
Substrate runtime 模块开发的目的是产生精益的、高效的和快速的节点。它不提供交易还原的任何保护或开销,也不会向链上节点运行的计算引入任何收费系统。这意味着,在开发 runtime 函数时,你需要正确评估 runtime 逻辑的不同部分并对其计算费用,这样就不会被坏的参与者滥用,也不会损害你的网络。
总结一下,Substrate Runtime 模块:
Substrate runtime 模块和 Substrate 智能合约是可以用于解决问题的工具。
这两个方法能解决的问题可能有一定程度的重叠,但也有一些明确的问题只适合其中一个。关于这个,在这里给出一些举例:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。