原文标题:Seedless Self-Custody: On MPC and Smart Contract Wallets
原文作者: Nichanan Kesonpat
原文编译:ChinaDeFi
自我托管一直被誉为管理加密资产的最佳实践。FTX 和 Celsius 的崩溃是一长串事件中的最新一起,这些事件提醒业内 「非彼之钥,则非彼之币」,引得人们纷纷奔向非托管钱包。在 FTX 事件曝光后,Safe 获得了 8 亿美元以上的净流入,Ledger 在短时间内连续经历了多个历史新高的销售额,Trezor 销售额飙升 300%,ZenGo 在一夜之间实现了三位数增长,存款达到历史最高水平,所有这些都发生在同一周内。
然而,大量用户仍然愿意承担托管风险,以换取较低的成本和易用性。在非托管钱包基础设施成为保护和管理资产阻力最小的途径之前,我们还有很长的路要走。
幸运的是,现在有一个蓬勃发展的钱包生态系统,为个人、DAO 和机构提供了更多的选择。加密不再只涉及安全存储,它还包括在新经济中使用资产。但是,不断增加的攻击面和漏洞,再加上日益丰富的功能,使得钱包需要既能够抵御攻击,同时又能支持日常业务和个人使用。
与所有的设计决策一样,这是针对给定用例的多个考虑因素的优化问题,也是钱包解决方案和密钥管理实践的能力,它们需要务实地平衡目标用户的集体需求:
个人需要无缝的用户体验、低费用、与 dApp 交互的灵活性。
DAO 需要透明的金库管理、生态系统治理参与。
机构希望通过链不可知性、可审计性和机构级安全性来外包责任。
有两类替代密钥管理解决方案取得了重大进展:智能合约钱包 ( 包括多重签名钱包 ) 和多方计算 (MPC) 协议。
本文涵盖:
钱包中要考虑的属性;
传统、MPC 和智能合约钱包的概述;
钱包生态系统的持续挑战;
当前钱包解决方案的权衡总结,以及钱包基础设施前景展望。
安全。从简单攻击到复杂攻击的保护程度。「良好的密钥管理」需要选择一系列解决方案,其加入和运营成本与链上活动的性质和风险金额相匹配。
成本。创建帐户、管理访问和执行交易的成本有多高。
用户体验和灵活性。访问控制管理、开销策略、限制和权限的粒度。
可恢复性。在受到威胁或造成损失的情况下,有能力恢复资产和访问权。
可扩展性。可以为核心产品带来新功能,以及能够建造出综合的产品和服务生态系统。
隐私。地址可以轻松链接到个人。
传统钱包使用助记词和分层确定性 (HD) 结构来派生私钥、对应的公钥和链上地址。这些钱包允许用户生成用于签署交易的私钥,并使用助记词恢复所有密钥。
到目前为止,传统钱包一直是用户保管资产的工具,也是他们与区块链应用程序交互的主要入口。像 MetaMask 这样的浏览器扩展程序和像 Rainbow 这样的移动应用程序已经为这个生态系统吸引了数百万用户。想要降低风险的用户可以选择 Ledger 和 Trezor 等硬件钱包,它们可以离线保护私钥,从而提供更好的安全性。
虽然业界已经做出了巨大的集体努力来告知用户保持助记词和密钥安全的重要性,但这个单点故障仍然是广泛采用的一个重要障碍。如果私钥丢失,除了失去所有资产外,用户还必须手动跟踪多个地址、代币批准,并因必须为新地址提供资金而损害隐私。
今天,不可撤销的字符串不仅可以让一个人的毕生积蓄全部被「访问」,而且越来越多地趋势是将用户在线身份的链上历史联系起来。获取私钥访问权的动机就是这么大,以至于黑客们,每个人都投入无限的资源,进行越来越有创意的攻击。现在,仅仅依靠用户已经不够了——我们需要完全消除这个单点故障。
多方计算 (MPC) 钱包和智能合约钱包帮助我们实现这一目标,并且已经有一个由机构、个人和 DAO 等采用的关于这两类产品和服务的生态系统。虽然这两种类型的钱包都消除了单点故障,但它们有一些基本的技术差异,导致了不同的折衷方案。
广义上讲,多方计算 (MPC) 使一组互不信任的各方能够根据他们的输入共同计算一个函数,同时保持这些输入的私密性。在密码学中,这对于保存用于解密数据或生成数字签名的私钥特别有用。
MPC 钱包通过使用阈值签名方案 (TSS) 消除了单点故障。在这个范式下,我们创建并分发私钥的一部分,这样就没有一个人或机器能够完全控制私钥——这个过程被称为分布式密钥生成 (DKG)。然后,我们可以通过合并部分,并且在不暴露各方之间的部分的情况下共同生成公钥。
为了对消息和交易进行签名,每一方都要输入秘密共享部分与公共输入 ( 要签名的消息 ),以生成数字签名。从那里,任何知道公钥的人 ( 即验证者节点 ) 都应该能够验证和验证签名。由于密钥部分是被组合的,签名是在链下生成的,因此从 MPC 钱包生成的交易与传统的私钥钱包的交易没有区别。
这为 MPC 钱包用户保护了一定程度的隐私。对于那些希望将其签名方案和签名者活动置于公众视线之外的组织来说,这个特性是开箱即用的,因为这些过程发生在链下。这样,组织就可以保留参与签名的内部日志,而不对外公开。
Private Key Rotation 是另一种 MPC 协议,它将秘密共享部分作为输入,并输出一组新的秘密共享部分。旧的秘密共享部分可以被删除并替换为新的共享部分,新的共享部分可以以相同的方式使用,而无需更改相应的公钥和地址。
无单点故障。一个完整的私钥在任何时候都不会集中在一台设备上。也没有助记词。
可调整的签名方案。批准固定人数可以随着个人和组织需求的变化而修改,同时保持相同的地址。组织可以动态调整签名方案,而不必每次都通知交易对手一个新地址。
粒度访问控制。机构用户可以为一个策略分配无限数量的交易审批者,并分配能够准确反映组织角色和安全措施 ( 时间锁、MFA、欺诈监控 ) 的权限。个人可以通过 MPC 钱包即服务 (wallet-as-a-service) 选择半托管路线,第三方持有其中一个关键共享部分。
更低的交易和回收成本。MPC 钱包在区块链上表示为单个地址,其 gas 费用与常规私钥地址相同。这对于每天进行数百个交易的用户 ( 例如在 B2C 用例中 ) 来说非常重要。丢失的密钥共享部分也可以进行链下回收。
区块链不可知论者。密钥生成和签名依赖于链下的纯密码学。将兼容性扩展到新的区块链很简单,因为钱包只需要能够使用该链识别的算法生成签名。
链下问责制。签署授权政策和批准固定人数是在链下管理的,因此这些自定义规则仍然容易出现中心化问题。密钥共享仍然是加密秘密,应该像处理整个私钥一样处理。链下规则和签名阻碍了透明度,需要更严格的运营审计。
与许多用户采用的大多数传统钱包不兼容 ( 没有助记词,没有完整的私钥存储在单个设备上 )。MPC 算法也没有标准化,也没有得到机构级安全设备 ( 如 iPhone SEP 和 HSM) 的原生支持。
大多是孤立的定制产品。许多 MPC 库和解决方案都不是开源的,因此,如果出现问题,生态系统很难独立审计和集成它们。
基于 MPC 的解决方案主要针对机构客户,如基金、交易所和托管人。像 Fireblocks 和 Qredo 这样的 MPC 技术提供商,允许他们的客户为不同类型的交易定义自己的工作流,使他们能够保持合规和安全。然而,散户投资者的基础仍然依赖于独立的研究和私人密钥钱包。Web3Auth 最近发布了一个 MPC SDK,用户可以使用他们的 iCloud 或电子邮件作为备份。像 Entropy 这样的去中心化托管协议正在为消费者和 DAO 构建开源工具,以便他们能够在线存储资产。
Lit 是一个去中心化协议,它将密钥共享存储在 Lit 网络节点上。公钥 / 私钥对由 PKP( 可编程密钥对 )NFT 表示,其所有者是密钥对的唯一控制者。然后,PKP 所有者可以触发网络聚合密钥共享,以解密文件或在满足任意定义的条件时代表他们签名。
这对去中心化访问控制、资产管理和链上自动化交互具有很大的意义。通过向 Lit Action( 部署到 IPFS 的不可变代码 ) 授予签名特权,PKP 可以用作 MPC 或去中心化云钱包,使用任何可用 javascript 表示的身份验证方法。
铸造 PKP NFT 是基于 MPC 的分布式密钥生成过程,它使 NFT 所有者成为 PKP 的根所有者。因此,转移这个 NFT 相当于交易私钥,这实际上打破了「灵魂绑定」代币 (SBT) 的概念,因为 SBT 是与特定的所有者绑定,现在是钱包本身可以安全地交易,因此,「钱包绑定代币」可能是更合适的名称。
以太坊目前有两种账户类型:
外部拥有帐户 (EOA)——由私钥控制
智能合约帐户——由代码控制
智能合约钱包 (「智能钱包」) 是一种行为类似于钱包的智能合约,即一个允许用户管理资金、进行 web3 登录和与 dApp 交互的界面。与私钥钱包不同的是,智能钱包的创建需要初始成本,因为智能合约需要部署在链上。
多重签名钱包是智能合约钱包,它需要 M-of-N 密钥的签名才能执行交易。MPC 只创建单个签名,而不管参与的密钥共享的数量,多重签名使用由不同私钥生成的不同签名对交易进行签名。这使得它与现有的私钥钱包兼容,并位于 Ledger 或 MetaMask 等传统钱包地址之上的一层。
像 Safe 这样的智能合约账户标准为资产管理产品和服务的生态系统提供了一个基础层。功能是通过模块添加的,它允许用户定义管理密钥逻辑、支出限制、重复交易、帐户自动化、分层访问等等。目前最多产的一组 Safe 模块是由 Zodiac 团队构建的。
无单点故障。执行交易需要多个签名。
可编程访问控制。用户可以定义不同的政策,设置时间锁、支出限制、自动化。
可以实现交易批处理以节省成本。
可扩展。由于智能合约的可组合性,钱包开发人员可以创建一个模块生态系统,用户可以选择将这些模块添加到他们的钱包中,为 NFT 借贷框架、DAO 投票模块和非托管资产管理服务等新功能创建一个应用程序商店。
可编程恢复。钱包可以提供几种选择,将资金回收到智能合约本身。
链上问责制。链上签名授权策略和聚合可以明确使用哪些密钥对交易进行签名,从而使操作更加透明和直接,以便在出现错误的情况下审计谁参与了交易。
支持迁移到其他签名方案。智能合约钱包可以将其签名方案改为更简单、更省 gas 或抗量子的方案。他们还可以在 iOS 和 Android 设备上使用 ( 将手机变成硬件钱包 ),或启用 Ed25519,允许使用 iOS 生物识别和网络认证。
开源。任何人都可以审计智能钱包的实现和功能扩展,从而通过生态系统的方式解决漏洞和添加新功能。
更高的费用。智能钱包的费用比普通的单地址交易要高,因为需要验证多个签名。添加 / 删除所有者和更改阈值等操作也需要链上交易。
没有得到普遍支持。虽然智能钱包可以部署在相同地址的任何 EVM 链上,但它们需要在非 EVM 链上定制实现。
恢复成本更高。虽然恢复逻辑是可编程的,但需要支付链上费用来执行它。
与不可升级的合约不兼容。尽管 EIP -1271 允许应用程序代表合约钱包进行签名,但它仍然没有得到普遍支持,并且不能添加到不可升级的合约中。
智能钱包在生态系统范围内,在努力完全摆脱 EOA 和私钥(也称为帐户抽象)的过程中发挥着至关重要的作用。在这种范式下,所有账户都是智能合约,它们有自己的逻辑来规定什么是有效的交易,允许用户根据自己的特定需求定制账户。
自 2016 年以来一直在讨论帐户抽象,但生态系统在对解决方案上的协调方面一直进展缓慢。L2 已经极大地加快了其意识和采用,例如 StarkWare 已经将所有 Starknet 账户本地化为智能钱包,zkSync 2.0 也将与 AA 一起推出。
在以太坊上,存在多个 EIP 来完成路线图上的里程碑,使帐户抽象成为现实。
EIP-4337:将签名验证、gas 支付和重放保护从核心协议移出到 EVM 中,让用户能够使用包含任意验证逻辑的智能钱包,而不是将 EOA 作为他们的主要帐户,同时也无需任何共识层更改。这个 EIP 引入了一个 UserOperations 内存池,它与现有的内存池并行存在。捆绑器 ( 验证者、MEV 搜索者或应用程序本身 ) 从 UserOperations 池获取交易,将它们转发给区块链并支付费用。在这里,启动钱包本身不支付 gas 费用,但应用程序可以通过收费订阅模式为用户聚合。
EIP-3074:允许 EOA 将控制权委托给合约,让现有的 EOA 发送由第三方支付的操作。
EIP-5003:将现有的 EOA 升级为合约,并允许其从 ECDSA 迁移到更高效或抗量子签名方案。
Parity Multisig 黑客攻击和最近的 Rabby Swap 攻击表明,如果实现有缺陷,即使是最好的存储资金的概念方法也没有什么意义。我们可以预见,智能合约账户的标准将会出现。
任何技术解决方案的优点仍然不能消除社会层面的风险。损失 6 亿美元的 Ronin Bridge 漏洞不是由于任何技术缺陷,而是针对 Sky Mavis 一名员工的社会工程攻击,使攻击者能够访问验证者密钥。除了决定使用哪个钱包来管理资产之外,组织还需要确保这个关键系统的每个「组件」在社交和技术层是真正独立的。
从一个帐户迁移到另一个帐户既不有趣也不便宜。尽管目前市场上有强大的钱包替代品,但用户迁移现有的 EOA 是有实际成本的:交易费用、关闭 / 打开 DeFi 头寸、收入影响、用户错误、时间和精力。
自我保管对于今天的大多数用户来说是一个可怕的前景,因为提高是需要有意识的努力的,这可能是一项艰巨的任务。大多数交易数据是不可读的 ( 尽管这一点正在改变 ),错误是不可逆转的。就像加密教育一样,这个问题不能由一个团队单独解决,需要工具和用户体验模式。
尽管 MPC 和智能钱包有着共同的「这个 vs 那个」框架,但从长远来看它们并不是竞争关系,而是互补关系。MPC 在密钥生成和管理级别提供了共享安全性,而智能合约为功能和应用程序开发带来了可扩展性和生态系统方法。例如:
MPC 可以通过将一个或多个私钥分割成多个部分来增强现有的多重签名方案。如果三个人被用来保护一个 2 / 3 的多重签名,这三个用户中的每个人都可以使用 MPC 细分他们的个人私钥,并将他们的 MPC 密钥部分存储在独立的机器上。
社区或 DAO 可以是拥有 PKP NFT 的多重签名的签名者,该 NFT 管理去中心化的云钱包,可用于自动投资或 DEX 交互。
今年,中心化实体的不计后果的行为在许多方面削弱了加密货币,它们侵蚀了行业的信任,最重要的是失去了用户的资金。本文重点介绍的技术和项目为每个人都可以参与去中心化经济,同时不用将命运掌握在少数人手中的未来铺平了道路。