從 EVM 到 Wasm 的正規化轉換,為什麼波卡會成為公鏈的常青樹?

買賣虛擬貨幣

本文由Patract Labs與Polkadot生態研究院聯合出品,本文會涉及一些技術用語,不過我們會用通俗易懂地方式再闡述一下,大家可酌情看重要解釋即可。

背景

如果時光倒退到2017年,人們還會記得那一年區塊鏈領域發生的事,尤其是公鏈領域的爆發,那一年號稱要做公鏈的專案用數以萬計來形容也不足為過,但後來的故事告訴我們,能真正倘過歷史大河的公鏈其實屈指可數。於是,公鏈的競爭似乎由“萬箭齊發”變成了“九九歸一”,只剩下了以太坊扛起公鏈的生態大旗。

而4年後的今天,我們把時間撥回到2021年初,彼時公鏈生態已經沒有了所謂的“以太坊殺手”,大家把注意力都放在了以太坊身上,不管是DeFi還是NFT,都從以太坊生態中所衍生。然而以太坊生態專案的火爆,也把以太坊的效能壓榨完了,以太坊的轉賬慢,gas費高等老問題又再一次出現。

於是,一些新的解決方案逐漸浮出水面,最先脫穎而出的是幣安智慧鏈BSC,透過相容EVM,快速將以太坊成熟的應用復刻到BSC上,並在幣安交易所的支援下迅速壯大,成為如今第二大鎖倉體量的公鏈。接著便是定位為Layer2聚合器的Polygon和高效能公鏈Solana相繼在4月開始發力,公鏈興起的概率越來越高。

而剛剛過去的8月,我們再一次見證了公鏈潮的爆發,Avalanche、Fantom、Celo等公鏈相繼迎來了巨大的增長。

這些公鏈突然振奮起來的原因,除了市場的炒熱以及公鏈的激勵機制,還源於他們幾乎都採用或相容了EVM(Ethereum Virtual Machine)“以太坊虛擬機器”(Solana除外),從而能夠快速用上智慧合約,並實現有效的相容,使得生態能夠快速擴張起來,因此EVM奠定了一些公鏈爆發的基礎。

儘管EVM目前算是區塊鏈領域較為完備的機制,但它的侷限性和時效性隨著區塊鏈發展也顯得有些“落伍”,而作為EVM合約升級版的Wasm合約開始受到了眾人關注。

我們也看到,以太坊創始人“V神”早就表示以太坊2.0將會升級為Wasm合約(eWASM),以滿足更多開發需求。而如今,Wasm合約的發展已經有了一定雛形,尤其是在波卡生態,開始有了更多接受者和採用者,他們似乎看到了遙遠的未來……

快速瞭解EVM和Wasm

EVM和Wasm VM是兩種區塊鏈常用的虛擬機器,現在許多大火的區塊鏈幾乎都會或多或少的相容EVM,但是也有許多新興公鏈會採用Wasm技術,這背後會是怎樣的一種變化呢?要了解清楚這些,我們需要先簡單瞭解些EVM和Wasm。

1

EVM是什麼?

按照比較標準的定義,EVM是專門為以太坊客戶端開發的虛擬機器,主要用於在以太坊網路上執行智慧合約程式碼,其本質上是虛擬機器(VM),只不過更輕量。虛擬機器,可以簡單理解為它就是一臺虛擬的計算機,於是我們可以在這臺計算機上編寫程式,執行程式。

而將該虛擬機器(VM)應用到以太坊上,便有了我們熟知的EVM(以太坊虛擬機器,Ethereum Virtual Machine),其主要作用是支援以太坊呼叫智慧合約,從而完成合約的主動生效和自動執行。同時,藉助以太坊的智慧合約功能,我們才能在區塊鏈網路上順利完成各種模組化的任務。

通俗來說,藉助以太坊的虛擬機器我們可以將現實世界的合同或者合約對映到區塊鏈上,從而當需求(或條件)發生時,自動完成交易或者轉賬,避免了合約的違規,可以說有了虛擬機器的以太坊才有了以太坊後續的發展,也才給區塊鏈帶來了更多的應用,不管是DeFi、NFT還是其他聯盟鏈功能。

2

Wasm是什麼?

Wasm全稱WebAssembly,一種在基於棧的虛擬機器上執行的二進位制的指令格式,這些程式碼可以是C、C++或Rust等,它們會被編譯進你的瀏覽器,在你的CPU上以接近原生的速度執行,而這些程式碼的形式是二進位制檔案。Wasm的開發團隊分別來自Mozilla、Google、Microsoft、Apple等公司,標準由W3C組織制定。

Wasm原本是為瀏覽器設計的虛擬機器,但是越來越多開發者使用Wasm之後,便逐漸拓展了Wasm的使用場景,使得Wasm成為了目前最通用的格式之一。

在區塊鏈領域,它的主機獨立性、安全沙盒和整體簡潔性等特性,使其成為智慧合約的理想執行時(Runtime)。此外,它還允許使用多種現代程式語言(Rust、C++、JavaScript等)開發合約。以太坊團隊一直在試用一個基於Wasm的合約引擎eWasm,並計劃在2021年的某個時候正式釋出它。

為什麼說EVM會正規化轉換到Wasm上

1

正規化轉換是什麼?

正規化轉換(Paradigm Shift),又稱“正規化轉移”,由美國著名科學哲學家托馬斯·庫恩(Thomas S.Kuhn)最早提出,他認為“正規化”是指特定的科學共同體從事某一類科學活動所必須遵循的公認的模式,它包括共有的世界觀、基本理論、範例、方法、手段、標準等等與科學研究有關的所有東西。而這個概念還可以衍生到其他層面,比如經濟層面,企業管理層面,商業層面等等。

而正規化轉換也就是長期遵循的公認的模式A轉換到另一種模式B的過程。比如,bp尋呼機的使用轉換到手機的使用,簡訊轉換到微信,DVD轉換到流媒體等等。

反饋到現在的人類科學程序來看,我們的每一次巨大的科技進步都不是一種偶然,甚至可以說是一種必然,這些科技的指向性就向托馬斯所描述的,“科學的發展是由一系列新理論取代舊理論的過程”,對於區塊鏈來說,同樣如此。

EVM自以太坊誕生以來,已經走過了7個年頭,和當年的區塊鏈世界相比,目前已經有了巨大的飛躍。按照正規化轉移的路徑,以太坊即將邁入2.0時刻,那麼EVM同樣亟需更新迭代,EVM還是幾年前的設計,但是新技術卻在飛速發展,EVM似乎正在轉向Wasm,也是正規化轉移的結果。

2

Wasm對於EVM有什麼優勢?

以太坊基金會在Devcon上多次說明了自己打算將EVM過渡到Wasm的想法,但已經上線的龐大合約體量無法支援深層次的變革,生態也在這一臨時方案上越走越遠。選用Wasm作為智慧合約的虛擬機器的優勢有以下幾點:

1.完勝EVM虛擬機器。相比EVM需要開發者預編譯,較高的程式設計成本,Wasm虛擬機器的結構、指令完備性及執行效率遠勝於EVM虛擬機器,將成為合約開發的新引擎。

2.執行速度快。Wasm有一套完整的語義,且具有緊湊的二進位制格式,體積很小,這使得Wasm位元組碼執行時的效率可以接近於本地機器碼的效率,比EVM的效能高1到2個數量級,後期還會升級為更快JIT虛擬機器。

3.交易費用低。更快的Wasm虛擬機器,致使交易吞吐量大幅提升,那麼合約部署和交易成本也能大幅降低。可以說Wasm合約很好的解決了現在以太坊上交易費用高和交易擁堵的問題。

4.合約語言廣。Wasm擴充套件了智慧合同開發者可用的語言系列,支援使用任何Wasm的高階語言(如Rust、C++、JavaScript等)開發編寫複雜業務邏輯,這意味著你可以用你熟悉的任何語言編寫智慧合約,包括最成熟的基於Rust的ink!,或基於AssemblyScript的Ask!等。

3

EVM會正規化轉換到Wasm的原因

儘管剛剛我們已經簡述了Wasm在技術層面上比EVM有眾多優勢,但是EVM會正規化轉換到Wasm的原因絕不僅僅只是這一方面。

作為EVM的發明者同時也是波卡創始人Gavin博士,對這個問題擁有足夠的話語權。在做波卡的時候,Gavin並沒有沿用自己發明的EVM,而是選擇Wasm,這背後的原因就能很好的解答這個問題。

儘管現在看來以太坊的EVM已經有六七年的歷史了,並且許多公鏈都在採用或者相容EVM,但是EVM並不一定會是最終的答案。

在當初Gavin博士選擇離開以太坊,準備做新專案時,他有非常多的選擇。但是對於Gavin博士來說,如果只是做一個別的專案的 “山寨版”,或者只是稍微地迭代一下,增加一下交易吞吐量,或者創造一種稍有改進的語言的話,是無法滿足十分喜歡創新的他的。

於是,Gavin沒有想過去走老路,他選擇了一條沒有人走過的路,創新的做一個比公鏈更底層的基礎設施專案,而這就是波卡。

在做波卡時,選擇Wasm的理由,也可以從他對EVM的態度可以看出:“很多人已經在使用EVM,所以支援這些遺留協議和遺留語言是非常重要的”,但同時也不能只靠著老技術吃飯,還要放眼新未來,“開始思考下一代工具是什麼,而對我來說那就是使用WebAssembly作為智慧合約”。

事實上,Wasm本身的許多優勢還與波卡十分匹配。比如,區塊鏈需要確定性,以便在點對點網路中的所有節點上進行可靠的狀態轉換更新,而不強制每個節點執行完全相同的硬體。Wasm就非常適合用於可能不同的機器集之間的可靠性。Wasm既高效又快速,這種效率意味著它可以作為一團程式碼上傳到鏈上,而不會造成太多的狀態膨脹,同時保持其以接近本機速度執行的能力。Wasm還支援了波卡的無分叉升級,也為波卡提供了另一大利器。

最懂EVM的Gavin都是如此選擇Wasm的,對於其他公鏈來說也是如此。畢竟EVM的誕生也是有時代背景的,一個是當時的網際網路發展還比較早,可以選用的優質技術並不多,Wasm在當時還未誕生(2015年6月Wasm才算誕生),所以當初Gavin博士還在以太坊擔任CTO時,在設計以太坊的時候,他們試圖不偏離世界當時所熟悉的東西太遠,也就是比特幣。EVM的問題在於它是一種非常固執己見的設計,因為它源自一種已經非常固執的設計,也就是比特幣的指令碼設計。

由此也可以看出,EVM算是時代的產物,也會受制於當時的時代背景和技術背景,並不是最優解。而隨著Wasm在網際網路領域做大做強逐漸完善,區塊鏈領域的技術達人們也在嘗試把這個更加優秀的技術運用到區塊鏈上了。這也是為什麼比較新興的公鏈會更多的支援Wasm,然後以相容的形式對接EVM了。

EVM可能以怎樣的形式轉換到Wasm上

1

對於以太坊等EVM生態來說會是怎麼轉換的?

首先我們看以太坊會如何從EVM遷移到eWASM上,而這繞不開的是討論以太坊2.0的更新,按照以太坊開發團隊公佈的程序,隨著以太坊2.0的實現,eWASM將會佈局到新的以太坊使用環境中,以獲取更快速、更便捷和更具包容性的開發。

而較早前,eWASM團隊已經給出了其具體的設計目標:構建EVM轉譯器,以eWASM合約形式新增計量注入器,併發布明確詳細的規範:以太坊介面、eWASM合約語義以及為solc編譯器構建一個eWASM後端,同時提供C語言和Rust語言的相應指令和庫,以支援智慧合約編寫。

當然,像EOS這樣的生態早已進入了Wasm的懷抱,而像Tron和Cardano這樣的公鏈也在走向Wasm的路上。

2

對於EVM和Wasm都支援的波卡來說是怎麼轉換的?

波卡原生支援Wasm技術,隨後原本就十分熟悉以太坊的他們自然也明白EVM還是有許多優點的,比如已經形成網路效應的EVM生態擁有眾多開發者和應用,這些都是寶貴的資源,必須妥善運用起來。

在2020年,Parity開發了相容以太坊EVM的Substrate模組以及相容層Frontier,從而允許EVM智慧合約與Substrate其他的模組進行互動。使用者也可以直接在Substrate上部署Solidity智慧合約,同時使用Web3 RPC的工具(如Metamask和Truffle)與鏈上應用進行互動。

所以,波卡上基於Substrate的鏈可以同時擁有兩個模組,一個是EVM-Contracts 模組(用於執行原始Solidity/EVM程式碼),另一個是Substrate-Contracts模組(用於執行Solidity/Wasm或Ink! Wasm程式碼)。兩者之間可以互操作,甚至可以將訊息釋出到橋接過來的單獨的Parity-Ethereum鏈上,或者如果部署為平行鏈,則可以傳播到包括以太坊主網在內的更廣闊的波卡社羣。

相容並且可以互動,便可以讓波卡順利完成EVM到Wasm的過渡和迭代。

3

Patract如何加速EVM轉換到Wasm

Parity是波卡的主要開發團隊之一,他們的主要工作在於Substrate和Polkadot,因此在智慧合約的部分工作相對而言沒有很多。而在Wasm合約部分,儘管波卡已經選擇了一個更優質的Wasm技術,但是Wasm合約開發者距離合約平臺之間仍然有較大的鴻溝,因此Patract Labs便致力於成為連線合約開發者與合約平臺之間的橋樑。

Patract Labs(https://patract.io/zh)是專注于波卡Wasm合約技術的實驗室,目前受到波卡議會和國庫的支援,先後為開發者推出數十款應用性強、技術超前的免費全套Wasm合約開發工具和服務,包括合約測試鏈、AS合約語言、合約開發腳手架、合約執行沙盒、波卡API服務、零知識證明支援、合約庫、監控臺、SDK、IDE等。

並聯合Parity和社羣平行鏈改進合約模型、合約語言和開發工具等,推動成立Wasm合約開放平臺——Patract Open Platform(https://open.patract.io)。透過這個平臺將波卡生態內有意願加入到Wasm合約生態的優秀的平行鏈或應用團隊匯聚一起,展示其Wasm合約的具體實踐和技術創新,提供市場和技術支援。

Patract Open Platform的成立不僅僅是提供底層設施和技術支援,Patract Labs還將透過Wasm合約技術,進一步探索波卡生態在未來產生的無限可能性。例如,以太坊合約採用EVM虛擬機器和Solidity語言,導致無法低成本開發複雜合約,如果執行高頻複雜度高的合約,交易成本將大幅上升,執行效率低下,對於像DeFi這樣的領域就有非常大的侷限性。對此,Patract Open Platfrom將從合約模型、合約標準(類似ERC20業務標準)、Runtime介面定製三個方向進行探索。

為什麼說波卡會是公鏈的常青樹

1

波卡獨特的功能奠定其位置

波卡的角色決定了它不是與一般公鏈做競爭,而是更好地為各個公鏈做跨鏈互動的底層支撐。如當下知名的公鏈比特幣、以太坊、BSC、Cosmos、Near等等,都是可以透過轉接橋或平行鏈等形式接入波卡。

而這些專案分別代表了不同時期,不同技術代表的公鏈,這已經驗證了波卡是一個可以作為能伴隨區塊鏈技術更迭的長期存在的基礎設施。

如今,各公鏈百家爭鳴,也有一些如Terra這樣基於Cosmos的應用鏈也大放異彩,我們已經可以明確區塊鏈的未來一定是多鏈的,那麼註定未來的發展一定會是“鐵打的波卡,流水的公鏈”。

2

波卡天然優勢

波卡的創新設計,使得它獲得了在升級和迭代底層技術方面其他公鏈所不具有的特性。

眾所周知,公鏈進行升級必須要透過硬分叉來實現,而波卡由於在設計之初就定位為更底層的元協議,因此波卡升級無需硬分叉。這就使得波卡在迭代升級上就非常的容易,也更利於波卡自身的進化。

另外,波卡背後有一個劃時代的發明——可以一鍵發鏈的Substrate框架,基於這個框架可以迅速構建一條區塊鏈,而在這個框架中你可以將許多現成的功能模組新增到自己所構建的區塊鏈中,就像組裝電腦一樣簡單。這其中就有支援EVM的模組,那麼同理可得,如果有更新的技術需要迭代,波卡也可以透過將這樣的技術整合到Substrate框架中,從而讓自己的生態也能相容新技術。

這邊是讓波卡能夠時刻保持最前沿技術的原因之一,也是為什麼我們說波卡會是常青樹的理由之一。

3

波卡會有迭代技術的經驗

波卡相容EVM又支援Wasm,波卡的許多生態專案也是兩者皆有。目前,波卡已經有一套完整的方案,用於EVM切換到Wasm上,意味著波卡已經探索出一條能夠成功從老技術EVM迭代到新技術Wasm的路徑。那麼,當未來如果出現比Wasm更先進的技術,波卡可以復刻EVM到Wasm的正規化轉換,從而讓Wasm再轉換到新技術上。

用一個不是那麼準確但又神似的比喻來形容這個過程,好比是我們有一個多卡多待的手機,可以同時插一個支援3G的電話卡和一個支援4G的電話卡,我們的手機可以享受兩個卡的功能,並且可以互相相容。但是有新技術出現時,波卡的迭代就很容易,可以把支援新技術5G的電話卡插入手機中,我們可以兼顧以前的老技術的同時享受新技術,而隨著時間的推移,老技術的3G不怎麼用了,變成長期用4G和5G,這樣就做到了平滑的技術更迭。

有如此強大的可擴充套件性,波卡便有了不斷迭代進化的可能性,不用擔心波卡的技術會落後,也無需擔心波卡升級很困難,這些都是支援波卡常青的原因。

後記

波卡雖然作為常青樹,不用太擔心技術迭代的問題,但是波卡生態非常巨大,光靠波卡官方肯定是不夠的。所以,許多圍繞著波卡生態在做努力建設的一些組織,正在用自己的方式加速波卡生態的發展。

比如,為了讓波卡有更多平行鏈專案誕生,一個專為開發者準備的最基本的節點環境是必不可少的,Patract就啟動了一條Jupiter平行鏈測試網,並於8月上線了平行鏈跨鏈轉賬,能夠將Westend(波卡測試網)與Jupiter的代幣互相轉換,以便更好的讓開發者進行測試。

另外,Patract還開發完成了基於JavaScript的自動化測試環境Redspot開發腳手架。Europa合約沙盒環境已經式進入生產可用階段,與Redspot一致進入長期維護。Elara API服務的官網已經開發完成,Elara v1.0對於平行鏈節點已支援Statemine,Karura,MoonRiver,Bifrost。開發者可基於Metis合約標準庫構建常規DAPP。Ask!合約語言已經可以用於實驗性質的環境下,透過AssemblyScript編寫ERC20、ERC721這類複雜合約。

而為什麼Patract以及我們Polkadot生態研究院等組織願意深耕波卡生態,也離不開對波卡創始人Gavin的初心的認同——未來一定是多鏈的。

而波卡的技術創新與穩紮穩打也確實在逐步實現這個願景,波卡確實值得我們託付夢想。所以,波卡雖然發展慢,但足夠穩,穩到可以見證和陪伴許多公鏈的興衰,我們不妨坐上這趟觀光車,靜看區塊鏈技術的前行。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读