以太坊作为全球第二大区块链平台,其核心架构之一是“账户系统”,与比特币基于UTXO(未花费交易输出)的模型不同,以太坊采用“账户”概念,直接记录用户的状态(如余额、代码、存储数据等),从而支持更复杂的智能合约和去中心化应用(DApp),本文将详细解析以太坊账户的构成、类型及核心机制,帮助读者全面理解这一基础概念。
以太坊中的账户是区块链状态的基本单位,每个账户都有一个唯一的地址,并由以下几个关键部分组成:
地址(Address)
账户的唯一标识符,由20字节(40个十六进制字符)组成,地址通过公钥生成(外部账户)或直接指定(合约账户),用于接收资产、调用合约等操作。0x742d35Cc6634C0532925a3b844Bc454e4438f44e 就是一个典型的以太坊地址。

余额(Balance)
账户中持有的以太币(ETH)数量,以“wei”为最小单位(1 ETH = 10¹⁸ wei),余额可通过交易转移,是账户最直观的状态数据。
nonce(序列号)
一个递增的计数器,用于防止“重放攻击”并确保交易顺序,对于外部账户,nonce记录该账户发起的交易数量;对于合约账户,nonce记录其创建的合约数量(仅在合约部署时使用)。

代码(Code)
仅合约账户包含的字段,存储智能合约的字节码(Bytecode),当外部账户调用合约时,EVM(以太坊虚拟机)会执行这段代码,实现预设逻辑(如代币转账、投票等),外部账户的代码字段为空。
存储(Storage)
仅合约账户包含的字段,用于持久化存储合约运行时的数据(如变量值、映射关系等),存储是以太坊状态树的一部分,但访问成本较高(需消耗Gas)。

根据功能和结构,以太坊账户分为外部账户(Externally Owned Account, EOA)和合约账户(Contract Account)两大类,二者在所有权、交互方式和应用场景上存在显著差异。
外部账户由用户通过私钥控制,相当于传统区块链中的“用户账户”,常见于个人钱包(如MetaMask、Ledger)或交易所提现地址,其核心特征包括:
合约账户由智能合约代码控制,其地址通常通过EOA部署合约时生成,相当于“链上程序”的运行实例,其核心特征包括:
以太坊账户的所有状态变化都通过“交易”实现,交易是EOA向区块链网络提交的指令,主要类型包括:
approve函数)。 交易执行时,EVM会根据目标账户类型(EOA或合约)执行相应逻辑:若目标为EOA,则更新其余额;若目标为合约,则执行其代码并可能修改存储状态。
以太坊的账户模型相比比特币的UTXO模型,具有以下优势: