Web3.0入口-MPC钱包和智能合约钱包

目前数字钱包存在的三个问题

Web3.0大规模普及,需要解决一些关键问题,包括钱包私钥带来的一个用户体验问题与两个安全问题。

1.一个用户体验问题

助记词与私钥难记、难保存,导致用户使用门槛过高

2.两个安全问题

助记词和私钥的泄露,导致资产被盗。

助记词和私钥的丢失,导致资产丢失。

数字钱包为什么只能通过私钥的方式进行验证

为什么只能通过私钥的方式进行验证?为了回答这个问题,我们需要了一些背景知识和概念。首先是以太坊上的账户类型。

以太坊一共有两种账户:外部账户(EOA)和合约账户(CA)。

合约账户就是智能合约,其代码由以太坊虚拟机来运行。

外部账户就是我们平常用来发起交易的钱包账户,它之所以被称为“外部“是因为这种账户本身是没有代码的,因此独立于以太坊虚拟机之外,由用户通过私钥进行控制。

合约账户(CA)虽然有自定义逻辑,但它是无法主动发起事务的。因此任何合约状态的改变都依赖外部账户来发起,并由外部账户(EOA)支付gas。

如何验证事务的合法性呢?

以太坊上的验证方式为检查事务的发起人和资产账户的拥有者是一致的(同一个人)。因此需要用户通过钱包对交易进行签名。

而以太坊默认的验证逻辑是通过secp256k1非对称密钥算法实现,用户必须掌握用于签名的私钥。

这就是为什么无论如何优化钱包的用户体验也无法绕开私钥的问题。

外部账户(EOA)并不具备代码逻辑。如果想要引入更复杂的逻辑来实现其他的功能,比如多签等等,是无法在外部账户上直接进行的。

那么,目前有什么样的方式可以解决此问题呢?

下面将介绍被认为最可行有效的两种解决方案:MPC钱包和智能合约钱包。

MPC钱包

MPC,全称为Multi-Party Computation(多方计算),是一种重要的加密安全措施。其包含了很多种技术方案,在本文的语境下主要指MPC-TSS。

而MPC钱包,是通过对私钥进行多方计算在链下实现“多签“、”跨链“等等更复杂的验证方式。

简单来说,就是将一个私钥打碎成多片,将私钥碎片交与一个去中心化的网络(Multi-Party多方)进行计算和加密。当需要私钥签名时,则将多方碎片再拼接起来形成一个完整的私钥。

MPC的核心思路为分散控制权以达到分散风险或提高备灾的目的,有效避免了单点失败等安全问题。

MPC钱包“多方参与”的概念与“多签钱包”有些类似,但实际上,虽然都可以实现“多签”的功能,二者的实现途径是不一样的。

之前我们所熟知的多签钱包,比如Gnosis Safe等等,是建立在智能合约上的钱包,合约中定义了验证逻辑,比如如果需要验证一笔交易,需要一个以上的私钥,或者五个中至少三个私钥进行验证。这类钱包属于后文即将提到的智能钱包的一种。

而MPC钱包,则是将一个私钥分解成多个片段,验证过程只涉及到一个私钥。并且计算网络是链下的,与智能合约并无联系。

MPC 钱包的优势

无单点故障。一个完整的私钥在任何时候都不会集中在一台设备上。也没有助记词。

可调整的签名方案。批准固定人数可以随着个人和组织需求的变化而修改,同时保持相同的地址。组织可以动态调整签名方案,而不必每次都通知交易对手一个新地址。

粒度访问控制。机构用户可以为一个策略分配无限数量的交易审批者,并分配能够准确反映组织角色和安全措施 ( 时间锁、MFA、欺诈监控 ) 的权限。个人可以通过 MPC 钱包即服务 (wallet-as-a-service) 选择半托管路线,第三方持有其中一个关键共享部分。

更低的交易和回收成本。MPC 钱包在区块链上表示为单个地址,其 gas 费用与常规私钥地址相同。这对于每天进行数百个交易的用户 ( 例如在 B2C 用例中 ) 来说非常重要。丢失的密钥共享部分也可以进行链下回收。

区块链不可知论者。密钥生成和签名依赖于链下的纯密码学。将兼容性扩展到新的区块链很简单,因为钱包只需要能够使用该链识别的算法生成签名。

MPC 钱包的缺点

链下问责制。签署授权政策和批准固定人数是在链下管理的,因此这些自定义规则仍然容易出现中心化问题。密钥共享仍然是加密秘密,应该像处理整个私钥一样处理。链下规则和签名阻碍了透明度,需要更严格的运营审计。

与许多用户采用的大多数传统钱包不兼容 ( 没有助记词,没有完整的私钥存储在单个设备上 )。MPC 算法也没有标准化,也没有得到机构级安全设备 ( 如 iPhone SEP 和 HSM) 的原生支持。

大多是孤立的定制产品。许多 MPC 库和解决方案都不是开源的,因此,如果出现问题,生态系统很难独立审计和集成它们。

基于 MPC 的解决方案主要针对机构客户,如基金、交易所和托管人。

智能合约钱包

智能合约钱包,正如其名,是基于智能合约(CA)而不是外部账户的钱包。

市面上已经有不少的智能合约钱包,但因为这些智能合约是自定义的,缺乏统一的行业标准,且存在合约漏洞以及与其他合约兼容性等等问题未获得广泛的应用。

即将来临的以太坊上海升级,智能合约钱包又因为“账户抽象”提案EIP-4337的重大进展而再次成为了热议的话题。

那么账户抽象到底是什么意思呢?实现了账户抽象后,又能给用户带来怎样全新的体验?在了解以太坊上的账户抽象之前,我们首先需要了解“抽象”的概念。

“抽象”是计算机科学最重要的概念之一,指在向外界提供必要的关键信息的同时隐藏其后台的实现细节,使得开发者在处理一个抽象层的任务时,只需要专注于这一个抽象层。

账户抽象同理,我们作为钱包用户,需要考虑很多因素,比如gas price、gas limit、事务阻塞等等复杂的费用逻辑。其根本原因是钱包不够“抽象”,导致需要处理很多本不应该由用户处理的问题。那如何解决呢?

逻辑很简单,我们可以将外部账户和合约账户抽象,使外部账户与合约账户相“结合”,通过智能合约赋予外部账户钱包更加复杂的逻辑。智能合约钱包能够实现的功能也不止“多签”这一个场景了。

如果EIP-4337能够实现以太坊账户的系统性升级,作为用户能获得什么新的体验呢?理论上只要能通过智能合约代码定义的功能都能实现。首先,智能合约钱包可以通过非secp256k1的验证算法进行验证,用户不需要面对长长的密钥对和助记词。

智能合约还可以赋予密钥更多的逻辑。比如在多签的场景下,给每一个私钥定义不同的权限。

此外,通过移动端与区块链交互会变得更加容易,我们可以授权一个专属于手机的密钥,且可以定义这个密钥加上限制,比如只能与固定几个智能合约交互,或者智能验证数额较小的交易等。其他能够实现的功能还包括一键授权批量交易、交易黑名单等等。总之,智能合约钱包的想象空间非常大。

智能合约钱包的优势

无单点故障。执行交易需要多个签名。

可编程访问控制。用户可以定义不同的规则,设置时间锁、支出限制、自动化。

可以实现交易批处理以节省成本。

可扩展。由于智能合约的可组合性,钱包开发人员可以创建一个模块生态系统,用户可以选择将这些模块添加到他们的钱包中,为 NFT 借待框架、DAO 投票模块和非托管资产管理服务等新功能创建一个应用程序商店。

可编程恢复。钱包可以提供几种选择,将资金回收到智能合约本身。

链上问责制。链上签名授权策略和聚合可以明确使用哪些密钥对交易进行签名,从而使操作更加透明和直接,以便在出现错误的情况下审计谁参与了交易。

支持迁移到其他签名方案。智能合约钱包可以将其签名方案改为更简单、更省 gas 或抗量子的方案。他们还可以在 iOS 和 Android 设备上使用 ( 将手机变成硬件钱包 ),或启用 Ed25519,允许使用 iOS 生物识别和网络认证。

开源。任何人都可以审计智能钱包的实现和功能扩展,从而通过生态系统的方式解决漏洞和添加新功能。

智能合约钱包的缺点

更高的费用。智能钱包的费用比普通的单地址交易要高,因为需要验证多个签名。添加 / 删除所有者和更改阈值等操作也需要链上交易。

没有得到普遍支持。虽然智能钱包可以部署在相同地址的任何 EVM 链上,但它们需要在非 EVM 链上定制实现。

恢复成本更高。虽然恢复逻辑是可编程的,但需要支付链上费用来执行它。

与不可升级的合约不兼容。尽管 EIP -1271 允许应用程序代表合约钱包进行签名,但它仍然没有得到普遍支持,并且不能添加到不可升级的合约中。

总结

二者是互补的方案,MPC钱包和智能合约钱包本质上不在同一个层面解决问题。

MPC钱包是链下方案,既可以控制基于外部账户的普通钱包,也可以控制智能钱包。

MPC钱包作为链下方案,并不涉及到以太坊共识层或合约层的改动,用户的使用成本更低,且在短期内更具可行性。此外,在一些特殊的使用场景比如跨链密钥等更具优势。

智能合约钱包是以太坊的系统性升级,可以给用户带来更多全新的体验和用例。但账户抽象是一个需要“兴师动众”的大工程,要求其他智能合约、开发者、以及以太坊架构都配合升级。过大的实操难度使从2015年就提出的愿景到今天也没有完全落地。

而智能合约钱包对于用户而言,最直接的问题就是钱包的使用成本将会提升,从创建钱包开始就需要支付费用。

智能合约钱包是最终愿景,MPC是短期内的热点方案,且在一些特殊场景更具实施优势。

考虑成本问题,智能合约钱包在以太坊主网实现的可行性和可能性都较低。可以更多关注Layer2上的账户抽象和智能合约钱包进展。

猜你喜欢

转载自blog.csdn.net/xingxincsdn/article/details/128818821