账户合约
你的钱包不是某个应用私有的数据结构。它是一个 Safe v1.4.1 智能账户——同一份 合约正在守着远比 Vela 所能见到的更大的资金——而且是完全按 Safe 发布的样子部署的, 没有任何改动。
这句话很短,后果却不短,所以这一页把它们摊开讲。
这条路径上没有一样东西是我们的
在你和你的钱之间,站着四个合约。Vela 一个都没写:
| 合约 | 谁写的 |
|---|---|
| Safe v1.4.1(账户本身,一个代理合约) | Safe |
| Safe 4337 Module | Safe |
| SafeWebAuthnSharedSigner(验证你的 P-256 公钥) | Safe |
| ERC-4337 EntryPoint v0.7 | ERC-4337 的作者们 |
没有 Vela 合约这种东西。这个仓库里根本没有 Solidity——一条命令就能核实:
git clone https://github.com/mondaylabsltd/vela-wallet
find vela-wallet -name '*.sol' # 什么都不会输出 Vela 新增一条网络时,部署的是那些合约,用的是它们各自的规范地址。它不会部署 任何自己设计的合约,在你的账户上也没有任何特权角色:没有管理员密钥,没有升级通道, 也没有我们能加进去的模块。
为什么「未经改动」才是关键的那个词
很多钱包是建立在「一个 Safe」「一个 Safe 的分叉」或者「一个受 Safe 启发的账户」 之上的。分叉是一个带着旧名声的新合约。实际差别是:
那些审计,审的正是你在用的东西。 Safe 的审计报告覆盖的是这几个版本对应的字节码。 分叉的审计覆盖的是分叉之前的代码。如果一个钱包改动过账户合约,那么它引用的每一份 审计报告,审的都是另一个东西——而被改动的那部分,恰恰没人看过。
整个生态把你的账户当作 Safe 来对待,因为它就是。 区块浏览器解析得了它。 Safe 自己的交易工具认得它。如果 Vela 明天没了,你的钱包也不会变成一种孤儿格式—— 它是以太坊上工具生态最完整的智能账户,任何兼容 Safe 的界面都能驱动它。这正是 「Vela 消失了,你的钱包不会」这句话之所以是在讲合约、而不是 在讲我们的意图。
它的攻击面,是所有人都在盯着的那一个。 一份定制的账户合约,只有它的作者在看。 而这一份,所有把钱放在 Safe 里的人都在看。
代价是什么
标准化不是免费的,而且取舍是真实的:
- Gas。 智能账户要在链上验证一次签名。视链而定,大约是普通 EOA 转账的 1.5–3 倍 gas。见网络与费用。
- 账户必须被部署。 你的地址是在链上还什么都不存在的时候用
CREATE2算出来的, 所以你马上就能往里收款,但第一笔转出的交易要承担部署合约的费用。 - 不是每条链都够格。 WebAuthn 签名器要在链上验证一个 P-256 签名,这需要 RIP-7212 预编译。没有它的网络,Vela 宁可拒绝启用,也不退回到更弱的验证方式。
- Safe 的风险现在也是你的风险。 信任一份被广泛使用的合约,仍然是在信任一份合约。 Vela 能说的是:它没有在上面再加一样要你去信的东西。
什么审计过、什么没有
Safe 的合约和 WebAuthn 签名模块经过第三方审计,报告也是公开的。Vela 自己的应用 代码没有接受过独立审计,而且目前没有排期——这是一件等项目付得起钱时要做的事, 不是一个带日期的承诺。Vela 依赖的每一个合约、它的审计报告,以及我们在盯的问题, 都列在审计与已知问题里。
自己去看
你的账户就在链上。用区块浏览器打开它,读一下实现地址:在 Vela 支持的每一条网络上, 它都会是 Safe 在 v1.4.1 的规范部署,逐字节一致。