主页 > imtoken钱包官方网址 > Substrate合约合约摘要

Substrate合约合约摘要

imtoken钱包官方网址 2023-02-08 05:55:45

前言

《Substrate合约》用于介绍与Substrate中的合约体系相关的一系列知识。 本书由Patract()主导,Aten()编写。 这本书的仓库位于(opens new window)。 欢迎有志之士为本书投稿。

本书目前主要以介绍Pallet-Contracts(即Wasm合约)为主体。 因此本书包含:

其中,由于Pallet-EVM(即EVM/Solidity系统的合约)在以太坊生态中的信息较为丰富,因此在本合约书中不作为重点讲解。 其他合约系统如Pallet-Actor,或者Libra移植合约平台都处于比较早期的研究阶段,因此不会成为本书的重点。

为了让合约开发者更好地理解 Pallet-Contracts 模块和 Wasm 合约是如何运作的,本书还将涉及一些 Wasm 和区块链合约模型的介绍。

合同概览

区块链运行合约的模型,本质上可以认为是“区块链环境(分布式共识系统)”+“可以运行一段逻辑的平台”,例如:

因此,一般来说,我们可以将区块链模型拆分为:

但是由于区块链系统的特性,要求对于相同的代码,相同的状态,执行结果必须是一致的。 因此,在提供“链上业务逻辑”层面,为了保证执行结果的一致性,要求整个运行环境必须是“无副作用”的,这样运行的结果才会不会因为运行节点不一致而导致不一致(意思是不是同一个节点)。

因此,为了保证这个特性,大部分区块链都会采用沙盒/虚拟机模型加上一些裁剪功能来实现。

“运行合约的平台”是一条链的业务逻辑,可以在这个业务逻辑上运行的代码是公开的,合约的内容不受链本身控制。 因此,针对这种情况,需要一个“沙盒”环境来隔离各种合约的运行。

什么是沙箱(虚拟机)?

“沙箱”在计算机领域的概念非常宽泛,而在区块链中,一般来说,沙箱会由虚拟机运行(因为使用虚拟机模拟沙箱环境是最简单的)。

因此,不同的链会使用不同的虚拟机来运行合约的沙箱:

Gavin Wood撰写的黄皮书提出了EVM的模型,创建了EVM虚拟机的概念,并制定了EVM的OP_CODE。 之后,Solidity被设计并编译为OP_CODE,从而以太坊整个生态应运而生。 相当于以太坊处理区块链的合约沙盒模型,从零到一搭建所有设施。 所以Solidity的语法和EVM能做的事情相对于现在的区块链来说是非常粗糙的(比如Solidity的语法,EVM的栈深度限制等),但是作为先行者,它创造了区块链合约虚拟机模型。

作为联盟链,在使用场景上不同于公有链。 因此,Fabric 提出了链码的概念,并在 Docker 中运行链码。 Docker 是一个相对较重的虚拟机(与 EVM 相比)。 因此,与EVM相比,Fabric的链码比Solidity可以做更多的事情。 当然,它的运行成本要高于EVM。 很多。

EOS采用Wasm作为合约虚拟机,这也是当时EOS的卖点。 与运行 Solidity 的 EVM 相比,EOS 的 Wasm 虚拟机运行效率要高得多,使用 C++ 作为编译为 Wasm 的语言也自然拉近了很多传统开发者的距离。 EOS 作为 Wasm 虚拟机的先行者,当时 EOS 已经展示了 Wasm 相对于 EVM 的优势,但是由于其合约模型(见下一章)设计上的缺陷以及当时环境的限制,而EOS并不是真正的首选 由于中心化系统,EOS没有充分发挥Wasm合约系统的能力。

Pallet-Contracts 使用 Wasm 虚拟机来运行合约,出于安全考虑,目前仅使用 Wasmi 解释器来执行 Wasm。 但它的合约模型类似于 EVM(见下一节)。 Wasm 虚拟机和 EVM 还具有启动快、用完即弃、高性能和高扩展性等特点,不像 Docker 和 JVM 那样体积太大。 因此EVM可以运行比特币脚本吗,Wasm 在比浏览器环境更多的场景中慢慢被采用,比如边缘计算、热更新等等。 因此EVM可以运行比特币脚本吗,目前越来越多的新区块链在需要沙盒环境时,都以Wasm虚拟机作为主要解决方案。 另一方面,Wasm 还具有从不同语言编译为 Wasm 的特性,例如 Rust、AssemblyScript、C++ 等,可以吸引各种开发者加入到合约开发过程中。

其他区块链也会有自己的解决方案,以实现这个“沙盒”目标。 有的联盟链使用量身定制的JVM,有的公链使用RISC-V虚拟机,有的链使用原生从零设计虚拟机(比如Libra)。 这些解决方案各有各的需求和特点,但从模型的角度来看,无论是什么解决方案,其最终目标都是提供一个虚拟机环境来运行合约沙箱。

运行合约的沙箱

上述链的大部分业务逻辑都会运行在沙箱系统中,“运行合约”的业务逻辑需要沙箱隔离。 另一方面,Substrate的Runtime是一个沙箱环​​境(运行在Wasm中),所以在Substrate的合约模块(Pallet-EMV、Pallet-Contracts)中,需要在一个沙箱环​​境中运行另一个沙箱,如下所示数字:

火币网的比特币可以提现吗_比特币和以太币可以互相兑换吗_EVM可以运行比特币脚本吗

在:

注解

1、Wasmtime是一个实现JIT的Wasm虚拟机,Wasmi是一个纯解释器型的Wasm虚拟机。

2. Wasmtime 的执行效率远高于Wasmi。

关于我们

Patract 为 Polkadot Wasm 合约生态的平行链和 DApp 开发提供解决方案。 我们帮助社区平行链设计开发链上合约模块和运行时支持,为DApp开发者提供涵盖开发、测试、调试、部署、监控、数据提供、前端开发的全栈工具和服务支持。

如何加入 Patract

1. 合约开发者可以访问官网( )熟悉测试链和工具套件。 欢迎加入官方开发群:

元素()

不和谐()

搜索“Patract开放平台”,关注Patract微信公众号

2. 将集成Wasm合约功能的平行链项目方,或使用Wasm合约开发的DApp项目方,业务合作请联系santry@patract.io

3、对于用户,欢迎加入:

电报()

推特()

4. 求职者,我们正在招聘区块链开发工程师、前端/全栈开发工程师、开发者运营等职位,可以联系sean@patract.io