區塊鏈虛擬機,WASM 和 RISC-V 哪一個更合適?

Nervos 將在舊金山作一場主題爲「Say Hello to RISC-V」的活動,沒想到活動自己引發了區塊鏈資深專家、Cosmos 項目顧問 Zaki Mania 的關注,並在推特上展開了一次很是有意思的討論。討論的焦點在於 Zaki 認爲相比其餘區塊鏈項目選擇 WebAssembly(WASM),他對 Nervos 用 RISC-V 指令集實現 VM 的這個方案表示懷疑。ios

咱們把完整的討論和相關的背景整理,方便讀者理解。git

背景知識

 


首先,介紹一下本次討論的兩大主題——WebAssembly 和 RISC-V:

WebAssembly(WASM)是一種新的編碼方式,能夠在現代的網絡瀏覽器中運行,它是一種低級的類彙編語言,具備緊湊的二進制格式,能夠接近原生的性能運行,併爲諸如 C/C++/Rust 等語言提供一個編譯目標,以便它們能夠在 Web 上運行。WebAssembly 的開發團隊分別來自 Mozilla、Google、Microsoft、Apple 等公司,標準由 W3C 組織制定,目前 WebAssembly 在以太坊下一代虛擬機(EWASM)以及 EOS、Dfinity 項目中被使用。

RISC-V 指令集是基於精簡指令集計算(RISC)原理創建的開放指令集架構(ISA),該項目始於 2010 年,由加州大學伯克利分校的 David Patterson 教授帶領,目前已經得到社區大力支持,RISC-V 是在指令集不斷髮展和成熟的基礎上創建的全新指令。RISC-V 指令集徹底開源,設計簡單,易於移植 Unix 系統,模塊化設計,完整工具鏈,同時有大量的開源實現和流片案例。github


在 x86 和 ARM 壟斷的當下,RISC-V 爲新興市場帶來了一些曙光,許多國家的芯片設計、製造公司紛紛加入其基金會,參與到相關的生態建設中。做爲在 CPU 上驗證過的指令集架構,RISC-V 在區塊鏈領域的確是一個大膽的嘗試,由於它在區塊鏈項目上打造的是虛擬機,而非處理器硬件。瀏覽器


發帖者 Zaki Mania 是區塊鏈領域的早期投資人。他本人是 Trusted IoT 聯盟 (該機構致力於 PoS 的安全研究)的執行董事、Cosmos的項目顧問、除此以外,他仍是 Restore The 4th! 董事成員。安全


參與討論的 @defmacro,是 Nervos 項目的核心工程師肖雪潔,也是 CKB-VM 的主要實現者,關於他實現的 Nervos 的虛擬機介紹請詳見文章 《An Introduction to Nervos CKB-VM》[1]。網絡


其餘參與討論的還有 Loom 首席研究員、Plasma 研究員 Georgios Konstantopoulos,SolanaLabs 的 CEO Anatoly Yakovenko,Qtum 開發者 Jordan Earls,Nervos 項目聯合創始人 謝晗劍 等。架構

推特原文

 

內容摘要

 

Zaki Mania 首先提出疑問:對虛擬機用 RISC-V 比 WASM 更好表示嚴重懷疑。

隨後有 Loom 首席研究員 Georgios Konstantopoulos 跟帖,但願他詳細評估下兩者的優缺點。

Zaki Mania 補充說:RISC-V 是面向 Silicon(意指芯片)/ FPGA 設計的規範。在 x86,ARM,PowerPC 上進行高效仿真不是目標。而 WASM 是一種獨立於 ISA(開放指令集架構)的規範,能夠在各類 CPU 上進行高效實現。WASM 自己,是爲編譯而專門設計的,所以在編譯 x86 或 ARM 機器代碼時,結果幾乎與原生編譯相同。可是 RISC-V 不是爲了編譯爲 x86 和 ARM 而設計出來的。

肖雪潔對此提出不一樣見解:他質疑 WASM 哪些功能比 RISC-V 更容易實現。WASM 相比 JS 更容易實現,但與 RISC-V 相比,看不到優點。由於和構建有效的實現沒有任何關係,這是生態系統。我贊成 LLVM 對 WASM 的支持更好,但有兩點須要指出——(1)RISC-V 支持 GCC,(2)RISC-V 的 LLVM 也僅僅須要再加幾回補丁。

仿真 RISC-V 的運行方式,正是 WASM 做爲抽象虛擬機運行的方式,它們並沒有二致。

至於對方說的 WASM 是如何「專門設計」來應對這一目標的?他在規範中看到,能夠像 WASM 同樣實現 RISC-V 實現。 JIT 不只僅適用於 WASM。模塊化

 

隨後附文:《rv8:從 RISC-V 到 x86 的高性能二進制轉換器》[2]。

通過數輪激烈討論,很多人加入了爭論:Tarun Chitra 以爲兩者不在討論範圍:RISC-V 的軟件毫不會與 WASM 開發中的資源競爭。

SolanaLabs 的 CEO Anatoly Yakovenko 反問 Zaki Mania:你可否想象一條區塊鏈去運行一個網站? 或者說一百萬個獨立節點同時運行? 對 Nervos 作出的巨大推進表示讚揚,他們沒有隨大流。

Qtum 開發者 Jordan Earls 評論道:聽起來它缺少 WASM 的全部好處(超過任何隨機 CPU 架構),同時也沒有得到 x86 的生態系統優點,由於 RISC-V 很是模糊。 看到原生的智能合約硬件,感受頗有趣。

Nervos 聯合創始人謝晗劍說:在我看來,(RISC-V)針對硬件是一大益處。 Layer 1 區塊鏈是相似硬件的軟件,很難去升級。針對硬件設計的指令集剛好也有一樣的屬性。

Zaki Mania 總結:我是 RISC-V 的忠實粉絲,只是緣由不在於共識層運行的代碼。 編譯器工具鏈將是一流的,(以 RISC-V 架構實現的) 硬件會普遍存在,但沒有其餘依賴於高性能和可靠的 x86 / ARM JIT 的用例

肖雪潔最後總結道:實現 RISC-V 和實現 WASM 時的差別要小得多,咱們甚至認爲能更輕易地在 RISC-V 中打造更高效的實現。沒錯,在一個或兩個細節上,這裏的一種技術(WASM 或 RISC-V)可能比另外一種(RISC-V 或 WASM)更容易作實現,(但整體上講)實際實現時它們並無很是明顯的難度差別,它們在實施時確實沒那麼大不一樣。

與此同時,選擇區塊鏈虛擬機時並非只須要考慮高性能實現的難度。 使用 RISC-V,咱們能夠獲得以下(WASM難以匹配)的好處:

1.真實硬件來保證穩定的實現,而不是由瀏覽器供應商商定的版本位保證;

2.穩定的上游 GNU 工具鏈以及正在進行的 LLVM 支持,而不是人員配置不足的 Emscripten;

3.具備尖端技術的規範,目前不限於 JS 引擎架構,例如 V 擴展;

4.一個合理的運行時模型,一個更加天然,更能面向將來的運行時開銷模型;

5.使用協處理器大大加速事務驗證的潛力。工具

 

 

期待從此能看到更多像這樣精彩的知識碰撞!歡迎來到國內一流區塊鏈技術社區討論關於區塊鏈的硬核技術!性能

 

[1]https://medium.com/nervosnetwork/an-introduction-to-ckb-vm-9d95678a7757

[2]https://carrv.github.io/2017/papers/clark-rv8-carrv2017.pdf

相關文章
相關標籤/搜索