在以太坊这个庞大而复杂的去中心化应用生态中,账户系统是所有交互的起点和核心,无论是发送以太币、使用智能合约,还是参与去中心化金融(DeFi),背后都离不开账户的身影,理解以太坊的账户系统,是掌握其工作原理的关键,与许多区块链采用简单的“UTXO(未花费的交易输出)”模型不同,以太坊采用了更为直观的“账户模型”,这为开发者用户带来了极大的便利。
以太坊中的账户主要分为两大类:外部账户(Externally Owned Accounts, EOAs) 和 合约账户(Contract Accounts),它们虽然都属于“账户”的范畴,但在本质、功能和管理方式上有着显著的区别。

外部账户,也常被称为“个人账户”或“控制账户”,是以太坊中最常见的账户类型,由普通用户、开发者或任何需要与区块链交互的实体控制,它的核心特征是由用户通过私钥控制。
私钥与公钥:每个外部账户都由一对密钥——私钥和公钥——来定义,私钥是账户的唯一凭证,由用户安全保管,绝对不能泄露,公钥由私钥通过加密算法生成,而账户地址则由公钥进一步哈希计算得出。私钥控制账户,公钥用于验证签名,地址是账户在区块链上的标识。
控制权:拥有私钥就意味着对该账户拥有绝对控制权,使用私钥对交易进行签名,广播到以太坊网络,网络中的节点会验证签名的有效性,从而确认交易发起者的身份和授权。
功能:外部账户的主要功能是:

状态:外部账户的状态相对简单,主要包括:
外部账户本身不包含可执行的代码,它的行为由外部通过交易来驱动。
合约账户,顾名思义,是与智能合约相关联的账户,它是由外部账户通过部署智能合约的交易创建出来的,一旦创建,其代码和数据就存储在以太坊区块链上,按照预设的规则自动执行。
控制权:与外部账户不同,合约账户不由私钥控制,它的行为由其内部存储的代码(Code) 和存储(Storage) 决定,合约账户的“活动”是由外部账户或其他合约账户发起的交易触发的,当交易调用合约账户时,以太坊虚拟机(EVM)会执行合约代码,并根据代码逻辑修改其自身存储或其他状态。

功能:合约账户的主要功能是:
状态:合约账户的状态比外部账户复杂,包括:
合约账户是去中心化应用(DApps)的核心,它们使得以太坊不仅仅是一个价值转移网络,更成为一个可编程的、能够自动执行复杂逻辑的分布式计算平台。
| 特性 | 外部账户 (EOA) | 合约账户 (Contract Account) |
|---|---|---|
| 控制者 | 用户(通过私钥) | 智能合约代码 |
| 私钥 | 有,用于签名交易 | 无 |
| 代码 | 无(代码由用户在交易中指定) | 有(存储在账户中) |
| 状态 | 地址、余额、Nonce | 地址、余额、Nonce、代码、存储 |
| 发起交易 | 可以主动发起交易 | 只能响应外部交易触发执行 |
| Gas 费用 | 发起交易时支付 Gas | 执行代码时消耗 Gas(由交易发起者支付) |
| 主要用途 | 用户身份标识、发起交易、交互合约 | 存储逻辑和数据、实现自动化功能 |
以太坊的“世界状态”(World State)是一个数据结构,它存储了所有以太坊账户的当前状态,这个全局状态可以被看作是一个巨大的分布式数据库,而每个账户(无论是EOA还是合约账户)都是这个数据库中的一条记录,每次交易都会改变一个或多个账户的状态,从而更新整个世界状态。