文章目錄
- 1. 以太坊賬戶類型
- 2. 以太坊網絡架構
- 2.1 節點類型
- 2.2 交易流程
- 3. 共識機制
- 4. Gas 機制
- 4.1 Gas 計算方式
- 4.2 以太坊 EIP-1559 交易機制
- 5. EVM(以太坊虛擬機)
- 5.1 EVM 結構
- 5.2 EVM 指令
- 5.3 EVM 運行機制
- 6. 智能合約
- 7. ERC 代幣標準
- 7.1 ERC-20
- 7.2 ERC-721
- 7.3 ERC-1155
- 8. Layer 2 解決方案
- 8.1 Optimistic Rollups
- 8.2 ZK-Rollups(零知識匯總)
1. 以太坊賬戶類型
以太坊的賬戶分為 外部賬戶(EOA) 和 合約賬戶(CA),兩者在控制方式和交易能力上有所不同。
1.1 外部賬戶(EOA, Externally Owned Account)
EOA 由用戶私鑰控制,可以主動發起交易。EOA 沒有代碼邏輯,僅用于存儲余額和簽署交易。用戶錢包(如 MetaMask)即為 EOA。EOA 主要用于發送 ETH 轉賬、與智能合約交互或發起交易。
EOA 交易的有效性由私鑰簽名保證,礦工驗證簽名后執行交易。如果 EOA 沒有足夠的 ETH 支付 gas 費用,則交易無法執行。由于 EOA 可以主動發起交易,因此在 DeFi、NFT 交易等應用中,EOA 主要負責調用合約。
例如,Alice 擁有一個 EOA 地址,她可以向 Bob 發送 1 ETH,也可以調用 Uniswap 合約來兌換代幣。每次交易都需要 Alice 使用私鑰進行簽名。
1.2 合約賬戶(CA, Contract Account)
CA 由智能合約代碼控制,沒有私鑰,不能主動發起交易,只能響應 EOA 或其他 CA 的交易請求。合約代碼在部署時寫入區塊鏈,并且在執行時只能按照預設邏輯運行。
合約賬戶可以存儲數據和執行復雜操作,例如去中心化交易所(DEX)合約可以管理多個用戶的資產,并根據市場規則進行交易撮合。CA 的執行依賴 EVM(以太坊虛擬機),并且所有合約調用都會消耗 gas 費。
由于 CA 不能主動發起交易,因此它的行為完全受制于外部調用。例如,Uniswap 智能合約本身不會主動買賣代幣,而是等待用戶(EOA)發送交易請求,觸發合約執行 swap 邏輯。
2. 以太坊網絡架構
以太坊網絡由多個分布式節點組成,這些節點共同維護區塊鏈的運行,并執行交易驗證、共識達成和數據存儲等關鍵任務。不同類型的節點在網絡中的作用各不相同,包括全節點、輕節點和驗證者節點。
2.1 節點類型
全節點
作用:全節點存儲整個以太坊區塊鏈數據,驗證所有交易和智能合約執行,并向其他節點提供數據同步服務。它可以獨立驗證區塊和交易,而無需依賴其他節點的信任。
特點:
- 存儲完整的區塊數據,包括區塊頭、交易和賬戶狀態。
- 通過 P2P 網絡傳播交易和新區塊,支持網絡同步。
- 驗證所有交易和智能合約的執行,確保數據完整性。
- 可以作為 RPC 提供商,為 DApp 和錢包提供區塊鏈數據查詢服務。
全節點的類型:
- 存檔節點(Archive Node):存儲從創世區塊到最新區塊的所有狀態數據,包括所有賬戶的歷史狀態。適用于區塊瀏覽器(如 Etherscan)、分析平臺和開發者。
- 普通全節點(Full Node):存儲完整的區塊數據,但不保留歷史狀態,僅保存當前的賬戶狀態和合約數據。適用于大多數普通用戶和礦工/驗證者。
輕節點
作用:輕節點不存儲完整的區塊鏈數據,而是僅下載區塊頭,并通過簡化支付驗證(SPV, Simplified Payment Verification)向全節點請求所需的數據,以驗證交易或查詢賬戶狀態。
特點:
- 僅存儲區塊頭,而不保存完整的交易和賬戶狀態數據。
- 需要向全節點請求數據,以查詢賬戶余額、交易狀態等信息。
- 消耗較少的存儲空間和計算資源,適用于移動設備或低性能設備。
驗證者
作用:以太坊在升級為 PoS(權益證明)后,礦工被驗證者取代。驗證者負責參與共識,打包交易并提議新區塊,同時對其他驗證者的提議進行投票。
特點:
- 需要 質押 32 ETH 才能成為驗證者,并被添加到以太坊的驗證者集合。
- 通過 Casper FFG + LMD-GHOST 共識機制 選出驗證者,每 12 秒出塊一次。
- 如果被選為出塊者(提議者),需收集交易、執行合約,并生成新區塊。
- 其他驗證者對區塊進行投票(Attestation),確保區塊的有效性。
- 作惡(如雙簽、離線)會被懲罰(Slash),質押 ETH 可能部分或全部被罰沒。
2.2 交易流程
1、用戶構造一個交易(包含發送者、接收者、Gas 費用、簽名等信息)。
2、將交易布局到區塊鏈網絡。
3、驗證者檢查交易(余額檢查、簽名驗證、Nonce 驗證等)。
4、驗證成功后,交易被打包進區塊,并被存儲。
5、區塊被添加到區塊鏈,交易完成確認。
3. 共識機制
在【區塊鏈安全 | 第二篇】區塊鏈概念詳解有介紹過。
4. Gas 機制
在以太坊中,Gas 是計算資源的度量單位,用于衡量執行智能合約或交易所需的計算量。每個操作(例如存儲數據、執行計算)都有固定的 Gas 費用。
在鏈上交易會消耗一定金額,作為支付給礦工(PoW)或驗證者(PoS)的手續費,即Gas。
4.1 Gas 計算方式
Gas 計算方式:
4.2 以太坊 EIP-1559 交易機制
以太坊倫敦升級(EIP-1559)引入了一種新的交易費用機制:
- 基礎費用(Base Fee):隨網絡負載動態調整,直接銷毀,不給礦工。
- 優先費用(Priority Fee,小費):給礦工的額外獎勵,加快交易確認。
5. EVM(以太坊虛擬機)
以太坊虛擬機(Ethereum Virtual Machine,EVM)是以太坊智能合約執行的核心,它提供了一個圖靈完備的計算環境,能夠在不同的以太坊節點上執行智能合約代碼,并保持一致性。EVM 運行字節碼(Bytecode),由 Solidity、Vyper 等高級語言編譯而成。
5.1 EVM 結構
EVM 運行時主要由存儲(Storage)、內存(Memory)和堆棧(Stack)組成,負責數據存儲和指令執行。
存儲(Storage)
存儲合約的持久化數據,例如變量狀態、映射、數組等。
每個合約擁有獨立的存儲空間,不同合約的存儲互不影響。
數據存儲在 Merkle Patricia Trie 結構中,可通過 SSTORE(存儲) 和 SLOAD(讀取) 操作。
存儲成本高,存儲新數據需要大量 Gas,而減少存儲(例如刪除變量)可以返還 Gas。
內存(Memory)
運行時的臨時數據存儲區域,適用于函數執行期間的計算數據。
交易執行結束后,內存數據會自動清空。
訪問內存比存儲便宜,但仍然有 Gas 成本,內存大小隨著使用增加而擴展,增長時消耗 Gas。
Solidity 中的 bytes、string 等動態數據結構在函數執行時存儲于內存中。
堆棧(Stack)
EVM 的核心計算區域,用于存儲操作數和執行計算。
堆棧最大深度為 1024 層,超出限制會導致 STACK OVERFLOW 錯誤。
EVM 指令大多數是基于堆棧操作的,例如 PUSH(壓入)、POP(彈出)、ADD(加法)等。
Solidity 的局部變量和函數參數通常存放在堆棧中。
5.2 EVM 指令
EVM 運行的是字節碼(Bytecode),字節碼由一系列低級指令(Opcode)組成,每個指令對應一個 1 字節的操作碼(如 0x60 代表 PUSH1)。指令主要分為堆棧操作、算術運算、存儲操作 和 控制流 等。
1、堆棧操作
2、算術運算
3、存儲和內存操作
4、控制流
5.3 EVM 運行機制
1、智能合約執行
用戶或合約調用合約函數,EVM 解析交易數據,調用相應的合約代碼。
代碼由 Solidity 編譯成字節碼,并在 EVM 內執行。
交易結束后,EVM 確保合約狀態一致性,成功交易被打包進區塊鏈。
2、Gas 機制
計算資源(CPU、存儲、內存)消耗 Gas,防止死循環和資源濫用。
操作復雜度越高,消耗 Gas 越多。例如:
- ADD(加法):3 Gas
- SSTORE(存儲變量):最大 20,000 Gas
- CALL(合約調用):700 Gas + 額外計算費用
3、沙盒環境
EVM 運行智能合約時,不能訪問外部網絡、文件系統或系統資源,確保去中心化安全性。
6. 智能合約
在【區塊鏈安全 | 第二篇】區塊鏈概念詳解有介紹過。
Solidity 是以太坊的主要智能合約語言。
7. ERC 代幣標準
以太坊上的 ERC(Ethereum Request for Comments)標準定義了智能合約的接口,使開發者可以創建兼容的錢包、交易所和 DApp(去中心化應用)。最常見的代幣標準是 ERC-20(同質化代幣) 和 ERC-721(非同質化代幣),它們分別用于代表可替代代幣(如 USDT、DAI) 和NFT(如 BAYC、CryptoPunks)。
7.1 ERC-20
ERC-20 是最廣泛使用的代幣標準之一,用于創建可替代代幣(Fungible Token)。這些代幣具有相同的屬性,可以自由交換,沒有唯一性。例如,1 USDT 和另一個 1 USDT 沒有區別。
ERC-20 規定了一組智能合約的接口,使代幣可以在錢包、交易所和 DApp 之間互操作。
應用場景:
- 穩定幣(Stablecoin):USDT、DAI、USDC
- DeFi(去中心化金融)代幣:UNI、AAVE、COMP
- 治理代幣:MKR、ENS
- 游戲內資產:AXS、SAND
7.2 ERC-721
ERC-721 是 NFT(Non-Fungible Token,非同質化代幣)的標準。NFT 具有唯一性,每個代幣都是獨一無二的,適用于數字藝術、游戲資產、收藏品、虛擬土地等場景。
ERC-721 規定了一組智能合約的接口,使 NFT 可以在NFT 交易市場(如 OpenSea)、游戲和 DApp 之間互操作。
應用場景:
- NFT 藝術:Bored Ape Yacht Club(BAYC)、CryptoPunks
- 虛擬土地:Decentraland(MANA)、The Sandbox(SAND)
- 游戲資產:Axie Infinity、Gods Unchained
7.3 ERC-1155
ERC-1155 結合了 ERC-20 和 ERC-721,允許單個合約管理多種代幣(同質化 + 非同質化)。
關鍵特點
支持同質化(FT)和非同質化(NFT)代幣。
一個交易可以批量轉移多個代幣,減少 Gas 費。
智能合約更高效,減少部署和管理多個代幣合約的成本。
關鍵方法
8. Layer 2 解決方案
以太坊主網(Layer 1)面臨以下問題:
以太坊當前 TPS(每秒交易數)約為 15-30,吞吐量有限,無法滿足大規模應用需求。
由于區塊空間有限,交易費用經常飆升。
交易需要多個區塊確認,延遲高,導致用戶體驗較差。
Layer 2(L2)是針對以太坊主鏈(Layer 1)擴展性問題的解決方案,主要目標是提高交易吞吐量、減少 Gas 費用,同時確保安全性。L2 通過在主鏈之外執行大部分交易計算,并僅將最終結果提交到以太坊,來減少主鏈的負擔。
Rollups 是目前最主流的 Layer 2 解決方案,它將交易計算放在鏈下,僅將壓縮后的交易數據提交到以太坊主網。Rollups 主要分為:
-
Optimistic Rollups(樂觀匯總)
-
ZK-Rollups(零知識證明匯總)
8.1 Optimistic Rollups
Optimistic Rollups 采用"樂觀假設",默認所有交易都是有效的,只有在交易被挑戰時才會執行計算。
特點
無需即時計算,只提交交易數據,降低成本。
挑戰機制:如果有惡意交易,用戶可提交欺詐證明(Fraud Proof),要求 Rollup 重新執行交易。
適用于 DeFi 和復雜智能合約,如 Arbitrum、Optimism。
工作原理
交易在 L2 執行,結果提交到 L1。
交易有 7 天的挑戰期,如果有欺詐行為,挑戰者可以提供欺詐證明。
如果交易未被挑戰,則默認有效。
8.2 ZK-Rollups(零知識匯總)
ZK-Rollups 采用零知識證明(Zero-Knowledge Proofs, ZKP),每批交易都會生成有效性證明,并提交到主鏈。
特點
所有交易提交時都會生成數學證明,主鏈無需等待挑戰期。
采用 Merkle 樹和 SNARK/STARK 技術,減少數據提交量。
適用于支付、NFT 交易等高頻交易,如 zkSync、StarkNet。
工作原理
交易在 L2 執行,并生成零知識證明(SNARK/STARK)。
證明連同交易數據提交至以太坊 L1。
以太坊驗證 ZK 證明,確保交易正確性。