以太坊在2013年的構想是將區塊鏈技術作為一種分散的結算層,將p2p資金投入到一個無信任層中,用於執行程式,從而開啟了一個全新的應用程式和可程式設計貨幣的世界。以太坊的核心理念很簡單:利用區塊鏈技術的信任最小化的本質,就計算機程式的輸出達成共識。也就是說,開發人員可以部署程式碼,也就是所謂的智慧合約,它是完全確定的,並且它的輸出可以被所有與之互動的各方所信任。從一開始就提出了各種各樣的好主意,包括利用以太坊智慧合約建立公平拍賣或彩票的能力來創造預測市場,分散貿易往來等等。在這些用例中最臭名昭著的是在以太坊中建立可程式設計的代幣,它被用作公司籌集數百萬美元的ICOs的流行手段。在其核心,以太坊實現了一個圖靈完整的虛擬機器,被稱為以太坊虛擬機器(簡稱EVM)。它的力量來自定義一個通用的、確定性的指令集,程式可以編譯成,世界各地的計算機都可以執行。在這個EVM上執行的每一個操作和程式都必須由乙太網絡的每個完整節點執行,這意味著這個“世界計算機”需要有一個內建的機制來阻止垃圾郵件攻擊。為此,EVM實現了氣體的概念,它可以被認為是每一個需要在這臺全球計算機上執行的基本操作的“燃料”,它是預先支付的。區塊鏈計算機是具有決定性的圖靈完成意味著你可以在以太虛擬機器上編碼和執行任何程式,只要你有足夠的氣體來支付所有的執行步驟。昂貴的操作,如訓練機器學習演算法,由於其固有的約束,在EVM中是完全不可行的。EVM中的每一個指令,稱為操作碼,都有一個特定的固定成本。每一個操作碼都是決定性的,因為在以太坊上的每一個節點的輸出都是達成全球共識的要求。以太坊整個系統從塊建立到事務執行:透過固定的操作碼成本,節點能夠準確地確定使用者需要多少錢來執行一個特定的程式。在這種情況下,氣體的概念不僅被用作防止垃圾郵件攻擊的一種方法,而且還被用作確定性的代理。例如,一個花費X氣體執行的程式將總是花費X氣體,而不管網路中的哪個節點正在執行它。天然氣實際上有一個單位價格,它依賴於整個平臺的供應和需求,而且通常是相當不穩定的,這取決於乙太網絡與交易的負載程度。EVM是如何設計的?為什麼它效率低下?
大建築尺寸
傳統計算機包含在32或64位大小的輸入上執行的指令集。EVM是不同的,它是特別的,因為它是一個256位的計算機,它是故意設計的,因它很容易處理以太的雜湊演算法,它顯式地生成了一個256位的輸出。然而,實際執行EVM程式的計算機必須將其256位的單詞分解到它們的本地架構中,以執行智慧合約,這使得整個系統非常低效和不切實際。另外,如果你想要使用它的基本操作碼來實現一個複雜的演算法,比如在以太坊上的SHA256,那我就只能祝你好運了!為了規避從指令集執行復雜程式的低成本效率,以太坊使用了預編譯的概念,這些程式是在EVM中進行的,並且有固定的成本。一個值得注意的預編譯是以太坊雜湊演算法,因為在VM本身中實現它對於任何呼叫的合同來說都是非常昂貴的。預編譯的問題預編譯的問題在於,它們不斷地增加VM的臃腫和複雜性,而不是解決核心問題——當前指令集和規範的低效率和糟糕的設計。如果我們可以定義一個新的規範和指令集,我們不需要將這些複雜的程式放入其中,那麼我們是否可以有效地使用基本指令實現呢?
進入WebAssembly
被譽為網路和高效能的遊戲規則,跨瀏覽器執行,WebAssembly是由W3C開發的一個標準組的有效率,輕量級的指令集。這意味著我們可以編譯不同型別的程式語言,從C / c++更成一個單一的標準,可以在瀏覽器中執行幾乎代替JavaScript。WebAssembly,簡稱WASM,是記憶體安全的、平臺獨立的,並且可以有效地對映到所有型別的CPU架構。這和區塊鏈有什麼關係?
我們現在有了一個優秀的、高效的指令集,我們可以編譯各種語言,並確信它將在不同型別的平臺上具有同樣的效能和可執行性——對於分散的應用程式來說是理想的!此外,WASM指令集可以很容易地透過移除浮點指令來確定,這將使它適合於EVM進行替換。
更多區塊鏈資訊:http://www.qukuaiwang.com.cn/news