Foresight Ventures : WASM — 大時代引擎

新手1/1/2024, 2:25:50 AM
本文盤點 Wasm 和區塊鏈之間存在的一些關繫和應用場景:智慧合約、跨鏈互動、鏈下運算和資料隱私。

TL;DR

WebAssembly(簡稱Wasm)是一種可移植、高性能的二進製指令格式,可以在Web瀏覽器中運行。它被設計爲一種通用的編譯目標,可以用於多種編程語言,併且可以在不衕的平颱上運行。

區塊鏈是一種去中心化的分布式賬本技術,它通過使用密碼學和共識算法來確保數據的安全性和可信度。區塊鏈可以用於記録交易、存儲數據和執行智能合約等應用。

Wasm和區塊鏈之間存在一些關繫和應用場景:

  1. 智能合約:Wasm可以作爲智能合約的執行環境,使得合約可以在不衕的區塊鏈平颱上運行。Wasm的高性能和可移植性使得智能合約可以更加高效地執行,併且可以跨平颱使用。
  2. 跨鏈交互:Wasm可以用於實現跨鏈交互的功能。通過將不衕區塊鏈的邏輯編譯爲Wasm代碼,可以在不衕的區塊鏈上執行相衕的邏輯,實現跨鏈的數據傳輸和交互。
  3. 鏈下計算:Wasm可以用於在區塊鏈之外進行計算,併將計算結果提交到區塊鏈上。這樣可以在保持數據的安全性和可信度的衕時,提高計算的效率和靈活性。
  4. 數據隱私:Wasm可以用於實現區塊鏈上的數據隱私保護。通過將敏感數據的處理邏輯編譯爲Wasm代碼,併在區塊鏈上執行,可以保護數據的隱私性,衕時確保計算的可驗證性。

總之,Wasm和區塊鏈可以相互結合,提供更加高效、安全和靈活的區塊鏈應用和服務。Wasm的可移植性和高性能使得它成爲區塊鏈領域的重要技術之一。

一、什麽是Web Assembly

WebAssembly是由W3C(萬維網聯盟)開髮的一個高效輕量級指令集標準,被譽爲網絡和高性能的顛覆者,支持跨瀏覽器執行。這意味著我們可以把包括C/C++, Go, Rust等在內的不衕編程語言編譯成統一的標準二進製格式,併將其作爲JavaScript的替代品以近乎原生代碼的效率在瀏覽器中運行。

WebAssembly,或者簡稱爲WASM,是內存安全、平颱獨立的,可以完美高效地映射到所有類型的CPU架構上,有著以下主要優勢:

  • 高效:WASM 有一套完整的語言特性,實際上 WASM 是體積小且加載快的二進製格式, 其目標就是充分髮揮硬件的能力以達到原生語言的執行效率。
  • 安全:WASM 運行在一個內存安全,沙箱化的執行環境中,甚至可以在現有的 JavaScript 虛擬機中實現。在 Web 環境中 ,WASM 將會嚴格遵守衕源策略以及瀏覽器安全策略。WASM在編譯的時候,interface是比較少的,但大部分wasm application是不能聯網的(因爲不支持socket),現在隻能支持local database。很多安全問題的時候來源於執行時候的內存的訪問,wasm在編譯的時候,可以避免非法的內存訪問。
  • 兼容性:WASM 在 Web 中被設計成無版本、特性可測試、曏後兼容的。WASM 可以被 JavaScript 調用,進入 JavaScript 上下文,也可以像 Web API 一樣調用瀏覽器的功能。WASM 不僅可以運行在瀏覽器上,也可以運行在非 Web 環境下(如 Node.js、Deno、物聯網設備等執行)。傳統的方式可能需要多次compile,而WASM隻需一次便可運行,即插即用。

此外:Web 是唯一真正的通用平颱,可以在任何設備上訪問你的應用程序。這還允許你維護單個代碼庫,簡化更新併確保所有用戶都可以訪問你的應用程序。WASM支持 64 位和 32 位整數操作,與 CPU 指令一一對應。通過移除浮點運算,可輕鬆實現確定性,這對共識算法來説是必要的。由 LLVM編譯器基礎架構項目提供支持,這意味著 Wasm 可以從 LLVM 十多年的編譯器優化中穫益。WASM由穀歌、蘋果、微軟、Mozilla 和 Facebook 等大公司持續開髮,在這幾個大公司開髮的瀏覽器的後端都支持wasm編譯。

WASM 的美妙之處在於它就像一個魔法引擎,它可以在任何地方運行,不需要下載也不需要安裝,因爲是二進製格式。隻需一次點擊,即可在需要時立即運行 Web 應用。它比直接在下載和運行二進製文件更安全,因爲瀏覽器已內建安全機製,使其中運行的代碼不會危害你的繫統。而且分享 Web 應用衕樣簡單 - 鏈接是可以放在任何地方的可點擊字符串。

二、爲什麽我們需要Web Assembly

2.1 Web2

由於瀏覽器內置的功能和 Web 提供的交互性,Web從超文本靜態內容和小型腳本語言髮展成了一個非常強大和流行的平颱,充滿了驚人的應用程序和功能。但到目前爲止,Web應用依舊基本上由相衕的腳本語言(JavaScript)驅動,然而JavaScript設計的首要目標從來就不是爲了實現這些。

JavaScript 最初是一種簡單的腳本語言,旨在爲充滿輕量級超文本文檔的 Web 應用帶來一些交互性。它的設計易於學習和編寫,併不追求運行速度。多年來,瀏覽器在 JavaScript 解析上的重大性能改進的,帶來了顯著的性能提升。

隨著 JavaScript 運行速度的加快,能瀏覽器中執行的東西大大擴展。新的 API 帶來了諸如交互式圖形,視頻流,離線瀏覽以及更多的功能。衕時越來越多的應用程序(過去僅限本地應用程序)開始進入 Web 。現在你可以輕易的在瀏覽器中編輯文檔併髮送電子郵件,但在有些領域中,JavaScript 的性能依舊是一個難題。想一想除了瀏覽器之外你所使用軟件:游戲,視頻編輯,3D渲染或音樂製作。這些應用程序需要執行大量計算,併且需要很高的性能。JavaScript 很難滿足這種高性能的要求。

不過替換掉 JavaScript 不太現實,甚至可能要花幾十年時間都搞不定,因爲整個互聯網都離不開它。而且,還有一大幫人在不停地改進 JavaScript。確實,和其他語言比起來,JavaScript 在某些方麵比如 null 和 == 這些地方是有點不夠好,但這些問題還不至於讓人把整個技術都換掉。

所以,WebAssembly 不會取代 JavaScript,但這併不意味著將來沒人用 WASM。實際上,WASM 的使用還會越來越廣泛。因爲 WASM 能給網頁帶來強大的計算能力,比如做圖像處理或者游戲之類的。用 WASM,可以做出一個網頁版的 Photoshop併運行得很好,或者是一個在瀏覽器裡能以 60 幀每秒甚至更高幀率運行的 3D 游戲。游戲尤其具有挑戰性,因爲游戲不僅需要衕時執行音頻和視頻處理,還需要協調物理特效和AI。WASM擁有在瀏覽器上高效的運行游戲的能力,將打開把許多其他應用程序帶到瀏覽器上的大門的可能性。

上圖展示了javascript和wasm工作流的對比,可以看出wasm相比JavaScript要簡潔許多。

2.2 Web3

WASM VM

在2018年的時候,以太坊生態內部開始討論用WASM VM做智能合約虛擬機,因爲覺得它性能比EVM好。EVM的髮明者Gavin Wood曾錶示過WASM取代EVM的可行性,Vitalik也錶示過以太坊2.0將會升級爲Wasm合約(eWASM),以滿足更多開髮需求。而如今,Wasm合約的髮展已經有了一定雛形。

2.3 EVM是如何設計的?爲什麽它是低效的?

架構尺寸過大

傳統計算機包含的指令集隻接受32位或者64位的輸入。EVM與此不衕併且很特殊,它是一颱256位的計算機,故意設計成這樣是爲了更易於處理以太坊的哈希算法,它會明確産生256位的輸出。

然而,實際運行EVM程序的計算機則需要把256位的字拆分成它們的本地架構來執行智能合約,從而使得整個繫統變得非常低效和不實用。

另外,如果你想在以太坊上用它的基本OPCODES實現一個類似於SHA256的覆雜算法,那你就自祈多福吧!爲了解決通過指令集運行覆雜程序産生的高額gas問題,以太坊引入了預編譯的概念,把程序編譯進EVM併且消耗固定的gas。一個值得關註的預編譯是以太坊哈希算法,因爲如果在虛擬機中實現該算法,合約在調用時將會産生極其昂貴的費用。

臃腫的預編譯

預編譯帶來的問題是它會不斷增加虛擬機的臃腫度和覆雜度,而不能解決核心問題:當前指令集和規範的低效而粗劣的設計。

如果我們能夠定義一種新的規範和指令集,不需要預編譯這些覆雜程序,而隻需要通過基本指令就可以高效實現呢?這時候WASM就派上用場了。

2.4 EVM 與 WASM VM的比較

  • 速度:WASM 旨在提供比 EVM 更快的執行速度。EVM 在處理編譯和執行智能合約時可能存在效率問題,而 WASM 通過直接轉換爲編譯後的代碼來提高加載速度和處理能力。
  • 預編譯:EVM 依賴於預編譯合約來高效執行加密計算,但這可能導緻硬分叉的風險。WASM 則消除了對預編譯合約的依賴,允許開髮人員創建高效、快速的智能合約。
  • 交易費用:更快的Wasm虛擬機,緻使交易吞吐量大幅提升,那麽合約部署和交易成本也能大幅降低。可以説Wasm合約很好的解決了現在以太坊上交易費用高和交易擁堵的問題。
  • 靈活性和互操作性:Wasm擴展了智能合衕開髮者可用的語言繫列,支持使用任何Wasm的高級語言(如Rust、C++、JavaScript等)開髮編寫覆雜業務邏輯,這意味著你可以用你熟悉的任何語言編寫智能合約,包括最成熟的基於Rust的ink!,或基於AssemblyScript的Ask!等。

EWASM團隊正在在以太坊上集成WebAssembly,從而保證以太坊的執行層更加高效、簡單,適合作爲完全的去中心化計算平颱。WASM已經被許多其他項目接納爲標準,包括Dfinity和EOS都使用它來強化它們的執行層。

2.5 Stylus(Arbitrum)

Stylus項目是以太坊二層網絡Arbitrum上通過引入WebAssembly(WASM)虛擬機來提高智能合約的執行性能。合約可以以比Solidity更快的速度執行,衕時減少了燃氣成本。這使得在Arbitrum網絡上構建高性能的智能合約變得更加容易,目前支持C,C++和Rust的編譯。

自定義預編譯支持: Stylus還支持自定義預編譯(precompiles),這允許開髮者將自己的Rust或C++預編譯部署到Arbitrum網絡上。這可以幫助在鏈上引入新的加密算法或其他特定功能,而無需等待鏈上升級。比如説可以把tensor computation預編譯,降低inference成本,對鏈上機器學習可能有幫助。

與EVM的互操作性: Stylus通過與以太坊虛擬機(EVM)的互操作性來實現與現有以太坊生態繫統的集成。這意味著Stylus合約可以與現有的EVM合約互操作,併與EVM共享相衕的全局狀態。

重入功能(Reentrancy): 與Cosmos wasm不衕,Stylus Rust SDK引入了重入功能,併允許開髮者手動啟用它。這使得合約可以更加靈活地進行互操作,但需要開髮者謹慎管理狀態以確保安全性。

基於arbitrum生態的火爆,stylus可能是最有意義的一次wasm集成,衕時也利好arbitrum在zkrollup中的競爭力。

2.6 Gear(Polkadot)

Gear 協議正在創建一種可作爲 Polkadot parachain 部署的技術,它將成爲托管智能合約的工具。與 Polkadot 一樣,Gear 也使用 Substrate 框架。這簡化了爲特定應用創建不衕區塊鏈的過程。Substrate 提供了開箱即用的廣泛功能,讓人們可以專註於在協議之上創建自定義引擎。

以前,啟動區塊鏈的成本很高,但Gear可以讓dApp開髮者專註於自己的項目,而不是從頭開始構建和運營整個區塊鏈。

Gear 協議的主要引擎是智能合約模塊。在 Gear 的情況下,任何智能合約都是用不衕語言(如 Rust、C、C++ 等)編譯的 WebAssembly 程序。對於來自加密世界之外的開髮者來説,它的入門門檻很低,因爲他們可以在熟悉的環境中構建智能合約。開髮者更容易嘗試智能合約編程語言。

Gear 的智能合約架構在引擎蓋下使用演員模型,併提供以下功能:

  • 爲不可變程序提供持久內存
  • 異步消息處理
  • 針對區塊鏈上下文的最小、直觀和充足的 API 錶麵
  • 鏈上組件之間的Actor通信代理模型提供了更高的可組合性、與併行代碼執行和分片的更好兼容性。

每個程序都有固定數量的內存,Gear 允許對其進行控製。程序隻能在自己的內存中讀寫,不能訪問其他程序的內存空間。每個程序都有獨立的內存空間,可以併行處理 Gear 節點上的信息。

2.7 CosmWasm(Cosmos)

CosmWasm 是一個現代的、功能強大的基於 Wasm 的智能合約平颱,它可以輕鬆地插入 Cosmos-SDK。這展現了 CosmWasm 的主要優勢之一:用 CosmWasm 編寫的合約與 IBC(區塊鏈間通信)原生緊密結合,讓開髮者和用戶可以進入多鏈未來,目前僅支持Rust。

CosmWasm的優勢

  1. 安全性:使用Rust語言提高智能合約的安全性。
  2. 跨鏈兼容性:Cosmos生態中的IBC(Inter-Blockchain Communication)協議支持。
  3. 性能:與傳統EVM(以太坊虛擬機)相比,CosmWasm在一些案例中展示了更高的效率和較低的交易費用。
  4. 開髮者友好:Rust語言的類型安全和內存安全特性可降低智能合約中的某些類型的錯誤。

挑戰和限製

  1. 學習曲線:Rust相較於Solidity等更常用的智能合約語言,對於初學者來説學習曲線可能更陡峭。CosmWASM需要支持更多語言編譯來穫得大規模採用的可能性。
  2. 生態繫統和工具支持:雖然在成長中,但與成熟的智能合約平颱(如Ethereum)相比,CosmWasm的開髮工具和生態圈可能仍較爲有限。
  3. 市場占有率和知名度:在智能合約平颱中,CosmWasm相對於Ethereum、Binance Smart Chain等可能知名度不高,影響了它吸引開髮者和用戶的能力。
  4. 維護和升級的挑戰:盡管CosmWasm提供合約升級功能,但智能合約的維護和升級管理仍是一個覆雜任務,需要小心處理以避免安全漏洞。
  5. 兼容性問題:對於那些習慣於EVM或其他智能合約環境的項目來説,遷移到CosmWasm可能會麵臨兼容性挑戰。

2.8 ZK-WASM

除了wasm虛擬機之外,還有最近一項新興的技術ZKWASM,髮明者Delphinus Labs已經在github上開源了ZK-WASM的代碼。ZKWASM 使開髮者無需重新執行便能驗證已執行計算的正確性。通過利用 ZKWASM,開髮者可以靈活地使用各種編程語言構建 ZKP 應用程序。這些應用程序可以無縫地在 Web 瀏覽器中執行。

ZKWASM的概念來源於ZKSNARK,它是SNARG和零知識證明的混合體。咱們來解釋一下,通常情況下,要用ZKSNARK,你需要用一種算術電路語言或者電路友好型語言,比如Pinocchio、TinyRAM、Buffet/Pequin、Geppetto、xJsnark框架、ZoKrates等,寫個程序。這在某種程度上對已有的程序構成了一種障礙,讓它們難以髮揮ZKSNARK的威力。但還有另一種方式,不是在源代碼級別上用ZKSNARK,而是在虛擬機的字節碼級別上使用它,然後實現一個支持ZKSNARK的虛擬機。Delphinus Labs採用了後者的方式,把整個WASM虛擬機都寫入了ZKSNARK電路中,這樣一來,現有的WASM應用程序就能直接在ZKWASM上運行,無需做任何修改。因此,雲服務提供商可以曏任何用戶證明計算結果是按誠實計算的,不會泄露任何私人信息。

ZKWASM 提供了各種用例,比如可以讓瀏覽器內的一些操作的ZK證明上鏈。做到網頁操作區塊鏈可驗證。再比如預言機、鏈下計算、自動化、連接 Web2 和 Web3,以及爲機器學習和數據處理生成證明,乃至游戲及社交應用。隨著採用率的提高,zkWASM 將擴展 Web3 的可能性,併將 Web2 開髮者納入這個變革性的格局。

通過 Delphinus Lab 的 ZKWASM 實現,開髮者可以利用零知識證明的力量來增強其應用程序的安全性和隱私性,爲更值得信賴和去中心化的數字格局鋪平道路。

三、結論

Web的性能和智能合約平颱執行層的未來一片光明。不僅dApp會具有更高的性能,集成WASM也可以讓那些熟悉Rust和Go之類的主流語言的魯棒性的人更容易進行智能合約的開髮,而不是需要學習solidity或者其他區塊鏈開髮語言的各種細節才能在以太坊上開髮有用的應用程序。根據埃文斯數據公司(Evans Data Corporation)的數據,全球有近 2700 萬開髮人員。這一數字正在穩步增長—去年增長了約 3%,預計到 2024 年將超過 2870 萬。而在區塊鏈上的開髮人員而不超過3萬名,占開髮者總人數的大約千分之一左右,雖然這個數字一直在穩步提升,但學習新的智能合約語言可能依然是開髮者們進入區塊鏈的門檻。

但越來越多的區塊鏈開始支持Web Assembly作爲編譯後智能合約的字節碼。WASM帶給區塊鏈的不僅僅是高效,互操性和廣泛的應用場景,更是解放開髮者的鑰匙,將開髮者進入區塊鏈的準入門檻變低。區塊鏈的想象一下,在不久的未來,當Web2開髮者想嘗試做區塊鏈開髮的時候,可以用他們熟悉的Python,C++,Javascript在區塊鏈上開髮大型應用,最大限度地釋放區塊鏈去中心化網絡的價值,先降低創建者(開髮者)的門檻,再降低用戶的門檻,邁曏Mass Adoption。

四、索引

https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21

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

https://docs.arbitrum.io/stylus/stylus-gentle-introduction

https://medium.com/@gear_techs/introducing-gear-easy-to-use-polkadot-parachain-9ccd05437a9c

https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8

https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf

https://github.com/DelphinusLab/zkWasm

感謝Maggie,Xinyou Ji(CMU)對本文提供建議和指導。

免責聲明: Foresight Ventures所有文章均不作爲投資建議。投資有風險,請評估個人風險承受能力,審慎做出投資決策。

聲明:

  1. 本文轉載自[Foresight Research],著作權歸屬原作者[Mike@ Foresight Ventures],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

Foresight Ventures : WASM — 大時代引擎

新手1/1/2024, 2:25:50 AM
本文盤點 Wasm 和區塊鏈之間存在的一些關繫和應用場景:智慧合約、跨鏈互動、鏈下運算和資料隱私。

TL;DR

WebAssembly(簡稱Wasm)是一種可移植、高性能的二進製指令格式,可以在Web瀏覽器中運行。它被設計爲一種通用的編譯目標,可以用於多種編程語言,併且可以在不衕的平颱上運行。

區塊鏈是一種去中心化的分布式賬本技術,它通過使用密碼學和共識算法來確保數據的安全性和可信度。區塊鏈可以用於記録交易、存儲數據和執行智能合約等應用。

Wasm和區塊鏈之間存在一些關繫和應用場景:

  1. 智能合約:Wasm可以作爲智能合約的執行環境,使得合約可以在不衕的區塊鏈平颱上運行。Wasm的高性能和可移植性使得智能合約可以更加高效地執行,併且可以跨平颱使用。
  2. 跨鏈交互:Wasm可以用於實現跨鏈交互的功能。通過將不衕區塊鏈的邏輯編譯爲Wasm代碼,可以在不衕的區塊鏈上執行相衕的邏輯,實現跨鏈的數據傳輸和交互。
  3. 鏈下計算:Wasm可以用於在區塊鏈之外進行計算,併將計算結果提交到區塊鏈上。這樣可以在保持數據的安全性和可信度的衕時,提高計算的效率和靈活性。
  4. 數據隱私:Wasm可以用於實現區塊鏈上的數據隱私保護。通過將敏感數據的處理邏輯編譯爲Wasm代碼,併在區塊鏈上執行,可以保護數據的隱私性,衕時確保計算的可驗證性。

總之,Wasm和區塊鏈可以相互結合,提供更加高效、安全和靈活的區塊鏈應用和服務。Wasm的可移植性和高性能使得它成爲區塊鏈領域的重要技術之一。

一、什麽是Web Assembly

WebAssembly是由W3C(萬維網聯盟)開髮的一個高效輕量級指令集標準,被譽爲網絡和高性能的顛覆者,支持跨瀏覽器執行。這意味著我們可以把包括C/C++, Go, Rust等在內的不衕編程語言編譯成統一的標準二進製格式,併將其作爲JavaScript的替代品以近乎原生代碼的效率在瀏覽器中運行。

WebAssembly,或者簡稱爲WASM,是內存安全、平颱獨立的,可以完美高效地映射到所有類型的CPU架構上,有著以下主要優勢:

  • 高效:WASM 有一套完整的語言特性,實際上 WASM 是體積小且加載快的二進製格式, 其目標就是充分髮揮硬件的能力以達到原生語言的執行效率。
  • 安全:WASM 運行在一個內存安全,沙箱化的執行環境中,甚至可以在現有的 JavaScript 虛擬機中實現。在 Web 環境中 ,WASM 將會嚴格遵守衕源策略以及瀏覽器安全策略。WASM在編譯的時候,interface是比較少的,但大部分wasm application是不能聯網的(因爲不支持socket),現在隻能支持local database。很多安全問題的時候來源於執行時候的內存的訪問,wasm在編譯的時候,可以避免非法的內存訪問。
  • 兼容性:WASM 在 Web 中被設計成無版本、特性可測試、曏後兼容的。WASM 可以被 JavaScript 調用,進入 JavaScript 上下文,也可以像 Web API 一樣調用瀏覽器的功能。WASM 不僅可以運行在瀏覽器上,也可以運行在非 Web 環境下(如 Node.js、Deno、物聯網設備等執行)。傳統的方式可能需要多次compile,而WASM隻需一次便可運行,即插即用。

此外:Web 是唯一真正的通用平颱,可以在任何設備上訪問你的應用程序。這還允許你維護單個代碼庫,簡化更新併確保所有用戶都可以訪問你的應用程序。WASM支持 64 位和 32 位整數操作,與 CPU 指令一一對應。通過移除浮點運算,可輕鬆實現確定性,這對共識算法來説是必要的。由 LLVM編譯器基礎架構項目提供支持,這意味著 Wasm 可以從 LLVM 十多年的編譯器優化中穫益。WASM由穀歌、蘋果、微軟、Mozilla 和 Facebook 等大公司持續開髮,在這幾個大公司開髮的瀏覽器的後端都支持wasm編譯。

WASM 的美妙之處在於它就像一個魔法引擎,它可以在任何地方運行,不需要下載也不需要安裝,因爲是二進製格式。隻需一次點擊,即可在需要時立即運行 Web 應用。它比直接在下載和運行二進製文件更安全,因爲瀏覽器已內建安全機製,使其中運行的代碼不會危害你的繫統。而且分享 Web 應用衕樣簡單 - 鏈接是可以放在任何地方的可點擊字符串。

二、爲什麽我們需要Web Assembly

2.1 Web2

由於瀏覽器內置的功能和 Web 提供的交互性,Web從超文本靜態內容和小型腳本語言髮展成了一個非常強大和流行的平颱,充滿了驚人的應用程序和功能。但到目前爲止,Web應用依舊基本上由相衕的腳本語言(JavaScript)驅動,然而JavaScript設計的首要目標從來就不是爲了實現這些。

JavaScript 最初是一種簡單的腳本語言,旨在爲充滿輕量級超文本文檔的 Web 應用帶來一些交互性。它的設計易於學習和編寫,併不追求運行速度。多年來,瀏覽器在 JavaScript 解析上的重大性能改進的,帶來了顯著的性能提升。

隨著 JavaScript 運行速度的加快,能瀏覽器中執行的東西大大擴展。新的 API 帶來了諸如交互式圖形,視頻流,離線瀏覽以及更多的功能。衕時越來越多的應用程序(過去僅限本地應用程序)開始進入 Web 。現在你可以輕易的在瀏覽器中編輯文檔併髮送電子郵件,但在有些領域中,JavaScript 的性能依舊是一個難題。想一想除了瀏覽器之外你所使用軟件:游戲,視頻編輯,3D渲染或音樂製作。這些應用程序需要執行大量計算,併且需要很高的性能。JavaScript 很難滿足這種高性能的要求。

不過替換掉 JavaScript 不太現實,甚至可能要花幾十年時間都搞不定,因爲整個互聯網都離不開它。而且,還有一大幫人在不停地改進 JavaScript。確實,和其他語言比起來,JavaScript 在某些方麵比如 null 和 == 這些地方是有點不夠好,但這些問題還不至於讓人把整個技術都換掉。

所以,WebAssembly 不會取代 JavaScript,但這併不意味著將來沒人用 WASM。實際上,WASM 的使用還會越來越廣泛。因爲 WASM 能給網頁帶來強大的計算能力,比如做圖像處理或者游戲之類的。用 WASM,可以做出一個網頁版的 Photoshop併運行得很好,或者是一個在瀏覽器裡能以 60 幀每秒甚至更高幀率運行的 3D 游戲。游戲尤其具有挑戰性,因爲游戲不僅需要衕時執行音頻和視頻處理,還需要協調物理特效和AI。WASM擁有在瀏覽器上高效的運行游戲的能力,將打開把許多其他應用程序帶到瀏覽器上的大門的可能性。

上圖展示了javascript和wasm工作流的對比,可以看出wasm相比JavaScript要簡潔許多。

2.2 Web3

WASM VM

在2018年的時候,以太坊生態內部開始討論用WASM VM做智能合約虛擬機,因爲覺得它性能比EVM好。EVM的髮明者Gavin Wood曾錶示過WASM取代EVM的可行性,Vitalik也錶示過以太坊2.0將會升級爲Wasm合約(eWASM),以滿足更多開髮需求。而如今,Wasm合約的髮展已經有了一定雛形。

2.3 EVM是如何設計的?爲什麽它是低效的?

架構尺寸過大

傳統計算機包含的指令集隻接受32位或者64位的輸入。EVM與此不衕併且很特殊,它是一颱256位的計算機,故意設計成這樣是爲了更易於處理以太坊的哈希算法,它會明確産生256位的輸出。

然而,實際運行EVM程序的計算機則需要把256位的字拆分成它們的本地架構來執行智能合約,從而使得整個繫統變得非常低效和不實用。

另外,如果你想在以太坊上用它的基本OPCODES實現一個類似於SHA256的覆雜算法,那你就自祈多福吧!爲了解決通過指令集運行覆雜程序産生的高額gas問題,以太坊引入了預編譯的概念,把程序編譯進EVM併且消耗固定的gas。一個值得關註的預編譯是以太坊哈希算法,因爲如果在虛擬機中實現該算法,合約在調用時將會産生極其昂貴的費用。

臃腫的預編譯

預編譯帶來的問題是它會不斷增加虛擬機的臃腫度和覆雜度,而不能解決核心問題:當前指令集和規範的低效而粗劣的設計。

如果我們能夠定義一種新的規範和指令集,不需要預編譯這些覆雜程序,而隻需要通過基本指令就可以高效實現呢?這時候WASM就派上用場了。

2.4 EVM 與 WASM VM的比較

  • 速度:WASM 旨在提供比 EVM 更快的執行速度。EVM 在處理編譯和執行智能合約時可能存在效率問題,而 WASM 通過直接轉換爲編譯後的代碼來提高加載速度和處理能力。
  • 預編譯:EVM 依賴於預編譯合約來高效執行加密計算,但這可能導緻硬分叉的風險。WASM 則消除了對預編譯合約的依賴,允許開髮人員創建高效、快速的智能合約。
  • 交易費用:更快的Wasm虛擬機,緻使交易吞吐量大幅提升,那麽合約部署和交易成本也能大幅降低。可以説Wasm合約很好的解決了現在以太坊上交易費用高和交易擁堵的問題。
  • 靈活性和互操作性:Wasm擴展了智能合衕開髮者可用的語言繫列,支持使用任何Wasm的高級語言(如Rust、C++、JavaScript等)開髮編寫覆雜業務邏輯,這意味著你可以用你熟悉的任何語言編寫智能合約,包括最成熟的基於Rust的ink!,或基於AssemblyScript的Ask!等。

EWASM團隊正在在以太坊上集成WebAssembly,從而保證以太坊的執行層更加高效、簡單,適合作爲完全的去中心化計算平颱。WASM已經被許多其他項目接納爲標準,包括Dfinity和EOS都使用它來強化它們的執行層。

2.5 Stylus(Arbitrum)

Stylus項目是以太坊二層網絡Arbitrum上通過引入WebAssembly(WASM)虛擬機來提高智能合約的執行性能。合約可以以比Solidity更快的速度執行,衕時減少了燃氣成本。這使得在Arbitrum網絡上構建高性能的智能合約變得更加容易,目前支持C,C++和Rust的編譯。

自定義預編譯支持: Stylus還支持自定義預編譯(precompiles),這允許開髮者將自己的Rust或C++預編譯部署到Arbitrum網絡上。這可以幫助在鏈上引入新的加密算法或其他特定功能,而無需等待鏈上升級。比如説可以把tensor computation預編譯,降低inference成本,對鏈上機器學習可能有幫助。

與EVM的互操作性: Stylus通過與以太坊虛擬機(EVM)的互操作性來實現與現有以太坊生態繫統的集成。這意味著Stylus合約可以與現有的EVM合約互操作,併與EVM共享相衕的全局狀態。

重入功能(Reentrancy): 與Cosmos wasm不衕,Stylus Rust SDK引入了重入功能,併允許開髮者手動啟用它。這使得合約可以更加靈活地進行互操作,但需要開髮者謹慎管理狀態以確保安全性。

基於arbitrum生態的火爆,stylus可能是最有意義的一次wasm集成,衕時也利好arbitrum在zkrollup中的競爭力。

2.6 Gear(Polkadot)

Gear 協議正在創建一種可作爲 Polkadot parachain 部署的技術,它將成爲托管智能合約的工具。與 Polkadot 一樣,Gear 也使用 Substrate 框架。這簡化了爲特定應用創建不衕區塊鏈的過程。Substrate 提供了開箱即用的廣泛功能,讓人們可以專註於在協議之上創建自定義引擎。

以前,啟動區塊鏈的成本很高,但Gear可以讓dApp開髮者專註於自己的項目,而不是從頭開始構建和運營整個區塊鏈。

Gear 協議的主要引擎是智能合約模塊。在 Gear 的情況下,任何智能合約都是用不衕語言(如 Rust、C、C++ 等)編譯的 WebAssembly 程序。對於來自加密世界之外的開髮者來説,它的入門門檻很低,因爲他們可以在熟悉的環境中構建智能合約。開髮者更容易嘗試智能合約編程語言。

Gear 的智能合約架構在引擎蓋下使用演員模型,併提供以下功能:

  • 爲不可變程序提供持久內存
  • 異步消息處理
  • 針對區塊鏈上下文的最小、直觀和充足的 API 錶麵
  • 鏈上組件之間的Actor通信代理模型提供了更高的可組合性、與併行代碼執行和分片的更好兼容性。

每個程序都有固定數量的內存,Gear 允許對其進行控製。程序隻能在自己的內存中讀寫,不能訪問其他程序的內存空間。每個程序都有獨立的內存空間,可以併行處理 Gear 節點上的信息。

2.7 CosmWasm(Cosmos)

CosmWasm 是一個現代的、功能強大的基於 Wasm 的智能合約平颱,它可以輕鬆地插入 Cosmos-SDK。這展現了 CosmWasm 的主要優勢之一:用 CosmWasm 編寫的合約與 IBC(區塊鏈間通信)原生緊密結合,讓開髮者和用戶可以進入多鏈未來,目前僅支持Rust。

CosmWasm的優勢

  1. 安全性:使用Rust語言提高智能合約的安全性。
  2. 跨鏈兼容性:Cosmos生態中的IBC(Inter-Blockchain Communication)協議支持。
  3. 性能:與傳統EVM(以太坊虛擬機)相比,CosmWasm在一些案例中展示了更高的效率和較低的交易費用。
  4. 開髮者友好:Rust語言的類型安全和內存安全特性可降低智能合約中的某些類型的錯誤。

挑戰和限製

  1. 學習曲線:Rust相較於Solidity等更常用的智能合約語言,對於初學者來説學習曲線可能更陡峭。CosmWASM需要支持更多語言編譯來穫得大規模採用的可能性。
  2. 生態繫統和工具支持:雖然在成長中,但與成熟的智能合約平颱(如Ethereum)相比,CosmWasm的開髮工具和生態圈可能仍較爲有限。
  3. 市場占有率和知名度:在智能合約平颱中,CosmWasm相對於Ethereum、Binance Smart Chain等可能知名度不高,影響了它吸引開髮者和用戶的能力。
  4. 維護和升級的挑戰:盡管CosmWasm提供合約升級功能,但智能合約的維護和升級管理仍是一個覆雜任務,需要小心處理以避免安全漏洞。
  5. 兼容性問題:對於那些習慣於EVM或其他智能合約環境的項目來説,遷移到CosmWasm可能會麵臨兼容性挑戰。

2.8 ZK-WASM

除了wasm虛擬機之外,還有最近一項新興的技術ZKWASM,髮明者Delphinus Labs已經在github上開源了ZK-WASM的代碼。ZKWASM 使開髮者無需重新執行便能驗證已執行計算的正確性。通過利用 ZKWASM,開髮者可以靈活地使用各種編程語言構建 ZKP 應用程序。這些應用程序可以無縫地在 Web 瀏覽器中執行。

ZKWASM的概念來源於ZKSNARK,它是SNARG和零知識證明的混合體。咱們來解釋一下,通常情況下,要用ZKSNARK,你需要用一種算術電路語言或者電路友好型語言,比如Pinocchio、TinyRAM、Buffet/Pequin、Geppetto、xJsnark框架、ZoKrates等,寫個程序。這在某種程度上對已有的程序構成了一種障礙,讓它們難以髮揮ZKSNARK的威力。但還有另一種方式,不是在源代碼級別上用ZKSNARK,而是在虛擬機的字節碼級別上使用它,然後實現一個支持ZKSNARK的虛擬機。Delphinus Labs採用了後者的方式,把整個WASM虛擬機都寫入了ZKSNARK電路中,這樣一來,現有的WASM應用程序就能直接在ZKWASM上運行,無需做任何修改。因此,雲服務提供商可以曏任何用戶證明計算結果是按誠實計算的,不會泄露任何私人信息。

ZKWASM 提供了各種用例,比如可以讓瀏覽器內的一些操作的ZK證明上鏈。做到網頁操作區塊鏈可驗證。再比如預言機、鏈下計算、自動化、連接 Web2 和 Web3,以及爲機器學習和數據處理生成證明,乃至游戲及社交應用。隨著採用率的提高,zkWASM 將擴展 Web3 的可能性,併將 Web2 開髮者納入這個變革性的格局。

通過 Delphinus Lab 的 ZKWASM 實現,開髮者可以利用零知識證明的力量來增強其應用程序的安全性和隱私性,爲更值得信賴和去中心化的數字格局鋪平道路。

三、結論

Web的性能和智能合約平颱執行層的未來一片光明。不僅dApp會具有更高的性能,集成WASM也可以讓那些熟悉Rust和Go之類的主流語言的魯棒性的人更容易進行智能合約的開髮,而不是需要學習solidity或者其他區塊鏈開髮語言的各種細節才能在以太坊上開髮有用的應用程序。根據埃文斯數據公司(Evans Data Corporation)的數據,全球有近 2700 萬開髮人員。這一數字正在穩步增長—去年增長了約 3%,預計到 2024 年將超過 2870 萬。而在區塊鏈上的開髮人員而不超過3萬名,占開髮者總人數的大約千分之一左右,雖然這個數字一直在穩步提升,但學習新的智能合約語言可能依然是開髮者們進入區塊鏈的門檻。

但越來越多的區塊鏈開始支持Web Assembly作爲編譯後智能合約的字節碼。WASM帶給區塊鏈的不僅僅是高效,互操性和廣泛的應用場景,更是解放開髮者的鑰匙,將開髮者進入區塊鏈的準入門檻變低。區塊鏈的想象一下,在不久的未來,當Web2開髮者想嘗試做區塊鏈開髮的時候,可以用他們熟悉的Python,C++,Javascript在區塊鏈上開髮大型應用,最大限度地釋放區塊鏈去中心化網絡的價值,先降低創建者(開髮者)的門檻,再降低用戶的門檻,邁曏Mass Adoption。

四、索引

https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21

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

https://docs.arbitrum.io/stylus/stylus-gentle-introduction

https://medium.com/@gear_techs/introducing-gear-easy-to-use-polkadot-parachain-9ccd05437a9c

https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8

https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf

https://github.com/DelphinusLab/zkWasm

感謝Maggie,Xinyou Ji(CMU)對本文提供建議和指導。

免責聲明: Foresight Ventures所有文章均不作爲投資建議。投資有風險,請評估個人風險承受能力,審慎做出投資決策。

聲明:

  1. 本文轉載自[Foresight Research],著作權歸屬原作者[Mike@ Foresight Ventures],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
Mulai Sekarang
Daftar dan dapatkan Voucher
$100
!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.