文章目录
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)向全节点请求所需的数据,以验证交易或查询账户状态。
特点:
- 仅存储区块头,而不保存完整的交易和账户状态数据。
- 需要向全节点请求数据,以查询账户余额、交易状态等信息。
- 消耗较少的存储空间和计算资源,适用于移动设备或低性能设备。
验证者
作用