加入 PolkaWorld 社区,共建 Web 3.0!

今天,我们很高兴的跟大家介绍我们新提出的核心功能 X-VM(跨虚拟机)。我们对 X-VM 的愿景是建立一个抽象层,允许智能合约在同一个区块链中从不同的合约引擎(虚拟机)和语言(例如,与用 ink! 编写的 Solidity dApp 交互!反之亦然)执行调用和读取存储数据。

6 月 3 日,Hoon Kim 将在 Parity & Friends 上介绍 X-VM,点击这里参加活动:https://www.crowdcast.io/e/parity--friends-pos-

正如 Gavin Wood 博士之前提到的,使用 WebAssembly 作为智能合约是未来,但以太坊虚拟机现在很重要。《Gavin Wood:Wasm 是智能合约的未来,EVM 只是当下》

WebAssembly 无疑在智能合约执行方面更胜一筹。基于 WASM 的引擎是有前景的,因为像 Patract Lab 这样的许多伟大的公司正在让 WebAssembly 变得更容易让开发者在 Polkadot 上使用。 

然而,我们仍然看到了 EVM 的价值,因为我们正在密切关注以太坊的 layer2 解决方案的最新发展,如 Optimistic Rollups 和 ZK Rollups。在 Web3 基金会资助计划的支持下,我们已经开始在 Plasm 生态系统中实施 Rollups。

除此之外,大多数新开发人员将从学习以太坊开始。已建立的项目将希望在以太坊上保持其当前的工作流程,而主流将通过以太坊上的 dApp 接触到区块链世界。考虑到以太坊成熟的生态系统及其对新人的可访问性,今天的 EVM 将在未来过时,但生态系统不会消失。相反,它将成为通往未来的门户。类似于 Internet Explorer,它是下载更好浏览器的门户。

我们相信,在异构区块链世界中,“EVM”不仅指智能合约引擎的特定架构,而且会被视为“类似以太坊的开发环境”。

我们平等对待所有 dApp。因此,我们的目标是在 Plasm & Shiden Network 都支持 WebAssembly 和 Ethereum 虚拟机并使它们可以交互。我们看到一个 EVM 可以被视为另一个框架,用于与 ink!、HyperLedger、Fabric、EOSIO 和未来的虚拟机一起开发 dApp 的未来!

随着支持桥、XCMP 或其他交换通道的区块链数量的增加,区块链不再是一个单一的网络。开发人员将不得不添加层和抽象层以跟上这种变化。我们认为,区块链生态系统的发展需要增加对跨虚拟机通信的支持。这就是 X-VM 的用武之地。

除此之外,由于以太坊兼容性是由 Parity Technologies 开发的,我们认为支持 EVM 和 Solidify 合约不会成为差异化因素。即使在今天,所有的平行链都可以轻松支持它们。

X-VM 怎么帮助开发者?

由于 Polkadot 和 Kusama 原生支持 WebAssembly,因此越来越多的项目将使用 WebAssembly 作为首选的主要智能合约引擎。不难想象许多智能合约会在他们自己的沙盒环境中工作。

我们预计最大的问题是用于编写合约的语言和开发人员需要与之交互的不同客户端库的差异。

例如,如果 ink! 合约在 Polkadot 生态中比较流行,从 Solidity 编写的合约中调用 ink! 合约的能力是至关重要的。希望充分利用 Substrate 的原生模块、XCMP 和其他平行链功能的项目必须从 Solidity 切换到ink!。与从以太坊 1.0 到以太坊 2.0 的漫长过渡类似,我们明白在保持向后兼容性的同时迁移到新环境并非易事。

由于 Plasm 和 Shiden 旨在成为 Polkadot 生态系统中 dApp 的中心,我们认为需要为基于 WASM 的合约和基于 EVM 的合约添加语法和功能支持。

Plasm 和 Shiden 的架构

Plasm/Shiden 是 Polkadot/Kusama 上的可扩展多链智能合约中心,原生支持 EVM 和 WASM。即使在今天,开发人员也可以在 Plasm Network 的测试网 Dusty 上部署 Solidity 智能合约和 ink!  智能合约!

许多人已经熟悉 EVM 及其发展。因此,在下一部分,我将详细说明为什么 WASM 作为智能合约引擎是可行的。

为什么是 WASM?

为什么开发者要选择 WASM 作为智能合约:

WASM 的性能非常高。该语言被构建为尽可能接近本地机器代码,同时仍然是独立的。由于使用了小二进制文件,WASM 大大减少了浏览器的处理时间。这为想要使用区块链技术的潜在互联网连接提供了极大的可扩展性。WASM 的开发目的是使代码可以部署在任何浏览器中并获得相同的结果。与 EVM 不同,它不是针对非常具体的用例开发的。这样做的好处是有很多工具可用,并且大公司投入大量资源来促进 WASM 的发展。WASM 将语言的使用扩展到智能合约开发人员,包括 Rust、C/C++、C#、Typescript、Haxe 和 Kotlin。这意味着开发人员可以使用他们熟悉的任何语言编写智能合约。 

因为 ink! 是一种用于在 Substrate 中开发智能合约的领域特定语言(DSL),开发环境与大多数在 Rust 中制作的项目相同。它与 Polkadot 生态系统完美匹配,因为它是用同一种语言编写的。那么为什么 Polkadot 选择 Rust 做所有事情呢?欢迎查看 Parity Blog:https://www.parity.io/why-rust/

这给我们带来了另一个问题。为什么我们要在智能合约中使用 Rust?

Rust 生态系统和社区:Rust 文档非常扩展,拥有非常强大的开发人员社区。所有的知识都是在互联网上共享的。语言不断发展,ink! 将自动继续关注这些发展。所有这些新特性和功能都将改善你未来编写智能合约的方式。我们相信 Rust 是一种理想的智能合约语言:它是类型安全的、内存安全的并且没有未定义的行为。通过编译器标志,Rust 可以自动防止整数溢出。Rust 为 WebAssembly 提供了一流的支持。ink! 遵循 Rust 标准,像 rustfmt、clippy 和 rust-analyzer 这样的工具已经开箱即用。大多数现代文本编辑器中的代码格式和语法突出显示也是如此。此外,Rust 有一个集成的测试和基准运行程序。小代码意味着更快的页面加载。Rust 生成的 .wasm  不包含额外的膨胀,就像垃圾收集器一样。高级优化和 tree shaking 去除死代码。在空间受限的区块链世界中,大小很重要。Rust 编译器是一个很大的帮助,因为它重新排序结构字段以使每种类型尽可能小。

我们的起点

我们将 X-VM 视为一个长期项目,可以在我们今天拥有的高度分散的智能合约开发环境中简化开发。

首先,我们计划将 Substrate 合约模块调用的概念证明版本实现为 Substrate 中 Frontier 库的 EVM 预编译合约。这将启用从 EVM 到 ink! 的单向合约调用。目前,将 Substrate 合约模块作为 EVM 上的预编译合约调用将在功能上受到限制。尽管如此,我们还是希望以此 PoC 实现作为开始,将 X-VM 开发为一个可以统一各种合约引擎的原生模块,例如 OVM 如何统一 Layer2 协议。

未来,我们计划开发一个标准的合约开发环境工具,如 Truffle 或 Hardhat,用于在 Plasm Network 上进行开发。

关于 Plasm

Plasm Network 是 Polkadot 上的 dApps 中心,支持以太坊和 ZK Rollups 等 Layer2 解决方案。Plasm 旨在成为一个多链智能合约平台,将支持多个区块链和虚拟机,如 EVM 和 WASM。

原文链接:https://medium.com/plasm-network/introducing-x-vm-on-shiden-network-d74368fbd07c

翻译:波卡第一中文社区 PolkaWorld