以太坊作為全球第二大區塊鏈平臺,其核心架構之一是“賬戶系統”,與比特幣基于UTXO(未花費交易輸出)的模型不同,以太坊采用“賬戶”概念,直接記錄用戶的狀態(如余額、代碼、存儲數據等),從而支持更復雜的智能合約和去中心化應用(DApp),本文將詳細解析以太坊賬戶的構成、類型及核心機制,幫助讀者全面理解這一基礎概念。
以太坊賬戶的基本構成
以太坊中的賬戶是區塊鏈狀態的基本單位,每個賬戶都有一個唯一的地址,并由以下幾個關鍵部分組成:
-
地址(Address)
賬戶的唯一標識符,由20字節(40個十六進制字符)組成,地址通過公鑰生成(外部賬戶)或直接指定(合約賬戶),用于接收資產、調用合約等操作。0x742d35Cc6634C0532925a3b844Bc454e4438f44e就是一個典型的以太坊地址。
-
余額(Balance)
賬戶中持有的以太幣(ETH)數量,以“wei”為最小單位(1 ETH = 101? wei),余額可通過交易轉移,是賬戶最直觀的狀態數據。 -
nonce(序列號)
一個遞增的計數器,用于防止“重放攻擊”并確保交易順序,對于外部賬戶,nonce記錄該賬戶發起的交易數量;對于合約賬戶,nonce記錄其創建的合約數量(僅在合約部署時使用)。
-
代碼(Code)
僅合約賬戶包含的字段,存儲智能合約的字節碼(Bytecode),當外部賬戶調用合約時,EVM(以太坊虛擬機)會執行這段代碼,實現預設邏輯(如代幣轉賬、投票等),外部賬戶的代碼字段為空。 -
存儲(Storage)
僅合約賬戶包含的字段,用于持久化存儲合約運行時的數據(如變量值、映射關系等),存儲是以太坊狀態樹的一部分,但訪問成本較高(需消耗Gas)。
以太坊賬戶的兩大類型
根據功能和結構,以太坊賬戶分為外部賬戶(Externally Owned Account, EOA)和合約賬戶(Contract Account)兩大類,二者在所有權、交互方式和應用場景上存在顯著差異。
外部賬戶(EOA):用戶操作的“入口”
外部賬戶由用戶通過私鑰控制,相當于傳統區塊鏈中的“用戶賬戶”,常見于個人錢包(如MetaMask、Ledger)或交易所提現地址,其核心特征包括:
- 私鑰控制:用戶通過私鑰對交易簽名,證明賬戶所有權,私鑰丟失意味著賬戶資產無法找回。
- 無代碼和存儲:不包含智能合約代碼和存儲字段,功能僅限于發起交易(如轉賬ETH、調用合約)。
- 主動發起交易:EOA是區塊鏈上所有交易的“起點”,例如用戶從EOA向另一個賬戶發送ETH,或調用智能合約的函數。
合約賬戶:智能合約的“載體”
合約賬戶由智能合約代碼控制,其地址通常通過EOA部署合約時生成,相當于“鏈上程序”的運行實例,其核心特征包括:
- 代碼驅動:賬戶行為由預部署的智能合約代碼決定,例如ERC-20代幣合約會自動處理轉賬和授權邏輯。
- 被動響應:合約賬戶無法主動發起交易,只能響應EOA或其他合約的調用(通過觸發交易執行)。
- 包含存儲和狀態:合約賬戶的存儲字段會記錄運行狀態(如代幣余額、投票結果等),這些狀態會隨交易執行而改變。
賬戶間的交互:交易的核心作用
以太坊賬戶的所有狀態變化都通過“交易”實現,交易是EOA向區塊鏈網絡提交的指令,主要類型包括:
- 普通轉賬:EOA向另一個EOA或合約賬戶轉移ETH,僅需指定接收地址和金額。
- 合約創建:EOA部署智能合約,將合約代碼打包到交易中,生成新的合約賬戶地址。
- 合約調用:EOA向合約賬戶發送指令,觸發合約代碼執行(如調用代幣的
approve函數)。
交易執行時,EVM會根據目標賬戶類型(EOA或合約)執行相應邏輯:若目標為EOA,則更新其余額;若目標為合約,則執行其代碼并可能修改存儲狀態。
賬戶模型的優勢與意義
以太坊的賬戶模型相比比特幣的UTXO模型,具有以下優勢:
- 狀態抽象更直觀:賬戶直接關聯余額、代碼和存儲,更貼近傳統編程思維,便于開發DApp。
- 支持復雜邏輯:合約賬戶的代碼和存儲功能,使以太坊能實現圖靈完備的智能合約,支持去中心化金融(DeFi)、NFT、DAO等復雜應用。
- 狀態管理高效:通過全局狀態樹記錄所有賬戶狀態,便于快速查詢和驗證,但同時也帶來了狀態存儲成本較高的問題(需通過Gas機制調節)。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。



