波卡为什么使用 WebAssembly | Polkadot Wiki
PolkaWorld
2021-03-09
热度5079

Wasm 可实现无分叉升级

加入 PolkaWorld 社区,共建 Web 3.0!

WebAssembly 在 Polkadot 和 Substrate 中被用作 runtime 的编译目标。

WebAssembly 是什么?

WebAssembly 简称为 Wasm,是一种用于基于堆栈的虚拟机的二进制指令格式。Wasm 被设计成一个可移植的目标,用于编译高级语言(如 C/ c++ /Rust),支持在 web 上部署客户端和服务器应用程序。

为什么要使用 WebAssembly?

WebAssembly 是一种平台无关的二进制格式,这意味着它可以在它所操作的任何机器上运行相同的指令。区块链需要确定性,以便在点对点网络中的所有节点上进行可靠的状态转换更新,而不强制每个节点运行完全相同的硬件。Wasm 非常适合用于可能不同的机器集之间的可靠性。Wasm 既高效又快速。这种效率意味着它可以作为一团代码上传到链上,而不会造成太多的状态膨胀,同时保持其以接近本机速度执行的能力。

无分叉升级

通过在 Substrate 中使用 Wasm,可以支持 Polkadot、Kusama 和许多连接链,这些链可以在不进行硬分叉的情况下升级其 runtime 逻辑。硬分叉是升级区块链的标准方法,由于需要离线协调,它很慢、效率低、容易出错,因此倾向于将多个升级打包到一个大型事件中。通过在链上部署 Wasm,并让节点在特定的块高度自动执行新的逻辑,升级可以是小的、单独的、非常具体的。

资源

  • 包含规范链接的 WebAssembly 主页:https://webassembly.org/
  • 用 Rust 写的 WebAssembly 解释器:https://github.com/paritytech/Wasmi
  • Parity Wasm:Rust 中的 WebAssembly 序列化/反序列化。https://github.com/paritytech/parity-Wasm
  • Wasm utils:在 Parity 和 Wasm 合约开发中使用的 Wasm 实用程序的集合。https://github.com/paritytech/Wasm-utils

原文链接:

https://wiki.polkadot.network/docs/en/learn-wasm

翻译:PolkaWorld 社区

本内容旨在传递行业动态,不构成投资建议或承诺。
为你推荐

商务合作:TG:@Lottie96