加入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