Caloogy 文章
English

EOA 与智能合约钱包:提醒和强制的区别

日期
2025 年 7 月 27 日
系列
钱包
阅读
4 分钟
主题
EoaSmart contract walletSafeMultisig

一句话版本

以太坊上最常见的地址叫 EOA(外部账户),它由一把私钥直接控制:谁有私钥,谁就能做任何事,没有任何规则能拦住。所以在 EOA 上,所有风控都只能"提醒",用户或者偷到私钥的人可以绕开任何界面直接转账。 智能合约钱包(如 Safe 多签)把"谁能动钱、动多少、多久之后生效"写成链上代码。规则在链上执行,丢一把钥匙也转不走钱。这是从"劝阻"走向"强制"的唯一途径。

全文分三层:

  1. 通俗理解:一把钥匙的保险箱和带规矩的保险库
  2. 实际用处:Safe、ERC-4337、EIP-7702,以及它们的局限
  3. 原理与工程要点:多签、Guard 与模块、时间锁、社交恢复

第一层:通俗理解

1.1 一把钥匙的保险箱

EOA 就像一个只有一把钥匙的保险箱:

所以在 EOA 上做的任何风控,本质上都是劝阻。

1.2 带规矩的保险库

智能合约钱包是一个由代码管理的保险库:

这些规矩写在链上,任何人都绕不过去,包括偷到一把钥匙的小偷。


第二层:实际用处

方案 说明
Safe(原 Gnosis Safe,2018 年起) 最主流的多签智能合约钱包,管理着大量 DAO 金库、项目方和机构的资产。支持 M-of-N 多签、Guard(交易前后检查)和模块(扩展功能)
ERC-4337(2023 年部署) 账户抽象标准:不改以太坊共识,就能让智能合约钱包像普通账户一样发起交易,支持手续费代付、批量交易、用 passkey 签名等
EIP-7702(2025 年随 Pectra 升级上线) 允许普通 EOA 给自己"挂上"一段合约代码,获得智能钱包的能力,而不用换地址
社交恢复钱包 丢了主钥匙,可以由事先指定的几位"守护人"联合恢复,类似Shamir秘密分享的门限思想

但智能合约钱包不是万能的:


第三层:原理与工程要点

3.1 多签(M-of-N)

合约里存着 NN 个所有者地址和阈值 MM。一笔交易要执行,必须收集到至少 MM 个所有者对它的签名。

常见的个人配置是 2-of-3:

钥匙 放在哪 作用
钥匙 1 日常设备(浏览器或手机) 日常签名
钥匙 2 一个按策略自动签名的服务器,或第二台设备 执行限额、白名单等策略
钥匙 3 离线保存(硬件钱包,放在保险柜) 恢复用,平时不动

任何一把钥匙丢失或被盗,都不足以单独转走资产。

3.2 Guard 与模块

3.3 时间锁

把大额或敏感操作分成两步:先登记,等待一段时间后才能执行,等待期间所有者可以取消。它在链上实现了冷静期:即使攻击者拿到了足够的签名,也要等过时间锁,而这段时间足够本人发现和撤销。

3.4 delegatecall 的危险

delegatecall 让当前合约以自己的身份、在自己的存储上运行另一个合约的代码。被诱导 delegatecall 一个恶意合约,等于让它随意改写钱包的存储,包括所有者列表和合约实现地址。这正是 Bybit 被盗的最后一步。安全的多签界面和 Guard 都应当对 operation = delegatecall 的交易特别警告或直接禁止。

3.5 选择

EOA 智能合约钱包
风控效力 只能提醒 可以强制
单把钥匙丢失 全部损失 通常无损
恢复 只能靠助记词 可以设计社交恢复、时间锁恢复
成本与复杂度 低 部署和每笔交易都更贵;跨链要逐条部署
新的风险 少 合约漏洞、模块、delegatecall、跨链地址不一致

总结

层次 要点
直觉 EOA 是一把钥匙的保险箱;合约钱包是带规矩的保险库
差别 EOA 上的风控只能劝阻,合约钱包可以在链上强制
工具 多签、Guard、时间锁、社交恢复;ERC-4337、EIP-7702
局限 防不了所有签名人一起被骗(Bybit);警惕 delegatecall 和跨链地址