区别 1:有没有私钥
1.EOA
EOA 就是由私钥控制的普通钱包账户。
你可以把它理解成:
MetaMask 钱包地址
你自己持有私钥的钱包
能签名、能发交易的账户
2.合约账户
合约账户就是部署在链上的程序账户。
你可以把它理解成:
某个 Token 合约
某个 NFT 合约
某个 Staking 合约
它本质上不是“人在操作的钱包”,而是“放在链上的程序”。
区别 2:能不能主动发起交易
这是今天最重要的一点。
EOA
可以主动发起交易。
比如:
- 转 ETH
- 调用合约
- 部署合约
合约账户
不能主动发起交易。
它只能:
- 被 EOA 调用
- 被其他合约调用
- 在调用发生时执行自身代码
区别 3:职责不同
EOA 的职责
- 持有资产
- 签名
- 发起指令
合约账户的职责
- 执行业务规则
- 保存状态
- 接收调用并返回结果
一句话总结:
EOA 更像“操作入口”,合约账户更像“业务逻辑中心”。
| 对比项 | EOA | 合约账户 |
| 是否有私钥 | 是 | 否 |
| 是否能主动发起交易 | 是 | 否 |
| 本质上是什么 | 持有资产 | 程序 |
| 主要职责 | 发起交易 | 执行交易 |