文章目录
-
- [1. 以太坊账户类型](#1. 以太坊账户类型)
- [2. 以太坊网络架构](#2. 以太坊网络架构)
-
- [2.1 节点类型](#2.1 节点类型)
- [2.2 交易流程](#2.2 交易流程)
- [3. 共识机制](#3. 共识机制)
- [4. Gas 机制](#4. Gas 机制)
-
- [4.1 Gas 计算方式](#4.1 Gas 计算方式)
- [4.2 以太坊 EIP-1559 交易机制](#4.2 以太坊 EIP-1559 交易机制)
- [5. EVM(以太坊虚拟机)](#5. EVM(以太坊虚拟机))
-
- [5.1 EVM 结构](#5.1 EVM 结构)
- [5.2 EVM 指令](#5.2 EVM 指令)
- [5.3 EVM 运行机制](#5.3 EVM 运行机制)
- [6. 智能合约](#6. 智能合约)
- [7. ERC 代币标准](#7. ERC 代币标准)
-
- [7.1 ERC-20](#7.1 ERC-20)
- [7.2 ERC-721](#7.2 ERC-721)
- [7.3 ERC-1155](#7.3 ERC-1155)
- [8. Layer 2 解决方案](#8. Layer 2 解决方案)
-
- [8.1 Optimistic Rollups](#8.1 Optimistic Rollups)
- [8.2 ZK-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 证明,确保交易正确性。