WebAssembly和區(qū)塊鏈計(jì)算的未來(lái)區(qū)塊鏈

                  王林柯 2018-11-10 16:42
                  分享到:
                  導(dǎo)讀

                  WebAssembly和區(qū)塊鏈計(jì)算的未來(lái)

                  2013年提出的以太坊的概念成為了區(qū)塊鏈技術(shù)的一個(gè)主要擴(kuò)展,將其從一個(gè)P2P資金的去中心化結(jié)算層,轉(zhuǎn)變?yōu)橐粋€(gè)程序執(zhí)行的無(wú)信任層,為應(yīng)用程序和可編程資產(chǎn)開(kāi)創(chuàng)了一個(gè)全新的世界。

                  把自己概念化為一個(gè)“全球計(jì)算機(jī)”,以太坊的核心思想是很簡(jiǎn)單易懂的:把區(qū)塊鏈技術(shù)的信任最小化的天然屬性應(yīng)用到計(jì)算機(jī)程序輸出的共識(shí)上。也就是說(shuō),開(kāi)發(fā)者可以部署被稱(chēng)為“智能合約”的代碼,它是完全確定性的,輸出可以被所有和它進(jìn)行交互的角色所信任。

                  各種各樣非常好的想法在一開(kāi)始就被提了出來(lái),包括使用以太坊智能合約創(chuàng)建公平拍賣(mài)或者樂(lè)透彩票,創(chuàng)建預(yù)測(cè)市場(chǎng),去中心化交易所等等。這些用例中最廣為人知的是創(chuàng)建以太坊可編程token,這是各類(lèi)公司通過(guò)首次代幣發(fā)行籌集資金的一種流行的方式。

                  以太坊內(nèi)核實(shí)現(xiàn)了一個(gè)圖靈完備的虛擬機(jī),即以太坊虛擬機(jī)(簡(jiǎn)稱(chēng)EVM)。它定義了一套通用的、確定性的指令,程序可以被編譯成這些指令,并且可以在全世界任何一臺(tái)計(jì)算機(jī)上運(yùn)行。在EVM上執(zhí)行的每一個(gè)操作和程序需要被以太坊網(wǎng)絡(luò)中的每一個(gè)全節(jié)點(diǎn)運(yùn)行,意味著這臺(tái)“世界計(jì)算機(jī)”需要有一種內(nèi)建的機(jī)制來(lái)制止惡意占用(spam)攻擊。為解決這個(gè)問(wèn)題,EVM實(shí)現(xiàn)了gas(油費(fèi))的概念,可以理解為在這臺(tái)全球計(jì)算機(jī)上運(yùn)行每個(gè)基本操作需要消耗的“燃料”,這是需要預(yù)付的。

                  區(qū)塊鏈計(jì)算機(jī)是確定性的

                  圖靈完備意味著你可以在以太坊虛擬機(jī)上編寫(xiě)和運(yùn)行任何你能想到的程序,只要你能為它的所有執(zhí)行步驟支付足夠的gas。昂貴的操作,例如訓(xùn)練機(jī)器學(xué)習(xí)算法,由于它的固有限制,在EVM上是完全不可行的。EVM中的每一條指令,被稱(chēng)為OPCODE,都有一個(gè)特定的固定費(fèi)用。每個(gè)OPCODE都是確定的,對(duì)每個(gè)程序的輸出達(dá)成一致意見(jiàn)是在以太坊上達(dá)成全局共識(shí)的必要條件。

                  (以太坊從區(qū)塊創(chuàng)建到交易執(zhí)行的完整系統(tǒng),引用自StackExchange)

                  通過(guò)為opcode設(shè)置固定費(fèi)用,節(jié)點(diǎn)就可以確定執(zhí)行某個(gè)特定程序時(shí)用戶(hù)需要預(yù)付多少費(fèi)用。在這種情況下,gas的概念不僅僅被用于阻止惡意占用攻擊,還是一種確定性的指標(biāo)。例如,一個(gè)消耗gas X的程序總是會(huì)消耗X,不管是網(wǎng)絡(luò)中的哪個(gè)節(jié)點(diǎn)在執(zhí)行它。gas的單價(jià)依賴(lài)于整個(gè)平臺(tái)的供求關(guān)系,經(jīng)常會(huì)隨著以太坊網(wǎng)絡(luò)的交易負(fù)載量而發(fā)生變化。

                  EVM是如何設(shè)計(jì)的?為什么它是低效的?

                  l 架構(gòu)尺寸過(guò)大

                  傳統(tǒng)計(jì)算機(jī)包含的指令集只接受32位或者64位的輸入。EVM與此不同并且很特殊,它是一臺(tái)256位的計(jì)算機(jī),故意設(shè)計(jì)成這樣是為了更易于處理以太坊的哈希算法,它會(huì)明確產(chǎn)生256位的輸出。

                  然而,實(shí)際運(yùn)行EVM程序的計(jì)算機(jī)則需要把256位的字拆分成它們的本地架構(gòu)來(lái)執(zhí)行智能合約,從而使得整個(gè)系統(tǒng)變得非常低效和不實(shí)用。

                  另外,如果你想在以太坊上用它的基本OPCODES實(shí)現(xiàn)一個(gè)類(lèi)似于SHA256的復(fù)雜算法,那你就自祈多福吧!為了解決通過(guò)指令集運(yùn)行復(fù)雜程序產(chǎn)生的高額gas問(wèn)題,以太坊引入了預(yù)編譯的概念,把程序編譯進(jìn)EVM并且消耗固定的gas。一個(gè)值得關(guān)注的預(yù)編譯是以太坊哈希算法,因?yàn)槿绻谔摂M機(jī)中實(shí)現(xiàn)該算法,合約在調(diào)用時(shí)將會(huì)產(chǎn)生極其昂貴的費(fèi)用。

                  l 臃腫的預(yù)編譯

                  預(yù)編譯帶來(lái)的問(wèn)題是它會(huì)不斷增加虛擬機(jī)的臃腫度和復(fù)雜度,而不能解決核心問(wèn)題:當(dāng)前指令集和規(guī)范的低效而粗劣的設(shè)計(jì)。

                  如果我們能夠定義一種新的規(guī)范和指令集,不需要預(yù)編譯這些復(fù)雜程序,而只需要通過(guò)基本指令就可以高效實(shí)現(xiàn)呢?

                  走進(jìn)WebAssembly

                  WebAssembly是由W3C開(kāi)發(fā)的一個(gè)高效輕量級(jí)指令集標(biāo)準(zhǔn),被譽(yù)為網(wǎng)絡(luò)和高性能的顛覆者,支持跨瀏覽器執(zhí)行。這意味著我們可以把包括C/C , Go, Rust等在內(nèi)的不同編程語(yǔ)言編譯成統(tǒng)一的標(biāo)準(zhǔn)格式,并將其作為JavaScript的替代品以近乎原生代碼的效率在瀏覽器中運(yùn)行。WebAssembly,或者簡(jiǎn)稱(chēng)為WASM,是內(nèi)存安全、平臺(tái)獨(dú)立的,可以完美高效地映射到所有類(lèi)型的CPU架構(gòu)上。

                  這和區(qū)塊鏈有什么關(guān)系?

                  不依賴(lài)于EVM,現(xiàn)在我們有了一套優(yōu)秀并且高效的指令集,可以編譯各種類(lèi)型的語(yǔ)言,并且有信心它們可以在不同類(lèi)型的平臺(tái)上執(zhí)行且具有同等的性能 - 這對(duì)于去中心化應(yīng)用來(lái)說(shuō)是非常理想的!更進(jìn)一步,通過(guò)去除浮點(diǎn)運(yùn)算指令,WASM指令集可以很容易地變成確定性指令集,從而很適合作為EVM的替代品。

                  EWASM團(tuán)隊(duì)已經(jīng)著手在以太坊上集成WebAssembly,從而保證以太坊2.0的執(zhí)行層更加高效、簡(jiǎn)單,適合作為完全的去中心化計(jì)算平臺(tái)。https://github.com/ewasm

                  WASM已經(jīng)被許多其他項(xiàng)目接納為標(biāo)準(zhǔn),包括Dfinity和EOS都使用它來(lái)強(qiáng)化它們的執(zhí)行層。

                  Web的性能和智能合約平臺(tái)執(zhí)行層的未來(lái)一片光明。不僅dApp會(huì)具有更高的性能,集成WASM也可以讓那些熟悉Rust和Go之類(lèi)的主流語(yǔ)言的魯棒性的人更容易進(jìn)行智能合約的開(kāi)發(fā),而不是需要學(xué)習(xí)solidity的各種細(xì)節(jié)才能在以太坊上開(kāi)發(fā)有用的應(yīng)用程序。

                  ------

                  風(fēng)險(xiǎn)警示:藍(lán)狐筆記所有文章都不構(gòu)成投資推薦,投資有風(fēng)險(xiǎn),投資應(yīng)該考慮個(gè)人風(fēng)險(xiǎn)承受能力,建議對(duì)項(xiàng)目進(jìn)行深入考察,慎重做好自己的投資決策。

                  執(zhí)行 EVM 程序 指令集 計(jì)算機(jī)
                  分享到:

                  1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來(lái)源;
                  2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來(lái)源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為T(mén)MT觀察網(wǎng)或?qū)⒆肪控?zé)任;
                  3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。