以太坊連載(一):以太坊是什麼?

汪曉明發表於2018-08-22

以太坊是什麼?
以太坊是一個全新開放的區塊鏈平臺,它允許任何人在平臺中建立和使用通過區塊鏈技術執行的去中心化應用。就像比特幣一樣,以太坊不受任何人控制,也不歸任何人所有——它是一個開放原始碼專案,由全球範圍內的很多人共同建立。和比特幣協議有所不同的是,以太坊的設計十分靈活,極具適應性。在以太坊平臺上創立新的應用十分簡便,隨著Homestead的釋出,任何人都可以安全地使用該平臺上的應用。

下一代區塊鏈
區塊鏈技術是比特幣的底層技術,這一技術第一次被描述是在中本聰2008年發表的白皮書“比特幣:點對點電子現金系統”中。區塊鏈技術更多的一般性用途在原書中已經有所討論,但直到幾年後,區塊鏈技術才作為通用術語出現。一個區塊鏈是一個分散式計算架構,裡面的每個網路節點執行並記錄相同的交易,交易被分組為區塊。一次只能增加一個區塊,每個區塊有一個數學證明來保證新的區塊與之前的區塊保持先後順序。這樣一來,區塊鏈的“分散式資料庫”就能和整個網路保持一致。個體使用者與總賬的互動(交易)受到安全的密碼保護。由數學執行並編碼到協議中的經濟激勵因素刺激著維持和驗證網路的節點。

在比特幣中,分散式資料庫被設想為一個賬戶餘額表,一個總賬,交易就是通過比特幣的轉移以實現個體之間無需信任基礎的金融活動。但是隨著比特幣吸引了越來越多開發者和技術專家的注意,新的專案開始將比特幣網路用於有價代幣轉移之外的其他用途。其中很多都採用了“代幣”的形式——以原始比特幣協議為基礎,增加了新的特徵或功能,採用各自加密貨幣的獨立區塊鏈。在2013年末,以太坊的發明者Vitalik Buterin建議能夠通過程式重組來執行任意複雜運算的單個區塊鏈應該包含其他的程式。

2014年,以太坊的創始人Vitalik Buterin, Gavin Wood和Jeffrey Wilcke開始研究新一代區塊鏈,試圖實現一個總體上完全無需信任基礎的智慧合約平臺。

以太坊虛擬機器
以太坊是可程式設計的區塊鏈。它並不是給使用者一系列預先設定好的操作(例如比特幣交易),而是允許使用者按照自己的意願建立複雜的操作。這樣一來,它就可以作為多種型別去中心化區塊鏈應用的平臺,包括加密貨幣在內但並不僅限於此。

以太坊狹義上是指一系列定義去中心化應用平臺的協議,它的核心是以太坊虛擬機器(“EVM”),可以執行任意複雜演算法的編碼。在電腦科學術語中,以太坊是“圖靈完備的”。開發者能夠使用現有的JavaScript和Python等語言為模型的其他友好的程式語言,建立出在以太坊模擬機上執行的應用。

和其他區塊鏈一樣,以太坊也有一個點對點網路協議。以太坊區塊鏈資料庫由眾多連線到網路的節點來維護和更新。每個網路節點都執行著以太坊模擬機並執行相同的指令。因此,人們有時形象地稱以太坊為“世界電腦”。

這個貫穿整個以太坊網路的大規模並行運算並不是為了使運算更高效。實際上,這個過程使得在以太坊上的運算比在傳統“電腦”上更慢更昂貴。然而,每個以太坊節點都執行著以太坊虛擬機器是為了保持整個區塊鏈的一致性。去中心化的一致使以太坊有極高的故障容錯性,保證零停機,而且可以使儲存在區塊鏈上的資料保持永遠不變且抗審查。

以太坊平臺本身沒有特點,沒有價值性。和程式語言相似,它由企業家和開發者決定其用途。不過很明顯,某些應用型別較之其他更能從以太坊的功能中獲益。以太坊尤其適合那些在點與點之間自動進行直接互動或者跨網路促進小組協調活動的應用。例如,協調點對點市場的應用,或是複雜財務合約的自動化。比特幣使個體能夠不借助金融機構、銀行或政府等其他中介來進行貨幣交換。以太坊的影響可能更為深遠。理論上,任何複雜的金融活動或交易都能在以太坊上用編碼自動且可靠地進行。除金融類應用外,任何對信任、安全和永續性要求較高的應用場景——比如資產註冊、投票、管理和物聯網——都會大規模地受到以太坊平臺影響。

以太坊如何工作?
以太坊合併了很多對比特幣使用者來說十分熟悉的特徵和技術,同時自己也進行了很多修正和創新。比特幣區塊鏈純粹是一個關於交易的列表,而以太坊的基礎單元是賬戶。以太坊區塊鏈跟蹤每個賬戶的狀態,所有以太坊區塊鏈上的狀態轉換都是賬戶之間價值和資訊的轉移。賬戶分為兩類:

外部賬戶(EOA),由私人密碼控制
合約賬戶,由它們的合約編碼控制,只能由外部賬戶“啟用”
對於大部分使用者來說,兩者基本的區別在於外部賬戶是由人類使用者掌控——因為他們能夠控制私鑰,進而控制外部賬戶。而合約賬戶則是由內部編碼管控。如果他們是被人類使用者“控制”的,那也是因為程式設定它們被具有特定地址的外部賬戶控制,進而被持有私鑰控制外部賬戶的人控制著。“智慧合約”這個流行的術語指的是在合約賬戶中編碼——交易被髮送給該賬戶時所執行的程式。使用者可以通過在區塊鏈中部署編碼來建立新的合約。

只有當外部賬戶發出指令時,合約賬戶才會執行相應的操作。所以合約賬戶不可能自發地執行諸如任意數碼生成或應用程式介面呼叫等操作—只有受外部賬戶提示時,它才會做這些事。這是因為以太坊要求節點能夠與運算結果保持一致,這就要求保證嚴格確定執行。

和比特幣一樣,以太坊使用者必須向網路支付少量交易費用。這可以使以太坊區塊鏈免受無關緊要或惡意的運算任務干擾,比如分散式拒絕服務(DDoS)攻擊或無限迴圈 。交易的傳送者必須在啟用的“程式”每一步付款,包括運算和記憶儲存。費用通過以太坊自有的有價代幣,以太幣的形式支付。

交易費用由節點收集,節點使網路生效。這些“礦工”就是以太坊網路中收集、傳播、確認和執行交易的節點。礦工們將交易分組——包括許多以太坊區塊鏈中賬戶“狀態”的更新——分成的組被稱為“區塊”,礦工們會互相競爭,以使他們的區塊可以新增到下一個區塊鏈上。礦工們每挖到一個成功的區塊就會得到以太幣獎勵。這就為人們帶來了經濟激勵,促使人們為以太坊網路貢獻硬體和電力。

和比特幣網路一樣,礦工們有解決複雜數學問題的任務以便成功地“挖”到區塊。這被稱為“工作量證明”。一個運算問題,如果在演算法上解決,比驗證解決方法需要更多數量級的資源,那麼它就是工作證明的極佳選擇。為防止比特幣網路中已經發生的,專門硬體(例如特定用途積體電路)造成的中心化現象,以太坊選擇了難以儲存的運算問題。如果問題需要儲存器和CPU,事實上理想的硬體是普通的電腦。這就使以太坊的工作量證明具有抗特定用途積體電路性,和比特幣這種由專門硬體控制挖礦的區塊鏈相比,能夠帶來更加去中心化的安全分佈。

汪曉明
HPB芯鏈創始人,巴位元專欄作家。十餘年金融大資料、區塊鏈技術開發經驗,曾參與建立銀聯大資料。主創區塊鏈教學視訊節目《明說》30多期,編寫了《以太坊官網文件中文版》,並作為主要作者編寫了《區塊鏈開發指南》,在中國區塊鏈社群以ID“藍蓮花”知名。

相關文章