時間:2023-06-17|瀏覽:274
EVM是一種輕量級虛擬機(jī),用于在以太坊網(wǎng)絡(luò)上運(yùn)行各種智能合約。它不同于傳統(tǒng)的操作系統(tǒng),例如只能在一臺機(jī)器上運(yùn)行的Windows。EVM是現(xiàn)有操作系統(tǒng)的“鏡像”,用以模擬本地操作系統(tǒng),但它又是獨(dú)立運(yùn)行的,不對真正的系統(tǒng)產(chǎn)生影響。
使用EVM,同一個平臺可以在許多不同的操作系統(tǒng)和硬件架構(gòu)上運(yùn)行。這樣的特性使得虛擬機(jī)適用于像以太坊這樣的分布式網(wǎng)絡(luò)。EVM可以模擬在物理CPU上完成的功能,并實現(xiàn)以太坊網(wǎng)絡(luò)上的大部分功能。
EVM具有如下特點:
確定性:一個確定的程序能夠向同一組輸入提供相同的輸出,而與它執(zhí)行相同代碼的次數(shù)無關(guān)。在以太坊網(wǎng)絡(luò)中,DAPP一次能夠處理數(shù)百萬美元的交易,不同的用戶需要知道代碼在執(zhí)行的每個階段是如何反應(yīng)的。
隔離性:智能合約需要在完全隔離的環(huán)境中運(yùn)行,以確保如果智能合約發(fā)生黑客攻擊或bug,不會影響底層協(xié)議的其余部分。
可終止性:以太坊智能合約是圖靈完備的。因此,只要有足夠的時間和資源,它理論上能夠解決任何問題。智能合約應(yīng)該附帶終止機(jī)制,因為很難確定合約是否會在給定的時間限制內(nèi)完成所有操作。以太坊使用gas限制來終止超出執(zhí)行額度的智能合約。
EVM的功能:
它是以太坊網(wǎng)絡(luò)的去中心化式處理單元,每個交互、交易和智能合約執(zhí)行都只能在這里發(fā)生。獲取并執(zhí)行指令,然后通過給定的指令分派器對操作數(shù)進(jìn)行解碼。負(fù)責(zé)所有數(shù)據(jù)結(jié)構(gòu),如操作數(shù)、數(shù)據(jù)處理和指令。跟蹤網(wǎng)絡(luò)組件,如存儲狀態(tài)、塊信息和世界狀態(tài)。負(fù)責(zé)為以太坊網(wǎng)絡(luò)上不同的智能合約創(chuàng)建運(yùn)行環(huán)境。
EVM面臨的挑戰(zhàn):
EVM的速度并不快,它可以處理很多不同的操作,但是它的操作碼規(guī)范還沒有發(fā)展到可以處理不同的需求。支持的語言有限。
什么是WebAssembly(WASM)?
WASM是一種可以在現(xiàn)代瀏覽器上執(zhí)行的新型代碼,由萬維網(wǎng)聯(lián)盟(W3C)創(chuàng)建和定義。本質(zhì)上,WASM(通常稱為以太坊2.0)具有EVM的所有功能,并附帶額外功能。
為網(wǎng)絡(luò)而構(gòu)建:
WASM由來自谷歌、微軟和蘋果等大型科技公司的各種工程師所組成的開發(fā)團(tuán)隊構(gòu)建。因此,這些工程師必須確保WASM與他們的引擎和協(xié)議相兼容。
設(shè)計時考慮到一系列特定的目標(biāo):
快速、高效、可移植:通過利用常見的硬件能力,WASM代碼在不同平臺上能夠以接近本地速度運(yùn)行。
可讀、可調(diào)試:WASM是一門低階語言,但是它有一種人類可讀的文本格式,這允許通過人工來寫代碼、看代碼以及調(diào)試代碼。
保持安全:WASM被限制運(yùn)行在一個安全的沙箱執(zhí)行環(huán)境中。像其他網(wǎng)絡(luò)代碼一樣,它遵循瀏覽器的同源策略和授權(quán)策略。
不破壞網(wǎng)絡(luò):WASM的設(shè)計原則是與其他網(wǎng)絡(luò)技術(shù)和諧共處并保持向后兼容。
EVM vs WASM
速度
EVM是一個萬能工具,但并非大師。EVM如何處理編譯就是一個很好的例子。本機(jī)引擎難以找到執(zhí)行某些操作的最佳路徑,最終影響EVM的總體吞吐量。EVM只能處理256位字節(jié)碼,這意味著小于256位的字節(jié)碼必須先轉(zhuǎn)換為256位格式,然后才能反饋給EVM。EVM的可擴(kuò)展性問題很明顯。
WASM直接轉(zhuǎn)換為編譯代碼,這使它能夠更快地加載,同時增加每個塊處理的交易數(shù)。
預(yù)編譯
EVM依賴于預(yù)編譯(預(yù)編譯合約)。當(dāng)發(fā)出預(yù)編譯調(diào)用時,EVM將執(zhí)行預(yù)定義的本機(jī)代碼,然后顯示結(jié)果。這些預(yù)編譯是特定于某個協(xié)議的基本操作,如簽名方案和哈希。盡管預(yù)編譯可以在不消耗大量gas的情況下提高密碼計算的效率,但也會帶來一些問題。新預(yù)編譯的引入通常要求網(wǎng)絡(luò)進(jìn)行系統(tǒng)范圍的硬分叉。
WASM消除了以太坊對預(yù)編譯合約的依賴。因為WASM非常高效,開發(fā)者可以創(chuàng)建高效快速的智能合約,而不用擔(dān)心潛在的硬分叉。
靈活性/互操作性
WASM支持更多的語言,并且提供了比EVM更廣泛的工具集。WASM支持傳統(tǒng)的語言,如Rust、C和C++。WASM還受到本機(jī)JavaScript引擎的支持,如Google的V8引擎(Node.js和基于Chromium的瀏覽器)、Microsoft的Chakra引擎(MicrosoftEdge)、Mozilla的Spidermonkey引擎(Thunderbird和Firefox)。
EVM與WASM互相調(diào)用?
如上所述,EVM和WASM具有不同的特點,如果能實現(xiàn)兩者的相互調(diào)用,將對開發(fā)者更為友好。
萬向區(qū)塊鏈推出的“萬納鏈”,支持EVM虛擬機(jī)和WASM虛擬機(jī)的相互調(diào)用,同時對WASM進(jìn)行了創(chuàng)新優(yōu)化。萬納鏈支持WASM虛擬機(jī)意味著開發(fā)智能合約不再局限于Solidity一門語言,同時可以使用多種高級語言,例如C/C++/Rust等來編寫智能合約,最后編譯成WASM字節(jié)碼就可以在萬納鏈上運(yùn)行,極大地降低了入門門檻和開發(fā)成本,同時也提高了智能合約的安全性。
萬納鏈支持隱私計算,隱私合約同樣支持高級語言開發(fā),編譯成「llvmir」中間語言執(zhí)行。隱私合約的輸入數(shù)據(jù)保存在數(shù)據(jù)節(jié)點本地,由數(shù)據(jù)節(jié)點在鏈下以安全多方計算方式進(jìn)行隱私計算,并提交計算結(jié)果到鏈上。