核心概念

基於比特幣網絡的核心思想,以太坊項目提出了許多創新的技術概念,包括智能合約、基於賬戶的交易、以太幣和燃料等。

智能合約

智能合約(Smart Contract)是以太坊中最為重要的一個概念,即以計算機程序的方式來締結和運行各種合約。最早在上世紀 90 年代,Nick Szabo 等人就提出過類似的概念,但一直依賴因為缺乏可靠執行智能合約的環境,而被作為一種理論設計。區塊鏈技術的出現,恰好補充了這一缺陷。

以太坊支持通過圖靈完備的高級語言(包括 Solidity、Serpent、Viper)等來開發智能合約。智能合約作為運行在以太坊虛擬機(Ethereum Virual Machine,EVM)中的應用,可以接受來自外部的交易請求和事件,通過觸發運行提前編寫好的代碼邏輯,進一步生成新的交易和事件,可以進一步調用其它智能合約。

智能合約的執行結果可能對以太坊網絡上的賬本狀態進行更新。這些修改由於經過了以太坊網絡中的共識,一旦確認後無法被偽造和篡改。

賬戶

在之前章節中,筆者介紹過比特幣在設計中並沒有賬戶(Account)的概念,而是採用了 UTXO 模型記錄整個系統的狀態。任何人都可以通過交易歷史來推算出用戶的餘額信息。而以太坊則採用了不同的做法,直接用賬戶來記錄系統狀態。每個賬戶存儲餘額信息、智能合約代碼和內部數據存儲等。以太坊支持在不同的賬戶之間轉移數據,以實現更為複雜的邏輯。

具體來看,以太坊賬戶分為兩種類型:合約賬戶(Contracts Accounts)和外部賬戶(Externally Owned Accounts,或 EOA)。

  • 合約賬戶:存儲執行的智能合約代碼,只能被外部賬戶來調用激活;

  • 外部賬戶:以太幣擁有者賬戶,對應到某公鑰。賬戶包括 nonce、balance、storageRoot、codeHash 等字段,由個人來控制。

當合約賬戶被調用時,存儲其中的智能合約會在礦工處的虛擬機中自動執行,並消耗一定的燃料。燃料通過外部賬戶中的以太幣進行購買。

交易

交易(Transaction),在以太坊中是指從一個賬戶到另一個賬戶的消息數據。消息數據可以是以太幣或者合約執行參數。

以太坊採用交易作為執行操作的最小單位。每個交易包括如下字段:

  • to:目標賬戶地址。

  • value:可以指定轉移的以太幣數量。

  • nonce:交易相關的字串,用於防止交易被重放。

  • gasPrice:執行交易需要消耗的 Gas 價格。

  • gasLimit:交易消耗的最大 Gas 值。

  • data: 交易附帶字節碼信息,可用於創建/調用智能合約。

  • signature:簽名信息。

類似比特幣網絡,在發送交易時,用戶需要繳納一定的交易費用,通過以太幣方式進行支付和消耗。目前,以太坊網絡可以支持超過比特幣網絡的交易速率(可以達到每秒幾十筆)。

以太幣

以太幣(Ether)是以太坊網絡中的貨幣。

以太幣主要用於購買燃料,支付給礦工,以維護以太坊網絡運行智能合約的費用。以太幣最小單位是 wei,一個以太幣等於 10^18 個 wei。

以太幣同樣可以通過挖礦來生成,成功生成新區塊的以太坊礦工可以獲得 3 個以太幣的獎勵,以及包含在區塊內交易的燃料費用。用戶也可以通過交易市場來直接購買以太幣。

目前每年大約可以通過挖礦生成超過一千萬個以太幣,單個以太幣的市場價格目前超過 300 美金。

燃料

燃料(Gas),控制某次交易執行指令的上限。每執行一條合約指令會消耗固定的燃料。當某個交易還未執行結束,而燃料消耗完時,合約執行終止並回滾狀態。

Gas 可以跟以太幣進行兌換。需要注意的是,以太幣的價格是波動的,但運行某段智能合約的燃料費用可以是固定的,通過設定 Gas 價格等進行調節。

Last updated