本文讨论了构建自托管钱包时在安全性、便利性和去中心化之间进行权衡的问题,并提出了一种新的架构,该架构以事务队列为核心,实现了模块化设计,从而在不影响隐私和去中心化的前提下,支持复杂的授权方案。通过将交易队列置于核心位置,可以构建更模块化、私密且去中心化的自托管钱包。
Safe ResearchJul 16, 202512 min read
自托管
当今的钱包格局沿着两条不完美的线划分。标准外部所有账户 (EOA) 易于掌握但不灵活,因为一切都依赖于一个私钥。智能账户解锁了更丰富的访问控制,但由于智能账户标准的采用缓慢以及许多链上协议中智能账户支持的滞后,大多数现有钱包都将这种能力隐藏在中心化的 UI 和临时基础设施之后。结果是用户体验中便利性总是会降低安全性或去中心化。Safe Research 宣言 认为,自托管不应该是一场零和博弈,而应该是一个连续体:可配置、安全且可互操作。
现代钱包最好理解为一组协同工作的角色,而不是一个庞大的应用程序。这是一个概念性的概述。其中一些组件可以作为彼此的一部分来实现,如下面进一步所示。
界面是用户看到和信任的东西。它显示余额、待处理和过去的交易,并且通常启动签名。很大一部分感知到的安全性和信任仍然存在于钱包 UI 中,例如 Safe Wallet。原因是用户自然不会考虑系统架构的不同底层组件,而是假设只有一个组件,即他们直接与之交互的组件。
签名者生成加密签名。它们可以是硬件设备,如 Trezor 或 Ledger,密码密钥,通常实现为浏览器扩展或移动应用程序的软件签名者,甚至其他智能账户,如 Safe。每个签名者最终都需要自己的用户界面。这可以在设备上、集成到主钱包中,或通过配套应用程序交付。重要的是要注意,像 MetaMask 或 Rabby 这样的浏览器扩展,由于其内置的软件签名者,既适合作为钱包 UI 的类别,也适合作为签名者的类别。
除了主要签名者之外,可能还需要其他方来授权多重签名或阈值设置中的交易。这些协同签名者通常是具有更高技术复杂性的人员或服务。它们通过在错误到达链之前检测到错误,从而提供另一道防线。术语协同签名者仅适用于实际批准/签名发生时。如果没有发生链上签名,则更适合使用诸如安全警报之类的名称。
我们将队列视为钱包的消息总线:一个私有的、标准化的已提议交易日志,等待签名和执行。在专注于 EOA 的软件钱包(如 MetaMask)中,此功能位于钱包 UI 内部。对于硬件钱包(如 Ledger Live)的配套应用程序也是如此。智能账户使队列能够真正存在于钱包 UI 之外。在今天的 Safe 基础设施中,此功能位于 交易服务 内部。在其他智能账户框架(如 Coinbase 的智能钱包)中,队列的功能由 ERC-4337 捆绑器 的 mempool 提供。
已执行的交易必须显示和验证,但交易历史记录不需要与队列严格耦合。Safe 再次依赖于其 交易服务。
虽然钱包代表用户的实际主权身份并持有资产,但 dapps 是用户打算使用的应用程序。有各种类型的 dapps,包括去中心化金融 (defi)、收藏品市场、游戏、社交媒体和治理。Dapps 启动由用户触发的交易。它们通常通过注入的提供程序或通过 WalletConnect 连接。
中继器获取预先授权的交易,这些交易已准备好执行,并将其推送到链上,从而抽象出 gas、批量调用或计划未来执行。
基于 EOA 的钱包围绕其 UI 展开。每个操作都通过界面及其控制的单个私钥进行。这不包括已通过 EIP-7702 扩展的 EOA。
UI 作为典型 EOA 钱包的核心。
交易队列和协同签名者的概念也可以存在,但不能独立于钱包 UI。在签署交易之前,它仅仅是需要仔细检查的原始交易数据。签署后,它可以立即执行,无需等待进一步授权。EOA 钱包无需在 UI 之外采用单独的队列组件。大多数 EOA 通过 RPC 请求直接将已签署的交易发送到 mempool,从而绕过任何中继器。使用大多数 EOA 的单个私钥,通过加密确认进行真正的签名是不可能的。因此,术语“协同签名者”并不理想,而 安全警报 是更合适的术语。这些通常通过链下服务(如 Blockaid 或 Hypernative)来实现,这些服务在签署之前检查交易数据,并提醒用户潜在风险。
这里值得一提的是属于 EOA 类别的 阈值签名 的概念。在阈值签名方案中,通常没有单个私钥,而是有多个私钥。值得注意的例子是 Shamir 的秘密共享 和 多方计算 (MPC)。虽然前者尚未在钱包中获得广泛采用,但有许多基于 MPC 的钱包提供商,如 Fireblocks。后者通常采用专有的加密技术。
在 EOA 钱包中,交易队列与钱包 UI 深度集成。可以通过安全警报进行交易检查,但不能通过实际的协同签名者进行。
从去中心化的角度来看,大多数 EOA 钱包都通过了 “步行测试”:如果你的团队和服务器明天消失,你的应用程序是否仍然可用? 诸如 BIP-39 和 BIP-44 之类的标准允许用户迁移到不同的 EOA 钱包提供商。诸如闭源 MPC 钱包之类的专有技术未通过此测试。
智能账户已经支持模块化扩展、交易批处理、交易赞助和各种访问控制方案,如每日限额或多重签名。示例包括 Ambire、Avocado、Biconomy 智能账户、Coinbase 智能钱包、Ready (以前的 Argent)、ZeroDev 智能账户 和 Safe。然而,大多数钱包实现仍然将钱包 UI 置于中心位置。Safe Wallet 例如也不例外地采用这种方法。替代 UI 是可能的,但由于钱包 UI 是大多数架构的核心,并且依赖于定制的协调,这增加了复杂性,因此尚未被采用。
其中一个原因是,许多协议仍然主要以 EOA 为设计理念,因为它们在用户数量方面占最大份额。较新原语的标准化缺乏导致智能账户钱包(如 消息签名、跨链交互和桥接)面临更大的 UX 挑战。
在去中心化方面,许多智能账户未通过 步行测试。而那些通过测试的智能账户,目前也仅适用于精通技术的用户。为了构建真正的自托管钱包,必须改变这种情况。
作为 SA 的一个关键优势,诸如交易队列、历史记录、中继器和协同签名者之类的组件可以真正独立于钱包 UI 构建。例如,在多重签名设置中,存在单独的签名者,他们可以使用单独的签名者 UI。交易在交易队列中等待进一步确认。可以进行实际的协同签名,即协同签名者可以在链上以加密方式确认交易,而不是仅仅依赖于链下信令。
以上所有内容包括智能账户,但也包括已通过 EIP-7702 扩展的 EOA。
钱包 UI 作为其他组件之间的协调部分。
我们的愿景利用了优势并重新排列了依赖关系。交易队列成为中心;签名者、协同签名者、中继器和其他模块化组件直接与队列通信,而钱包 UI 变得更可互换。通过将重心从界面转移开,我们可以解锁更丰富的授权流程,并能够在不增加中心故障点的情况下进行更强大的隐私工作。
交易队列作为更好的智能账户架构的中心组件
签名阈值以及与 ERC-4337 的关系: 智能账户钱包支持各种访问控制方案。一种流行的方案是 m-out-of-n
方案,其中 n
是现有签名者的总数,m
是在交易可以执行之前需要批准交易的签名者数量(“阈值”)。对于 m>1
,交易队列是收集和记录和签名数据的自然场所。对于 m=1
,交易队列可能只是收集交易数据以供检查的场所,这不是一个强大的优势。对于已签名的交易,它将非常类似于 ERC-4337 的 mempool。类似于我们的队列概念,ERC-4337 捆绑器 采用 UserOperations 的 mempool。这些 UserOperations
是完全准备好中继和执行的交易。ERC-4337 架构并非旨在原生捕获更复杂的交易生命周期。这方面的示例是更复杂的访问控制方案,例如 m>1
的多重签名或高级协同签名者设置,在提交交易之前没有直接的预先通信。对于 m=1
的智能账户,更侧重于交易批处理和赞助等功能,ERC-4337 mempool 是一个合适的解决方案,更高级的交易队列只会增加较小的优势。虽然今天很普遍,但我们认为未来阈值 1
将仅用于会话密钥或低风险交易的可能性很大。除此之外的任何事情都将依赖于协同签名者的保证。
独立于访问控制模式或阈值,真正的自托管钱包需要允许用户隐私。因此,一个设计良好的交易队列允许在私有和公共模式之间进行选择。强制每个人都进行加密和隐私是不明智的,因为这会迫使用户也为 不良行为者提供隐私。公共交易队列允许公开检查。另一方面,并非所有交易都应该是公开的,因为存在诸如暴露你的整个链上生活以及暴露于 最大可提取价值 (MEV) 等缺点。然而,所需的隐私是一个范围。在查看权衡时,与 以太坊 mempool 有几个相似之处。默认情况下,它们是公共的,但是 私有 mempool 已经出现。还有关于 加密 mempool 的工作。类似地,我们还设想了根据用户需求的不同类型的交易队列。需要有一个标准接口,以便任何签名者或协同签名者都可以参与。它保持轻量级、可替换甚至可能是暂时的,但它保证了每个交易生命周期的一致性。访问控制,即谁可以添加新交易以及他们是否可以被信任,依赖于各自 SA 的现有身份验证基础设施。
Safe Research 的 Harbour 项目是朝着该规范迈出的早期一步。它目前仅支持公共交易队列。
与钱包 UI 或签名基础设施相比,队列是去中心化和模块化钱包交互的自然场所。
交易历史记录可以在多个索引器之间复制,以实现弹性和可验证性,而与队列无关。隐私不是一个挑战,因为索引器通常索引来自区块链的公共数据。
Dapps 可以直接与交易队列通信,以提出要签署的交易。不再需要通过钱包 UI 进行通信。这也使其对于其他智能账户设置(例如阈值 1
的智能账户设置)也很有价值。它还支持 dapp 和钱包之间保留隐私的通信。Dapp 连接可以慢慢地从注入的提供程序转向与钱包无关的协议。挑战在于保持它们的免许可性。我们将探索单向、保留隐私的链接,例如提议的 ERC-1043 “UWULink”。
中继器 将 gas 管理与密钥托管分离,但我们仍然需要开放的市场,以便用户可以选择或切换提供商,而与使用的钱包 UI 无关。ERC-4337 和相关的 ERC(例如 ERC-7677)为中继器加入一个将账户与执行分离的网络奠定了良好的基础,例如几乎没有耦合。这优于其他依赖于他们中继的交易的特定属性或对中继者的一些信任的定制中继系统。为了进一步发展这一点,可以构建公共去中心化队列,钱包将交易推送到其中。捆绑器会拉取它并在执行方面展开竞争。
协同签名者 受益于在用户设备外部运行,从而增加客观检查,而不会损害密钥。用户受益于知识渊博、复杂且自动化的交易检查系统。如果用户必须这样做,他们仍然可以覆盖。对于临时会话或低风险交易,可以取消协同签名者要求。最佳配置取决于确切的用例。
钱包 UI 可以变得更加简单和轻量级。大多数用户感知到的信任可能仍然存在于 UI 上。但是,一旦队列协调状态,替换 UI 将变成 UI/UX 选择,而不是安全风险。IPFS 或其他内容寻址网络上的 UI 变得更有可能。
执行交易需要几个步骤。每个步骤都需要上述组件的子集。每个步骤都有自己的可用性、安全性和隐私挑战。
通过智能账户执行交易所需步骤的简化概述。
签名
真正的自托管钱包需要是模块化的和私有的。 关键组件需要尽可能轻量化并标准化,以便实现去中心化。通过围绕开放的、以队列为中心的架构进行旋转,我们可以消除当今强制的权衡,并提供一种钱包体验,希望它可以从单密钥的简单性扩展到机构级别的治理 - 所有这些都无需放弃控制权。
我们邀请构建者、研究人员和高级用户帮助完善此蓝图,并将自托管推向下一个篇章。
Safe Research 是 Safe 的应用研发部门,致力于推进自托管堆栈。我们的工作基于安全性、抗审查性 和 隐私 的密码朋克原则,我们专注于为智能账户和钱包构建无需信任的、以用户为中心的基础设施。
在 Safe 论坛 上讨论
了解有关 Safe Research 的更多信息
阅读我们的 宣言
让我们通过一次提交一次提交地实现以太坊最初的密码朋克愿景。
- 原文链接: safe.global/blog/safe-re...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!