引介 | 為什麼我們相信 Wasm 可用作分散式應用開發的基礎層
最近有很多關於使用Wasm進行區塊鏈開發的討論,下面是一些討論內容:
當前技術的問題
以太坊通過引入 EVM——以太坊智慧合約執行環境——開創了分散式應用平臺。雖然當時有充分的理由建立一個易於整合到區塊鏈中的定製化 EVM,但是這種方法存在許多問題:例如,EVM 效率低下,因為它不支援小於 256 位的整數,任何 256 位的操作都必須由 CPU 通過 64 位或者 32 位的操作來執行。同時很有少人有能力擴充套件 EVM 及其所需工具。
WebAssembly:一種被廣泛支援的、高效能的標準
我們相信 WebAssembly(Wasm),以及眾多可以被編譯成 Wasm 的語言是 EVM 的理想替代品,Wasm 是一種由 W3C 工作組開發的 web 瀏覽器標準,該工作組由來自 Google,Mozilla 以及其他瀏覽器的工作人員組成。它的目的是讓程式碼可以被部署在任何瀏覽器,並得到相同的結果。Wasm 具有極高的效能——它在保持平臺獨立的同時被構建得儘可能接近原生機器碼。它有助於小型二進位制檔案通過網際網路傳輸到連線速度較慢的裝置。無論是 Wasm 的編譯團隊還是標準化團隊,都在這個專案上投入了很多年的工作。
你喜歡使用什麼語言開發智慧合約?
這可能是最重要的一點,wasm 拓展了智慧合約開發者可用的程式語言,Rust,C/C++,C#,Typescript 以及 Kotlin 都可以用來開發智慧合約。這意味著你可以使用任何你熟悉的程式語言開發智慧合約,但是由於ofollow,noindex">Rust 執行時開銷較小並具備固有安全屬性,我們更偏向使用Rust。WebAssembly還具備如下優點:
- 記憶體安全(Memory-safe),沙盒化(sandboxed)以及平臺獨立。
- 支援 64 位以及 32 位整數操作,操作與 CPU 指令一一對應。
- 通過移除浮點運算輕鬆實現確定性,這對於共識演算法是必需的。
- 被 LLVM 編譯器基礎結構專案支援,這意味著 Wasm 將受益於 LLVM 編譯器十幾年的優化。
- 被谷歌,蘋果,微軟,Mozilla 和 Facebook 等大公司不斷開發。
通向支援 Wasm 的道路
雖然 Wasm 自身受益於廣泛的支援與整合,但是與 EVM 不同,它不是為了與區塊鏈互動而構建的。Parity 以太坊客戶端在Wasm i 直譯器中執行 Wasm 位元組碼,以保證 Wasm 程式碼能夠訪問區塊鏈並與區塊鏈進行互動。現在我們在Kovan 測試網 上測試 Wasm;在該測試網上,EVM 智慧合約以及 Wasm 智慧合約可以共存甚至互動。以太坊基金會還致力於在 Go 語言版本客戶端的 geth 上實現 Wasm 支援,並研究 Wasm 在分片中的用途。
因為我們相信 Wasm 是分散式系統開發的基礎,所以下一代區塊鏈互操作性協議Polkadot 正在從頭開始構建支援 Wasm 的版本。Polkadot 智慧合約將能夠用可以被編譯成 wasm 的任何語言進行開發。
我們期待安全智慧合約開發變得更加容易的未來,在那時開發者可以使用他們知道的任何語言開發智慧合約。