账户合约

你的钱包不是某个应用私有的数据结构。它是一个 Safe v1.4.1 智能账户——同一份 合约正在守着远比 Vela 所能见到的更大的资金——而且是完全按 Safe 发布的样子部署的, 没有任何改动。

这句话很短,后果却不短,所以这一页把它们摊开讲。

这条路径上没有一样东西是我们的

在你和你的钱之间,站着四个合约。Vela 一个都没写:

合约谁写的
Safe v1.4.1(账户本身,一个代理合约)Safe
Safe 4337 ModuleSafe
SafeWebAuthnSharedSigner(验证你的 P-256 公钥)Safe
ERC-4337 EntryPoint v0.7ERC-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 的规范部署,逐字节一致。