區(qū)塊鏈系統(tǒng)中的EOS-VM是什么
EOS-VM是EOS.IO成為通用區(qū)塊鏈協(xié)議的重要基石,同時超越了EOS.IO自身,將會成為事實上的區(qū)塊鏈虛擬機(jī)技術(shù)標(biāo)準(zhǔn),甚至?xí)⒁蕴缓筒ㄉ性谄鸩诫A段的虛擬機(jī)開發(fā)扼殺在襁褓中。
0、前言
EOS.IO開發(fā)團(tuán)隊 Block.One于2019年6月1日發(fā)布了全新的EOS-VM。
EOS原力團(tuán)隊在經(jīng)過大規(guī)模測試后認(rèn)為,EOS-VM 將成為區(qū)塊鏈行業(yè)使用率最高的 VM,也將率先成為區(qū)塊鏈行業(yè) VM 的事實標(biāo)準(zhǔn)。
我們在《EOS.IO 將迎來史上最復(fù)雜硬分叉升級》一文中曾經(jīng)講過,多個重要的分支都在積極開發(fā)中,而 EOS-VM 就是一個重要性不亞于 1.8.0 的分支。該分支從 2018 年 7 月份就開始了,從提交記錄上來看,早期的 EOS-VM 并沒有特別緊湊的開發(fā)計劃。然而從 2019 年開始,經(jīng)過了一系列密集的開發(fā),初步完成了今天我們所看到的 EOS-VM 項目。
如果說 EOSIO1.8.0 版本讓我們看到了 Block.one 在 EOS.IO 上的決心,那么 EOS-VM 可以讓我們一窺 Block.one 在區(qū)塊鏈行業(yè)的野心。
1、什么是VM
VM全稱為Virtual Machine,在區(qū)塊鏈語境下可以理解為智能合約的運(yùn)行環(huán)境。
我們可以將智能合約類比于互聯(lián)網(wǎng)中的 HTML,區(qū)塊鏈系統(tǒng)可以看作操作系統(tǒng),那么 VM 則是瀏覽器,各種基于智能合約的 DAPP 就是互聯(lián)網(wǎng)中的各種網(wǎng)站。
以太坊完成了區(qū)塊鏈系統(tǒng)中首個系統(tǒng)的智能合約支持,其 EVM 虛擬機(jī)也是早期智能合約開發(fā)者的主流開發(fā)環(huán)境,同時有非常多的項目都借鑒了以太坊的 VM,如 TRX 的 TVM。
但是 EVM 有其局限性,虛擬機(jī)效率相對成熟的虛擬機(jī)系統(tǒng)來說極其低下,難以支持更加復(fù)雜的應(yīng)用和環(huán)境。
成熟的虛擬機(jī)系統(tǒng)是一個由一系列龐大的項目構(gòu)成的體系,事實上,在目前的環(huán)境下,從零開始實現(xiàn)一個完整成熟的虛擬機(jī)系統(tǒng)是非常困難的,同時也是沒有必要的,因為對于這樣一個龐大的工程項目,從零開始意味著開發(fā)者和社區(qū)要承受大量的兼容和學(xué)習(xí)成本,最好的方式是基于現(xiàn)有成熟的虛擬機(jī)標(biāo)準(zhǔn)來開發(fā)適用于區(qū)塊鏈項目的虛擬機(jī)實現(xiàn)。
因此,大多數(shù)區(qū)塊鏈項目都選擇使用現(xiàn)有成熟的虛擬機(jī)實現(xiàn),目前可以說最適合的莫過于 WebAssembly 虛擬機(jī),除了 EOS.IO 之外,polkadot 也選擇基于 WebAssembly,而以太坊也在開發(fā)基于 WebAssembly 的 ewasm 項目。
對于區(qū)塊鏈領(lǐng)域來說 , 無論是不是「The Lesser Evil」,WebAssembly 已經(jīng)成為非常重要的一部分了。
作為一個高性能的去中心化智能合約平臺,EOSIO 中所使用的虛擬機(jī)實現(xiàn)是整個項目中非常重要的一部分,在閱讀早期的 EOSIO 實現(xiàn)代碼時會發(fā)現(xiàn),在調(diào)用虛擬機(jī)時,EOSIO 實現(xiàn)代碼中少有的做了很嚴(yán)格的封裝,以此來隱藏虛擬機(jī)實現(xiàn)的細(xì)節(jié),可以見得 EOSIO 項目將會在虛擬機(jī)方面做持續(xù)重大的改進(jìn) 。
// EOSIO chain 實現(xiàn)中少有的接口封裝
class wasm_interface {
public:
enum class vm_type {
wavm,
wabt
};
。..
private:
unique_ptr《struct wasm_interface_impl》 my;
。..
};
從最早使用的 wavm 虛擬機(jī),到后面支持的 wabt 虛擬機(jī),Block.one 團(tuán)隊一直在改進(jìn)虛擬機(jī)的支持,也在為多虛擬機(jī)兼容作準(zhǔn)備,最終 EOSIO 發(fā)起了更高的挑戰(zhàn),開發(fā)出了全新的 EOS-VM,最為 EOSIO 使用的虛擬機(jī)實現(xiàn)。
如果說 EVM 是一個區(qū)塊鏈虛擬機(jī)的話,那么 EOS-VM 則會是第一個可大規(guī)模商用的虛擬機(jī)。
2、EOS-VM 是什么
我們先來看看 EOS-VM 到底是什么,EOS-VM 是一個區(qū)塊鏈系統(tǒng)專用的 wasm 運(yùn)行時。
在區(qū)塊鏈系統(tǒng)中,合約代碼會被編譯成字節(jié)碼的形式,這些字節(jié)碼不能直接在操作系統(tǒng)上運(yùn)行,需要一個執(zhí)行器來執(zhí)行這些合約,在軟件體系中,可以把這些執(zhí)行器視為一個抽象的「機(jī)器」,EOS-VM 就是這樣一個執(zhí)行器。
EOS-VM 主要做四件事:
首先 ,EOS-VM 負(fù)責(zé)加載和解析編譯后的智能合約字節(jié)碼,也就是 wasm;
其次,EOS-VM 負(fù)責(zé)在字節(jié)碼運(yùn)行過程中為其分配資源,當(dāng)然對于智能合約來說,可用的資源就是內(nèi)存;
再次,EOS-VM 負(fù)責(zé)向智能合約的字節(jié)碼提供虛擬機(jī)外的 API 調(diào)用功能;
最后,EOS-VM 負(fù)責(zé)執(zhí)行字節(jié)碼來計算智能合約運(yùn)行的結(jié)果。
在 EOS-VM 中 eosio::vm::backend 類是整個虛擬機(jī)系統(tǒng)調(diào)用的入口,在 tools 目錄下有兩個使用 EOS-VM 虛擬機(jī)的測試工具,想要詳細(xì)了解 EOS-VM 實現(xiàn)的讀者可以通過這些作為入口來閱讀 EOS-VM 的代碼。
int main(int argc,char**argv) {
。..
// 設(shè)置看門狗 , 限制運(yùn)行時間為秒
watchdog《std::chrono::nanoseconds》 wd;
wd.set_duration(std::chrono::seconds(3));
try {
。..
// 加載 wasm 字節(jié)碼
auto code = backend_t::read_wasm( argv[1] );
// 創(chuàng)建執(zhí)行環(huán)境
backend_t bkend( code );
wd.set_callback([&](){
bkend.get_context().exit();
});
。..
// 執(zhí)行
bkend.execute_all(&wd);
} catch ( 。.. ) {
}
return 0;}
這里說的 EOS-VM 的主要工作,但如果只是這些的話,那其實和 wavm、wabt 沒什么區(qū)別了,在完成基本的必要工作之外,EOS-VM 針對區(qū)塊鏈應(yīng)用場景做了一些重要的改進(jìn)和優(yōu)化,下面我們來結(jié)合 EOS-VM 的介紹文檔以及代碼實現(xiàn)來看看 EOS-VM 有哪些重要的改進(jìn)。
3、EOS-VM 有哪些重要的改進(jìn)
EOS-VM 針對區(qū)塊鏈應(yīng)用場景作了很多的改進(jìn),這些改進(jìn)對于智能合約開發(fā)者來說是最好的禮物。
下面我們先結(jié)合 EOS-VM README 文檔看看有哪些改進(jìn),再結(jié)合現(xiàn)有的 EOS-VM 代碼具體看一下 EOS-VM 是如果做到的。
在早期 EOS-VM 的 README 中 ,Block.one 列舉了以下的改進(jìn) :
1. SaTIsfying the needs of a blockchain.
2. Security built into the framework.
3. Performance centric design.
4. Light weight and easy to integrate soluTIon.
5. Effortless extendability.
目前的 README 中改為了對于非開發(fā)者更加易懂的描述 :
· Extremely Fast ExecuTIon (6x faster than WABT)
· Extremely Fast Parsing/Loading (20x faster than WABT)
· Efficient TIme Bound Execution
· Deterministic Execution (Soft Float & Hardware Floating Point options)
· Standards Compliant
· Designed for Parallel Execution
· C++ / Header Only
· Simple API for integrating Native Calls
我們來逐條分析 :
3.1 滿足區(qū)塊鏈場景下的需求
首先 Block.one 對 EOS-VM 的定位是「A VM for Blockchain」,這意味著 EOS-VM 中在 WebAssembly 的基礎(chǔ)上添加了很多區(qū)塊鏈所需的特定功能。
目前主要是三方面:
首先是浮點(diǎn)數(shù)的支持。對于浮點(diǎn)數(shù),很多開發(fā)者往往片面的認(rèn)為其運(yùn)算是不精確的,無法用于區(qū)塊鏈系統(tǒng)。實際上并非如此,只是對于一些不同的硬件中,因為各種各樣的歷史原因,硬件中固化的浮點(diǎn)數(shù)運(yùn)算有一些差異,解決這一點(diǎn)最好的方式是使用 softfloat 庫,不使用機(jī)器硬件提供的浮點(diǎn)數(shù),這樣不同的硬件機(jī)器上,浮點(diǎn)數(shù)運(yùn)算的結(jié)果都是相同的了。當(dāng)然這里 Block.one 也提到,如果不在乎所有平臺上保持浮點(diǎn)數(shù)運(yùn)算的確定性,則可以使用基于硬件的浮點(diǎn)數(shù)運(yùn)算,這樣效率會比使用 softfloat 快很多,這種情況一般是節(jié)點(diǎn)硬件機(jī)器會保持統(tǒng)一的狀態(tài)下使用的。
在 EOSIO 中其實也集成了 softfloat 庫,但是之前的實現(xiàn)是在鏈中嵌入的,原生的虛擬機(jī)中本身不支持,現(xiàn)在并入虛擬機(jī)實現(xiàn),可以降低其他區(qū)塊鏈?zhǔn)褂?EOS-VM 時的開發(fā)成本。
其次是 EOS-VM 增加了 watchdog 機(jī)制以確保運(yùn)行字節(jié)碼的運(yùn)行時間限制,這個類似看門狗的機(jī)制,會在細(xì)粒度上對合約進(jìn)行資源使用限制。
這一點(diǎn)很重要 , 以至于后期的介紹文檔中要單獨(dú)分出一節(jié)來描述。
如果看過 EOS 現(xiàn)在的代碼,會發(fā)現(xiàn)有很多大量雜亂的代碼在處理合約執(zhí)行超時的問題,對于一個圖靈完備的智能合約來說,最大的困難在于我們?nèi)绻粓?zhí)行一遍其合約,就無法知道其執(zhí)行消耗,所以 EOS 中需要邊執(zhí)行智能合約邊判定其消耗時間,對于 EOS 鏈的環(huán)境來說 VM 是個黑盒,所以如果在 VM 外來進(jìn)行合約執(zhí)行時間判定的話就會非常困難,而 EOS-VM 在這方面提供了內(nèi)置支持,相關(guān)的實現(xiàn)就會非常簡單,也會避免這方面出現(xiàn)的問題。
最后是一些虛擬機(jī)執(zhí)行時的邊界限制,這些邊界限制乍看上去是一些功能的限制,但是在區(qū)塊鏈應(yīng)用場景下,這些限制不會帶來實際功能的限制,反而基于這些斷言,EOS-VM 可以得到極大的優(yōu)化。
3.2 內(nèi)置的安全性支持
支持智能合約的區(qū)塊鏈系統(tǒng)可以視作一臺公用的計算機(jī),而公用意味著必須對使用者進(jìn)行限制。如果使用者可以毫無限制的運(yùn)行自己的代碼,那么會帶來很大的安全性問題,對于公鏈來說,這是不能接受的。
這里的安全性問題主要是兩方面:代碼行為的安全性和代碼消耗的有界性。
首先,EOS-VM 通過內(nèi)置類型來保證類型的安全性,并且通過可選的分配器來使用系統(tǒng)提供的機(jī)制來保證沙箱性。
另外,上文提到的 watchdog 機(jī)制以確保運(yùn)行字節(jié)碼的運(yùn)行時間限制。對于公鏈來說,如果沒有有效的機(jī)制,這一點(diǎn)往往會引起公鏈的安全問題。EOSIO 之前就出現(xiàn)過基于延遲交易引發(fā)的阻塞攻擊問題,這個問題本質(zhì)上就是沒有有效細(xì)致的界定資源使用的問題。相應(yīng)的以太坊也多次出現(xiàn)類似的問題,以太坊早期的數(shù)次硬分叉都是為了解決這類問題。
最后,EOS-VM 在任何時候都不會觸發(fā)無限制的遞歸或循環(huán),嚴(yán)格限制某些 WASM 有意或者無意導(dǎo)致的崩潰或無限掛起機(jī)器的情況。
這些內(nèi)置的安全性支持將會大大提高鏈的安全性,同時也會提供一個可控的安全性保證。
3.3 面向高性能的設(shè)計
在很多時候,特化就是最好的優(yōu)化。
實際上,如果完全兼容 WebAssembly,那么 EOS-VM 優(yōu)化的空間并不大。但是對于區(qū)塊鏈的需求場景,很多 WebAssembly 的設(shè)計并不需要,EOS-VM 基于這一點(diǎn)做了大量的特化,同時意味著性能上,EOS-VM 也得到了非常大幅度的優(yōu)化。
EOS-VM 性能主要得益于對其內(nèi)置化的類型的優(yōu)化,EOS-VM 內(nèi)置了絕大多數(shù)合約需要的數(shù)據(jù)類型,對于這些類型 EOS-VM 就可以對其一一優(yōu)化,特別是 variant,這個類型其實并不是一個原生的功能。如果直接使用類似 union 的話,會造成很大的類型安全問題,使用 variant,雖然在實現(xiàn)時得到了很好的安全性和易用性保證。但是如果不將其集成入虛擬機(jī)層,那么其復(fù)雜的實現(xiàn)會帶來很大的性能損耗。
類似的還有 vector,如果閱讀現(xiàn)在的 EOS 系統(tǒng)合約,會發(fā)現(xiàn)大量使用了 vector,誠然對于合約設(shè)計來說,使用 vector 是非常便捷的,但是很多對性能特別敏感的開發(fā)者可能會對此感到非?!覆话病?,如今 VM 直接集成 vector,可以料想后續(xù)這些開發(fā)者就可以「更愉快的」使用 vector 了。
現(xiàn)在的 EOS 合約開發(fā)需要依賴一個規(guī)模不算小的基礎(chǔ)庫,這意味著每個使用這些基礎(chǔ)功能的合約都要集成其實現(xiàn)代碼,將大量的基礎(chǔ)庫代碼帶入 wasm 層,如今 EOS-VM 在虛擬機(jī)的實現(xiàn)層植入這些基礎(chǔ)類型,性能優(yōu)化空間自然得到很大提高。
3.4 輕量級易于植入的架構(gòu)
EOS-VM 是純頭文件的,這意味著 EOS-VM 可以被嵌入進(jìn)幾乎所有的 C++項目中。
同時,EOS-VM 在設(shè)計做了特別的處理,使得 EOS-VM 可以很好的適應(yīng)多線程環(huán)境,C++多線程編程一度是個「深坑」,構(gòu)建一個可以在并發(fā)環(huán)境下安全運(yùn)行的庫很多時候需要避免很多問題,EOS-VM 在這個問題上做了很多準(zhǔn)備,可以避免重蹈像 std::string 在多線程環(huán)境下那樣的「覆轍」。
純頭文件的優(yōu)勢還有很多,在這個方面 EOS-VM 已經(jīng)很像在很多方面得到廣泛應(yīng)用的 LUA,后者同樣以輕量級的運(yùn)行時著稱,可以預(yù)見,未來會有更多的非 EOS 甚至非區(qū)塊鏈項目使用 EOS-VM。
3.5 高度可擴(kuò)展性
EOS-VM 擁有一套精細(xì)設(shè)計的結(jié)構(gòu),從某些方面上來講,EOS-VM 要比 EOSIO 的代碼結(jié)構(gòu)好得多。
EOS-VM 的設(shè)計中充分考慮了其拓展性,對于一個 VM 來說其主干結(jié)構(gòu)幾乎沒有什么需要拓展和修改的地方,因為其功能就是上面提到的四件事。
但是對于不同的應(yīng)用場景,其字節(jié)碼格式和功能必然需要拓展和修改,EOS-VM 在響應(yīng)的地方都做了設(shè)計,其中深度應(yīng)用了 visitor 模式,使得在不改變類架構(gòu)的前提下也可以很容易的為整個 VM 添加功能。
在很多人眼里,一個良好的架構(gòu)似乎沒有什么作用,畢竟你并不能把「架構(gòu)良好」看作一個「前無古人」的新特性,但是對于項目開發(fā)而言,良好的架構(gòu)會決定著整個項目后續(xù)的潛力。
總的來說,閱讀現(xiàn)在的 EOS-VM 項目,會有一種類似 lua 或者 redis 項目的感覺,整個項目規(guī)模不大,結(jié)構(gòu)緊湊,代碼很干凈。
雖然大量使用 C++特性會讓一些初學(xué)者感到困惑,但并不會影響到對功能的理解,我們認(rèn)為 EOS-VM 在未來將會在更廣泛的領(lǐng)域中發(fā)揮更大的作用。
4、EOS-VM 對 EOSIO 生態(tài)的影響
EOSIO 作為一個開源軟件,社區(qū)基于 EOSIO 啟動了不同功能和治理理念的 EOS 網(wǎng)絡(luò)、EOS、EOS 原力、ENU、Telos、worbli,BOS 等網(wǎng)絡(luò)均在 Block.one 的技術(shù)支持下發(fā)展,而本次 VM 的改革將使得所有基于 EOSIO 啟動的公有鏈?zhǔn)芤妗?/p>
從現(xiàn)有的實現(xiàn)來看,EOS-VM 將會盡量與當(dāng)前 EOSIO 虛擬機(jī)實現(xiàn)保持兼容,出現(xiàn)不兼容的地方,也可以基于 abi 中的 version 來進(jìn)行區(qū)別。未來即使出現(xiàn)大量和 EOS 原力一樣對 EOSIO 底層代碼進(jìn)行了大量改進(jìn)的區(qū)塊鏈,也可以輕松兼容。
未來一段時間之內(nèi),基于 EOSIO 鏈的公鏈的開發(fā)者可以集成 EOS-VM 到鏈中,同時保持原有 wasm 支持。
引入 EOS-VM 可以為鏈帶來很多好處和影響。
4.1 節(jié)約用戶資源消耗
如上文所述,使用 EOS-VM 可以提升鏈的性能,用戶使用基于 EOS-VM 運(yùn)行的智能合約可以節(jié)省大量的鏈上資源消耗。
在基于 EOSIO 的公鏈中往往主要有三類資源:CPU、NET 和 RAM,CPU 主要由合約運(yùn)行消耗的實際時間來結(jié)算,NET 主要與交易的大小相關(guān),而 RAM 主要是基于合約帶來的狀態(tài)變換所使用的內(nèi)存大小來決定的。
其中,現(xiàn)階段 EOS-VM 主要將會節(jié)省用戶 CPU 資源,這方面也是現(xiàn)在 EOSIO 網(wǎng)絡(luò)主要的資源限制,對于 EOSIO 網(wǎng)絡(luò)來說,NET 資源消耗往往固定,而 RAM 可以通過不斷的增發(fā)來激勵節(jié)點(diǎn)升級,這樣就可以在網(wǎng)絡(luò)上增加 RAM 的供給。
從硬件的角度來說,目前的服務(wù)器性能所支持的 RAM 升級空間還是非常寬裕的,但是對于 CPU,目前的限制很大,正如 BM 在電報群中所發(fā)的「牢騷」,英特爾并沒有給 EOS 造出 100 太赫茲的 CPU,當(dāng)然這只是開的玩笑,但是確實當(dāng)前服務(wù)器 CPU 性能限制還是比較大的,對于服務(wù)器來說,近幾年主要是并行計算能力的提高,單核性能雖然也得到了一定程度上的提升,但依然顯得不足。
為 EOSIO 添加并行計算支持是一個比較長的過程,即使 EOSIO 可以支持并行計算,也會受單核計算性能限制,因為對于合約來說,其計算過程依然是單線程的,提升虛擬機(jī)效率,對基于 EOSIO 的鏈來說非常有用。
4.2 使得鏈具有更強(qiáng)的拓展性
EOS-VM 無論是代碼還是架構(gòu)都十分簡介明了,為了保持簡單和純頭文件化,Block.one 甚至沒有引入其「祖?zhèn)鳌沟?fc 庫,多數(shù)開發(fā)者只要簡單了解一下 wasm 字節(jié)碼的定義文檔,就可以沒有障礙的閱讀和理解 EOS-VM 的設(shè)計和代碼。
這樣,開發(fā)者可以很簡單的在 EOS-VM 的基礎(chǔ)之上進(jìn)行二次開發(fā),尤其對于一些基于 EOSIO 技術(shù)的鏈,開發(fā)者可以簡單的添加新的類型以滿足特定鏈的特殊需求。
4.3 更簡單的開發(fā)外圍工具
EOS-VM 是純頭文件的,這意味著 EOS-VM 可以被嵌入進(jìn)幾乎所有的 C++項目中,而且通過簡單的處理,EOS-VM 也可以被基于其他語言開發(fā)的項目中。
如 EOS-VM 中 tools 中的 interp,只需要不到 100 行代碼就可以構(gòu)建起 EOS-VM 的運(yùn)行時環(huán)境,這樣對于開發(fā)用于開發(fā) EOSIO 合約的工具非常有用。
很多 EOS 合約開發(fā)的初學(xué)者都會想要調(diào)試合約代碼,在以往這是幾乎不可能的,雖然新版的 cdt 中也提供了一個 native lib,但是這樣也無法完美的模擬合約的運(yùn)行環(huán)境。
雖然「好的代碼不是調(diào)出來的」,但是缺乏一個調(diào)試環(huán)境也會帶來一些麻煩。另一方面,我們也要考慮合約運(yùn)行時與現(xiàn)有開發(fā)工具的集成問題,而 EOS-VM 可以很好的滿足這一點(diǎn)。
通過 EOS-VM,未來 EOSIO 開發(fā)生態(tài)將會更加完善,開發(fā)效率將會大幅提高。
5、EOSIO 正在向真正的協(xié)議演進(jìn)
不知不覺中,EOSIO 的官網(wǎng) slogan 已經(jīng)從「最強(qiáng)大的去中心化應(yīng)用平臺」改為「build on chang,build on EOSIO」。同樣在 EOS-VM 的設(shè)計中,開發(fā)者已經(jīng)無法明顯感受到 EOSIO 和 DPOS 共識機(jī)制的存在,EOS-VM 的設(shè)計非常獨(dú)立。
如果一直關(guān)注 EOSIO 發(fā)展的話,會發(fā)現(xiàn) EOSIO 的合約層在逐漸的去 EOSIO 化,從像 eosio_assert 改為 check 這樣的改名,到 cdt 中完全去除 capi 的調(diào)用這樣的重構(gòu),目前的 EOS 合約開發(fā)中,開發(fā)者會越來越少的碰到「EOS」。
一個典型的例子就是不同 EOSIO 姊妹鏈間的合約移植,現(xiàn)在基于 cdt 的合約在不同的項目間的差別已經(jīng)越來越少,早期社區(qū)曾經(jīng)對像 enu 這樣由于大量不必要的改名所引發(fā)的不兼容表示非常困擾,但現(xiàn)在如果使用 cdt 工具,開發(fā)者幾乎感受不到 enu 改名所帶來的不兼容。
這一切都在意味著 EOSIO 正在向真正的協(xié)議演進(jìn)。
Block.one 團(tuán)隊在早期并不像其他項目一樣,急于構(gòu)建抽象的協(xié)議和形式化的黃皮書,而是以非常務(wù)實的態(tài)度進(jìn)行 EOS 的開發(fā),這也在一定方面上使得 EOSIO 這一公鏈的主網(wǎng)啟動要遠(yuǎn)遠(yuǎn)早于其他的「第三代」區(qū)塊鏈項目。
我們認(rèn)為 Block.one 團(tuán)隊不會一直在「埋頭造車」, 而是采用自底向上的思路,不斷的發(fā)展 EOSIO 生態(tài),使其向真正的協(xié)議演進(jìn),最終成為一個極具競爭力的區(qū)塊鏈協(xié)議事實標(biāo)準(zhǔn)。
6、Block.one 打響區(qū)塊鏈標(biāo)準(zhǔn)之爭的第一槍
長久以來,任何一個軟件的細(xì)分領(lǐng)域都在謀求技術(shù)標(biāo)準(zhǔn)的整合和統(tǒng)一,這樣的統(tǒng)一并非是由中心話組織去強(qiáng)制推行,而是通過軟件本身逐漸得到主流市場的認(rèn)可,最后成為事實上的技術(shù)標(biāo)準(zhǔn)。
而在區(qū)塊鏈 VM 領(lǐng)域,舊的虛擬機(jī)如 EVM 性能低下,單一功能的虛擬機(jī)無法承載復(fù)雜的智能合約,基于通用設(shè)計虛擬機(jī)將會成為未來主流區(qū)塊鏈項目的必需品,而這樣的區(qū)塊鏈項目目前唯一可選的只有 EOS-VM,EOS-VM 領(lǐng)跑行業(yè)一年多,將會成為最好的智能合約運(yùn)行環(huán)境的標(biāo)準(zhǔn),其行業(yè)地位將會類似于 ARM 在手機(jī)芯片行業(yè)的地位,甚至未來 ETH 的智能合約有望在 EOS-VM 上運(yùn)行。
甚至我們也可以大膽的假設(shè),EOS-VM 不會限于區(qū)塊鏈行業(yè),由于其優(yōu)異的設(shè)計和實現(xiàn),甚至?xí)挥糜谙裼螒蛞妗?u>數(shù)據(jù)庫、Web 框架這樣的傳統(tǒng)軟件開發(fā)領(lǐng)域。
7、加密社區(qū)的開源與技術(shù)標(biāo)準(zhǔn)壟斷
我們都知道,Block.one 在向社區(qū)募資時一直強(qiáng)調(diào)自己是一個開源組織,所募集的錢也均要用于開發(fā)開源的 EOSIO 軟件回饋社區(qū),也為加密經(jīng)濟(jì)社區(qū)帶來了大量的貢獻(xiàn)。
但 EOS-VM 與 Block.one 以往任何一個開源項目都不同 ,Block.one 罕見地對 EOS-VM 項目保留了其權(quán)利 , 這意味著這個項目不會像其他開源庫一樣僅僅是一個開源庫。保留權(quán)利這一動作與其募資時純粹的開源組織定位產(chǎn)生了一定的偏差,甚至可能會通過商業(yè)性質(zhì)的授權(quán)來限制其使用場景。
與傳統(tǒng)互聯(lián)網(wǎng)行業(yè)不同,加密經(jīng)濟(jì)的大部分技術(shù)都是開源的,無論是擴(kuò)容之爭和治理理念之爭均未涉及到技術(shù)標(biāo)準(zhǔn)層面,在開源的加密經(jīng)濟(jì)市場中出現(xiàn)一個志在壟斷的 VM 將帶來什么樣的影響,我們拭目以待。