以账户抽象方式实现的 EVM multisig

·阅读 8 分钟·作者:SSP Editorial Team
通过账户抽象实现 EVM multisig 的示意图:两把 SSP 密钥生成部分签名,聚合为一个由 ERC-4337 smart account 在 Ethereum 上验证的 Schnorr 签名。

以账户抽象方式实现的 EVM multisig

multisig 描述起来很简单——要求多于一个签名才能转移资金——但它在不同区块链上的构建方式却大相径庭。在 Bitcoin 上,multisig 内置于协议本身。而在 Ethereum 和其他 EVM 链上则并非如此,正是这一点决定了 Ethereum 上每一款认真的 multisig 钱包(包括 SSP)的工作方式。本文将解释为什么 EVM 上的 multisig 有所不同,用通俗的语言介绍使其成为可能的 account abstraction 工具,并展示 SSP 究竟如何在 Ethereum 上实现真正的 2-of-2。

如果你是从 EVM 系列的开头来到这里,SSP 中的 Ethereum 奠定了基础;本文则是对其底层安全机制的深入剖析。这里的阅读门槛要高一些——属于进阶级别——因为要把这个主题讲透,就意味着要诚实地触及 ERC-4337 和签名聚合,而不是含糊带过。

为什么 EVM 的 multisig 不同于 Bitcoin 的 multisig

理解 SSP 在 Ethereum 上工作方式的最清晰途径,是先弄明白为什么 Bitcoin 的做法不能简单照搬过来。

Bitcoin 拥有原生的脚本 multisig。协议中包含一个操作码,允许你用类似"这三把公钥中任意两把必须签名"的规则来锁定资金。Bitcoin 上的 multisig 地址只是一个附带了该花费规则的地址,网络会直接强制执行它。SSP 在 Bitcoin 和其他 UTXO 链上通过 BIP-48 脚本 multisig 来实现这一点:两把密钥、一段脚本、需要两个签名。如果这个基础模型对你来说是新的,什么是 2-of-2 multisig 是入门的地方。

Ethereum 没有对等的机制。在 EVM 链上只存在两种账户。第一种是 EOA——外部拥有账户,由且仅由一把私钥控制。一把密钥、一个签名者,仅此而已;EOA 上没有任何原生操作码可以要求两个签名。第二种是智能合约账户,它拥有代码而非单一的控制密钥,并按照代码所写的内容行事。

因此在 Ethereum 上,"multisig"一直意味着一个智能合约钱包:一份被编程为只有在满足其多重签名规则时才释放资金的合约。这正是 Gnosis Safe / Safe 等钱包所开创的模型,而且运行良好。其代价在于,经典的链上 multisig 合约通常会存储每位拥有者的签名并在链上逐一验证,这会消耗 gas 且随签名者数量增长而增加。account abstraction 提供了一条更简洁的路径,而这正是 SSP 所采用的路径。

一份简短而诚实的 ERC-4337 入门

account abstraction 的理念是:你的钱包应当是一个智能合约——一个可编程的账户——而不是一对普通的密钥。ERC-4337 是在不改动基础协议的前提下,于 Ethereum 上实现这一点的标准。你无需精通它即可使用 SSP,但有几个术语能让本文其余部分豁然开朗。如需完整论述,请阅读什么是 account abstraction(ERC-4337);这里是面向用户层面的概览。

  • smart account。 你的资金存放在一个 smart account 中,其代码定义了什么才算是一笔有效的交易。由于它是代码,该账户可以强制执行自定义规则——包括"要求一个有效的 2-of-2 签名"。
  • UserOperation。 smart account 不会提交一笔普通交易,而是将其意图表达为一个 UserOperation:一份结构化的请求,说明它想做什么,并携带授权该操作的签名数据。
  • bundler。 bundler 是一项服务,它收集 UserOperations,将其打包进一笔真正的链上交易并提交。它预先支付 gas 并获得偿付;它绝不会获得移动你资金的能力。
  • EntryPoint。 一份经过审计的单一 EntryPoint 合约是链上受信任的协调者。它接收打包后的 UserOperations,并调用每个 smart account 进行验证,然后执行其操作。
  • paymaster 一份可选的 paymaster 合约可以赞助 gas,或允许用某种 token 而非原生币来支付手续费。它是可选的,且与 multisig 本身彼此独立。

关键洞见在于:有了 smart account,"谁可以授权一笔交易"的规则就是由你掌控的软件,而非协议的固定行为。这正是在一条没有原生 multisig 的链上,multisig 所需要的那种自由。

SSP 如何在 EVM 上实现 2-of-2

SSP 在它所支持的每一条链上都坚守同一个承诺:两台设备上的两把密钥,任何单独一把都无法移动你的资金。密钥 1 存放在 SSP Wallet 浏览器扩展中;密钥 2 存放在 SSP Key 移动应用中。你在扩展中构建并签署一笔交易,然后通过 push 在手机上批准它——两个签名缺一不可。

在 Bitcoin 上,这一保证来自 BIP-48 脚本 multisig。在 EVM 链上,SSP 将其重建为一个 ERC-4337 smart account,用于验证一个 Schnorr 聚合的 2-of-2 签名。下面是该思路的高层概述,在合约的具体内部细节并非重点之处,保持笼统。

你的两把密钥各自针对该交易生成一个部分签名。两台设备不会将两个签名分别发送到链上,而是将它们合并——采用 MuSig2 风格的签名聚合——成为一个单一、紧凑的签名。该 smart account 被编程为:只有当这个聚合签名针对钱包预期的密钥验证通过时,才接受一个 UserOperation。因此链上看到的是一个看起来普普通通的签名,然而从数学上讲,若没有两把密钥共同参与,这个签名根本不可能被生成出来。

相比在链上存储和检查 N 个独立的签名,这种设计具有实实在在的优势:

  • 更小的链上占用。 一个聚合签名比两个独立签名验证和存储起来都更便宜,这往往意味着以更少的 gas 换取同等的安全性。
  • 与单签名者钱包完全一致的 UX。 由于链上验证的是单个签名,从网络的角度看,你的 smart account 表现得就像任何普通账户。发送 ETH、转移 ERC-20 token 或与 DeFi 交互的感受都一样——第二个签名在你的两台设备之间悄然完成。
  • 处处通用的同一模型。 Schnorr 以及这种聚合方法建立在 secp256k1 之上经过充分研究的密码学之上,而同一套 smart account 设计可沿用到 SSP 所支持的各条 EVM 链,包括 Ethereum、Polygon、Base、BNB Smart Chain 和 Avalanche。

SSP 背后实现这一切的智能合约已于 2025 年由 Halborn 审计。至于更深入的 account abstraction 机制——EntryPoint、bundler 与验证步骤如何彼此衔接——请参阅account abstraction(ERC-4337)的讲解,而不要把这里任何一处孤立的合约细节当作权威定论。

这对作为用户的你意味着什么

密码学很有意思,但日常真正重要的是它所换来的保护。

  • 移动资金需要两台设备。 一笔交易只有在扩展和 SSP Key 各自贡献了它们的那一部分之后才有效。仅仅持有一台设备——或一把密钥——是不够的。
  • 丢失一台设备并不等于丢失你的资金。 由于没有任何单一设备能够独自签名,一部丢失或被擦除的手机,或一个被重新安装的浏览器,都不会把你资金的控制权交给任何人。恢复访问权限是另一个有其自身保障措施的话题;恢复在它自己的指南中介绍,不在此处。
  • 单把密钥被攻破并不构成单点故障。 即便恶意软件或 phishing 窃取了一台设备上的内容,它仍然无法生成 smart account 所要求的那个聚合的 2-of-2 签名。攻击者需要同时攻破你的两台设备——这比掏空一个单密钥钱包的门槛要高得多。

这些是一般性的保护,而非绝对的保证;良好的助记词卫生习惯和设备安全仍然重要。但结构性的要点依然成立:在价值发生转移之前,两个独立的因素必须达成一致。

与单密钥 EOA 钱包的中立对比

大多数 Ethereum 钱包都是单密钥 EOA。它们简单且被广泛支持,对许多用户而言已经足够。其代价在于,一把私钥就是全部:谁持有它谁就能转移一切,因此一句泄露的助记词或一台被攻破的机器都可能是致命的。

智能合约 multisig 通过要求两把密钥之间达成一致、而非信任单独一把,改变了这一风险格局。还存在其他智能合约 multisig 钱包——Safe 就是一个广为人知的例子——它们以各自的方式解决同一个核心问题。SSP 的独特选择是通过 ERC-4337 配合一个聚合的 Schnorr 签名来交付 2-of-2,于是你既获得了 multisig 的安全性,又拥有单签名者账户那样的链上占用和日常使用感受。

接下来去哪里

如果你想要概念上的根基,请阅读什么是 account abstraction(ERC-4337)以及作为基础的什么是 2-of-2 multisig。要了解这一切如何融入 SSP 中更宏观的 Ethereum 图景,请回到SSP 中的 Ethereum。至于标准本身,权威来源是 ERC-4337 规范以及 Ethereum Foundation 的 account abstraction 概览。贯穿其中的主线,与贯穿 SSP 所支持的每一条链的主线如出一辙:两把密钥、两台设备、一个签名——而你,掌控一切。

分享本文

相关文章