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/WasmiParity Wasm:Rust 中的 WebAssembly 序列化/反序列化。https://github.com/paritytech/parity-WasmWasm utils:在 Parity 和 Wasm 合约开发中使用的 Wasm 实用程序的集合。https://github.com/paritytech/Wasm-utils

原文链接:

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

翻译:PolkaWorld 社区

直播预告:

每周四,「PolkaWorld 平行链系列」视频直播准时和你见面!

本周四晚 7 点,我们邀请到 Bifrost 创始人 Lurpis 来到直播间,和大家分享 Bifrost 成为平行链对波卡生态有什么意义。直播间中将发出? 500 BNC 大额红包哦!点击下方关注视频号预约直播⬇️

欢迎学习 Substrate: https://substrate.dev/关注 Substrate 进展:https://github.com/paritytech/substrate关注 Polkadot 进展:https://github.com/paritytech/polkadot