一文读懂以太坊的两种账户模型,EOA 与合约账户

博主:neragonerago 2026-10-03 23:15:29 6

在区块链的世界里,比特币采用 UTXO(未花费交易输出)模型来记录资产,而以太坊则选择了更贴近人们直觉的“账户模型”——就像银行的账户余额一样,每个账户记录着余额、交易次数等信息。

但与银行不同的是,以太坊的账户体系并非只有一种,而是由外部账户(EOA)和合约账户(Contract Account)共同构成,理解这两种账户,是理解以太坊运行机制乃至整个智能合约生态的基石。

两种账户概览

以太坊的世界状态(World State)本质上是“地址 → 账户状态”的映射,每个账户都拥有一个以 0x 开头、20 字节(40 个十六进制字符)的地址,而控制这个地址的方式,决定了它属于哪一类账户:

  • EOA(Externally Owned Account,外部账户):由私钥控制,代表“人”的意志;
  • 合约账户(Contract Account):由部署在链上的代码控制,代表“程序”的逻辑。

EOA:由私钥掌控的外部账户

EOA 是普通用户进入以太坊世界的入口,它的核心特征包括:

由私钥控制 用户生成一对密钥(私钥 + 公钥),地址由公钥经过 Keccak-256 哈希运算后取后 20 字节得出,谁掌握了私钥,谁就掌握了账户的一切,私钥丢失,资产便永久沉睡。

创建免费 生成一个 EOA 不需要与区块链交互,不需要消耗 Gas,在本地用钱包(如 MetaMask)即可完成。

交易的唯一发起者 在当前以太坊架构下,只有 EOA 能主动发起交易,无论是转账 ETH、部署合约还是调用合约,都必须由某个 EOA 用私钥签名后广播到网络。

没有代码 EOA 不包含可执行代码,也没有独立的持久化存储空间。

合约账户:由代码驱动的智能账户

合约账户则是智能合约在链上的“化身”,它的特征与 EOA 形成鲜明对比:

由代码控制 合约账户的行为完全由部署时写入的代码决定,任何人都无法单方面篡改(除非代码本身预留了可升级机制)。

创建需要成本 部署合约本质上是一笔由 EOA 发起的交易,需要支付 Gas 费,合约地址通常由部署者地址与其 nonce 计算得出(CREATE),或通过 CREATE2 以更可预测的方式确定。

只能被动触发 合约账户无法自己“醒来”干活,它的一切行为都源于外部调用,要么来自 EOA 的直接调用,要么来自其他合约的链式调用,整个调用链的源头,必然是某个 EOA 签名的交易。

拥有存储空间 合约账户可以持久化存储数据,这正是不计其数的 Token、NFT、DeFi 协议能够

The End

发布于:2026-10-03,除非注明,否则均为区块链社区- 欧亿APP下载原创文章,转载请注明出处。