東諾弗里奧把身體靠向椅背,手指抵著太陽穴,大腦再次感受到震撼。
以太坊和比特幣一樣,是採用工作量證明的區塊鏈,這表示礦工會因為驗證交易而獲得以太幣做為獎勵。礦工決定要不要為了賺酬金而去處理那筆交易。以太坊把燃料跟以太幣分開,用意是即便加密貨幣的價格會隨著市場上的供需波動,運算成本仍可持平。例如,一筆交易的運算成本是100 gas,它永遠需要100 gas,但是發送者付給礦工去處理交易的以太幣數量,則根據以太幣的市價而定(gas是以太坊用於衡量程式執行一個動作所需「計算量」的單位。當你執行交易時,必須支付礦工處理費,而處理費就是以gas計算,並以「以太幣」支付)。
比特幣和以太坊的帳戶模式,就像錢包和存摺
以太坊與比特幣區塊鏈的一個顯著區別,是帳本記錄方式不同。
比特幣是使用「未花費交易輸出」(Unspent Transaction Output, UTXO)模式。比特幣帳戶的每一筆餘額,是由其他交易剩餘未花用的比特幣所組成。一筆餘額通常包括許多UTXO,就像一個實體錢包,裡面可能包含許多面額的鈔票和硬幣。用比特幣買東西,你可能必須使用UTXO的組合,就像你用十美元和五美元的紙鈔去買價值十二美元的東西。這筆交易餘下的三美元,將成為一個新的UTXO。
以太坊則是使用「帳戶/餘額」(Account/Balance)模式,追蹤每個帳戶的總餘額或「狀態」。如果說比特幣的UTXO模式類似鈔票和硬幣,那麼以太坊的模式比較像支存帳戶,可以針對可領取的金額進行細膩的掌控,更容易執行較複雜的程式。
布特林在白皮書中舉例,避險合約(hedging contract)就比較適合採用以太坊,而不是比特幣。例如,當A和B都投入價值一千美元的比特幣,三十天後,指令碼會把價值一千美元的比特幣發送給A,其餘的發送給B。因為UTXO只能選擇全有或全無。但以太坊則有兩種帳戶:外部擁有帳戶(externally owned account)與合約帳戶(contract account)。外部擁有帳戶是由人們的私鑰所控制,不含程式碼。合約帳戶是由程式碼控制,每次合約帳戶收到一則訊息,程式碼就會啟動,讓它把訊息讀寫到內部儲存中、發送其他訊息,或創造新合約。
這促成了以太坊和比特幣的另一個關鍵差異,布特林稱之為以太坊的「第一類公民」(first-class citizen,程式語言中的術語,亦稱First-class object,指能在程式執行期間,創造並做為參數傳遞給其他函數或存入一個變數的實體)——合約帳戶和外部帳戶擁有同等的權力,而這個特徵也使得自動執行程式碼的應用程式變得更加容易使用。如果區塊鏈技術的目的是去掉中介者,這個概念就深植在以太坊的核心中。