以太坊是什麼?以太坊是一個開放的區塊鏈平臺,任何人都可以在這個平臺上構建和使用基於區塊鏈技術的分散式應用。像比特幣一樣,以太坊不被任何人控制也不屬於任何人,它是多人一起開發的一個開源工程。但是又不同於比特幣協議,以太坊被設計成具備適配性和靈活性。很容易在以太坊平臺上建立新的應用程式,隨著家園(Homestead)版本的發行,任何人都可以安全地使用這些應用程式。
下一代區塊鏈
區塊鏈技術是比特幣的技術基礎,由神秘作者中本聰(Satoshi Nakamoto)在2008年的白皮書《比特幣:P2P電子現金系統》中首次被提出。雖然原始論文中已經討論了區塊鏈更廣泛的用途,但是直到幾年後,區塊鏈技術才成為一個通用術語。區塊鏈是一個分散式計算架構,每一個網路節點都執行並記錄相同的交易資訊,並把結果打包到塊(block)中。同一時間只有一個塊可以被新增,每一個塊都包含透過前一個塊計算出來的數學證明。以這種方式,整個網路中的資料塊資料庫都會保持一致。個人使用者以強大的加密技術與賬本進行互動。網路透過獎勵機制來促進每個節點維護和驗證的行為。
在比特幣中,分散式資料庫被設計成賬戶餘額表,或者叫做賬本,個人之間透過位元令牌的轉移來進行交易。後來比特幣開始越來越多地吸引開發者和技術專家的注意,小型專案利用比特幣網路來實現令牌轉賬之外的目的,在這之上,改進了原始的比特幣協議,以加入更多新的特性和能力。在2013年底,以太坊的創始人Vitalik Buterin提出,區塊鏈上層加入可程式設計功能可以用來構建很多其他的專案。
在2014年,以太坊的創始人Vitalik Buterin,Gavin Wood 和Jeffrey Wilcke有雄心實現下一代區塊鏈技術,實現一個圖靈完備的智慧合約平臺。
以太坊虛擬機器
以太坊是一個可程式設計的區塊鏈,而不是給用語提供一組預設的操作(比如:比特幣交易)以太坊允許使用者建立任意複雜度的操作。在這種方式下,區塊鏈就成為一個分散式應用的平臺,可以實現但不侷限於加密貨幣。
狹義上,以太坊是一套可以實現分散式應用的平臺協議。它的核心是可以執行任意複雜演算法的以太坊虛擬機器(EVM)。在電腦科學方面,以太坊是圖靈完備的。開發人員可以使用現有的語言(如:Javascript和Python)方便地建立執行於EVM上的應用程式。
和其他區塊鏈一樣,以太坊也包含一套P2P協議,以太坊區塊鏈資料由網路上的節點進行維護和更新。網路上的每一個節點都執行著EVM並執行相同的指令。因這個原因,以太坊經常被描述為“世界電腦”。
以太坊網路中大規模的平行計算並不是為了計算更高效,事實上,這個過程讓計算速度比傳統的計算更為低效。另一方面,以太坊中的每一個節點都執行EVM目的是保持整個區塊鏈的共識。分散式的共識機制給予了以太坊極其高的容錯能力,確保零宕機,並且使儲存於區塊鏈的資料永遠不可更改並且可被審查。
以太坊平臺本身是無特徵的或無價值的。類似於程式語言,由企業和開發者決定應該如何使用。然而,很明顯某種型別的應用程式更能從以太坊平臺上獲得收益,具體來說,以太坊更適用於自動化對等體之間直接互動或透過網路來協調的應用程式,例如:p2p的市場應用或複雜金融合同的自動化。比特幣允許個人不透過像銀行、金融機構或政府等第三方擔保進行現金交換業務。以太坊等影響可能更加深遠,理論上可以在以太坊之上執行程式碼,自動可靠地執行任何複雜性等財務互動或交換。處了金融方面,任何依賴於信任、安全和永久性的情景,都會受到以太坊平臺的巨大沖擊。
以太坊如何工作?
以太坊整合了很多比特幣使用者熟悉的特性和技術,同時也引入了許多自身的修改和革新。
比特幣區塊鏈是純粹的交易列表,以太坊的基礎單位是賬戶。以太坊區塊鏈追蹤每一個賬戶的狀態,每一個區塊鏈狀態轉換都是賬戶之間的價值和資訊交換。以太坊包含兩種賬戶:
外部賬戶(Externally Owned Accounts),用私鑰來控制
合約賬戶(Contract Accounts),由合約程式碼來控制並且只能由外部賬戶啟用
對於大多數使用者而言,它們之間的基本區別在於使用者控制EOA,因為它們可以控制對EOA進行控制的私鑰。 另一方面,合同賬戶由內部程式碼管理。 如果它們被人類使用者“控制”,那是因為它們被程式設計為由具有特定地址的EOA來控制,這又由持有控制該EOA的私鑰的人控制。 流行術語“智慧合同”是指合同帳戶中的程式碼 ———— 當事務傳送到該帳戶時執行的程式。 使用者可以透過將程式碼部署到塊鏈來建立新合同。
合同賬戶只有在EOA指示的時候才執行操作。 因此,合同帳戶無法執行隨機數生成或API呼叫等本地操作,只有在EOA提示的情況下,才能執行這些操作。 這是因為以太坊要求節點能夠就計算結果達成一致,這需要嚴格確定性執行的保證。
像比特幣一樣,使用者必須向網路支付小額的交易費用。 這樣可以保護以太坊區塊鏈不受惡意的計算任務,如DDoS攻擊或無限迴圈。 交易的發件人必須支付他們啟用的“程式”的每個指令,包括計算和記憶體儲存。 這些費用是用以太坊本地貨幣以太來支付的。
這些交易費用由驗證網路的節點收集。 這些“礦工”是以太坊網路中接收,傳播,驗證和執行事務的節點。 然後,礦工們將這些交易(包含於“以太坊區塊”中的“賬戶狀態”更新)分組成所謂的“塊”,然後礦工們將彼此競爭計算,爭取成為下一個被新增到區塊鏈上的塊。礦工們透過計算出每個成功的塊而獲得以太幣獎勵。這給人們提供了經濟上的激勵,鼓勵人民將將硬體和電力投入到以太坊網路上。
在比特幣網路中,礦工的任務是解決複雜的數學問題用來成功進行塊的“挖掘”,這種方式被稱為“工作量證明(PoW)”。任何計算問題,如果計算所需的資源比驗證結果所需的資源高出更多數量級的問題,都是好的工作量證明演算法。為了阻止由於使用專用硬體(如ASIC)而使計算集中化,比如比特幣網路中已經發生的那樣,以太坊選擇了記憶體飢餓演算法。如果記憶體如同CPU一樣成為計算資源,那麼普通的計算機就稱為了最理想的硬體。這就使以太坊的工作量證明對ASIC具有抵抗性,這樣分佈更為分散的計算比硬體集中的區塊鏈(例如比特幣)更具有安全性。