從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。

EVM是什麼?

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

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

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

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上

範式轉換是什麼?

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

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

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

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

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!等。

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上

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

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

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

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

對於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的過渡和迭代。

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接口定制三個方向進行探索。

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

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

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

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

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

波卡天然優勢

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

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

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

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

波卡會有迭代技術的經驗

波卡兼容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的初心的認同——未來一定是多鏈的。

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

Total
0
Shares
Related Posts