区块链帐户抽象和钱包演进
真无牙泛
发表于 2022-12-12 17:47:19
153
0
0
虽然钱包确实让用户完全保管他们的资产,但它们缺乏其他在线账户的安全保障。用户必须安全地存储和保护他们的私钥/短语,否则有可能失去他们的数字资产。这与银行账户甚至集中式加密货币交易所账户等非常不同。例如,Coinbase和基本上所有其他集中式账户都让用户启用2FA,以确保其资产的安全。这种类型的功能目前在任何链上解决方案中都是不可能的。由于缺乏基本的安全功能,零售用户甚至不敢接触链上应用,导致他们坚持使用他们的集中式和托管式钱包。正如我们最近观察到的,这不一定是一个更安全的选择。FTX、BlockFi和Celsius等公司的失败以及由此造成的用户资金损失,加强了对资产进行自我保管的理由。然而,零售用户需要一个简单的方法来这样做。目前这种模式如何改变?通过将我们的钱包演变为账户抽象化钱包,我们可以解决今天困扰我们的许多用户体验问题。
- G/ j) Q' K( h+ N: g- ~
目前的系统
有两种方法可以在链上实现自我保管的钱包:你要么需要一个外部拥有的账户(EOA),要么需要一个合同账户(CA)。两者都能够发送和接收数字资产,以及与部署的智能合约进行互动。然而,它们有一些关键的区别,在下表中进行了总结。9 @, v6 i( X. v0 t0 e! K
现在,合同账户通常只用于多签名钱包形式的自我保管,或 "多签名"。多重签名提供了更高的安全性,但通常不是零售用户在链上保存资产的实用方法,因为它们的设置要比普通的EOA钱包复杂得多。如果没有账户抽象化,合约账户就不容易被用作存储数字资产的主要方式。& ~' R: @ j! ~4 a
% A& L1 d$ a; R7 @) u0 _
有3个重要的条件必须满足,才能被归类为 "账户"。不管是外部拥有的账户还是合约账户,都必须满足这些条件。一个账户必须有一个。( U$ ]& o, S, k9 ]4 ^3 f8 {
" P% d4 n; ^ z3 x/ x$ _# o
l 余额 - 这代表了钱包内数字资产的数量
$ h, F' O' y0 [+ ]% M4 u8 S
l 账户随机数 - 这确保从钱包发出的每笔交易都是不同的4 [1 @0 Y3 @! f" h
8 d1 j) A* |+ G2 s( _
l 地址 - 这是网络上每个账户的唯一标识符) O7 a8 l2 N7 P+ w' J' d: q7 R; d7 c
. J% m& Z1 z& y+ a1 G( |* ~' f8 f
虽然这两种类型的账户表面上看起来相似,但最大的区别是,EOA必须签署每一笔链上交易。因为这个原因,合约钱包还不能作为适当的替代。用户通过一对密钥,即公钥和私钥拥有一个EOA钱包。这对钥匙被称为签名者。一个EOA钱包的地址来自公钥,而账户的交易必须用私钥签名。合约钱包没有一对密钥来启动交易。 这指出了外部拥有账户的一个致命缺陷。EOA钱包既是一个账户又是一个签名者。这导致了给用户带来麻烦和潜在的严重问题。
EOA模式的问题。. e3 a, I8 E, {- G$ ~5 k: u
虽然说目前的EOA设计(这是当今钱包的标准)存在根本性的缺陷是不中肯的,但它肯定不是全世界数十亿人可以使用的状态。其主要原因是,签名人对账户有完全的控制权。如果你失去了签名者,你就失去了你的账户。如果有人掌握了你的签名者,他们就拥有你的账户。虽然在完美的条件下,这可能有助于持有用户的资产,但我们并不生活在一个完美的世界。EOA钱包的安全性完全依赖于用户对单一私钥的管理。没有安全网;不可能有错误。然而,人们很容易犯错,如果钱包计划扩展到大众,就不能这么复杂。
/ W2 J" C) Y- B+ B( p
一个简单的方法是跳到Twitter上搜索 "BAYC被黑",就可以看出目前的自我保管形式是有缺陷的。
由于目前自我监护是非常困难的,无聊猿jpeg的持有者不断受到攻击。- |; c- v5 S3 j! [
3 q* k; p$ Y* |. V4 v: X. H$ r
他们经常被黑客攻击。100多个无聊猿游艇俱乐部NFT已经被盗,而且它们继续以相当频繁的速度被盗。这是以太坊用户体验的一个明显问题。丢失价值六位数的数字资产不应该是一件容易的事情。我们不应该期望下一个金融系统依赖于写在一张纸上的12个字。
' e% J. b; R; X: F, X2 S: y
帐户抽象,解决方案?- }, r( S8 i2 A6 _
5 |/ C1 c+ R0 \' F0 n. S! N) ]
帐户抽象的目标是解开签名者和帐户之间的关系。帐户抽象化钱包是一个智能合约钱包,它根据预先指定和可定制的规则来定义什么是有效的交易。其目的是防止签名者对钱包资产的情况有绝对的和最终的控制。与其同时拥有EOA账户和合约账户,账户抽象化将它们合二为一;智能合约钱包将能够作为独立的钱包使用。这在今天是不可能的,因为所有的交易都必须来自EOA地址。然而,每一个新的EIP使我们越来越接近账户抽象的现实。' v( ?6 q" T6 p% Z
- {2 h+ B3 x5 r% t% S# `5 H, ~
账户抽象的历史
为了正确实现账户抽象,减少对EOA账户的需求,人们长期以来一直认为需要在全网范围内进行变革。自2016年以来,Vitalik和其他以太坊核心开发人员一直在起草关于这种变化可能出现的解决方案。这些总结如下。
l EIP-86:由Vitalik Buterin在2016年提出,在以太坊首次发布后不到一年,这个EIP引入了智能合约作为 "转发合约 "的概念,只接受来自 "入口点 "地址的交易,如果交易遵循特定格式,任何人都可以从这个地址发送交易。这需要对以太坊协议进行重大修改,因此被废止了。9 R8 S% c9 B* k& F" `6 ^0 F
9 y/ A) W# l. b" U( {3 J
l EIP-1014:由Vitalik Buterin在2018年提出,这个EIP采用了EIP-86的核心思想,并创建了CREATE2操作码。这使我们能够预测合同将被部署的地址,而不需要实际部署它。这很重要,因为为了让智能合约钱包发挥作用,我们必须确保智能合约地址在所有EVM链上是相同的,即使它没有同时部署到所有EVM链上。3 J* g/ t) E2 b& X! S' l! B) G
- ?2 @( ]+ R8 t, K* t
l EIP-2938:由Vitalik Buterin、Ansgar Dietrichs和Matt Garnett于2020年9月提出,这个EIP试图进行新的 "账户抽象 "交易,需要创建新的操作代码。这被证明是一个太大的协议变化,并不确定它将如何发挥。EIP-2938被废止了。& u; s$ X# `5 `, F# i
& O1 |$ }' ]" [2 G6 d- I
l EIP-3074:由Ansgar Dietrichs和Matt Garnett于2020年10月创建,该EIP引入了两个新的操作码。AUTH和AUTHCALL。当一起使用时,它们允许智能合约代表EOA发送交易。正如我们在过去的其他EIP中看到的那样,重大的网络变化不太可能被批准。EIP-3074也不例外,面临着对其安全风险的犹豫,所以它没有被实施。7 W5 X$ r, g$ ^/ A$ m7 d4 w# {
0 u) \7 K6 R) {' V! V0 Z
值得注意的是,从EIP的时间轴来看,账户抽象自以太坊诞生之初就一直在以太坊核心开发者的脑海中。随着合并的完成,更多的开发者资源终于可以考虑账户抽象。下一个EIP终于让我们接近了下一代钱包。2 I, M& U# Z6 y8 u0 L' T1 n
l EIP-4337 - 无需共识层协议更改的以太坊账户抽象:2021年9月,Vitailk、OpenGSN和Nethermind提出了EIP-4337--通过入口点合约规范实现账户抽象。该EIP试图在不需要改变核心协议的情况下完成账户抽象化。这是一个巨大的成就,因为到目前为止,协议变化是阻止大多数进展的原因。EIP-4337仍处于草案阶段,尚未最终确定,但由于EIP-4337不会改变共识层,已经有了它的实现,包括OpenZeppelin和Stackup。这个EIP功能的机制可以分解为三个步骤。/ B( N7 O& Z) P$ N3 g3 H2 v
1. UserOperations,(本质上是正常的交易,有额外的数据字段,可以实现账户抽象功能),通过一个自定义的mempool发送: ]2 U5 E; y8 t
7 L: [- F \; g7 O2 Y& F+ A" r
2. 之后,UserOperations通过Bundler被打包成一个单一的事务。捆绑器将根据费用优先级逻辑选择要包括的UserOperation对象,类似于矿工在现有交易mempool中的操作方式。捆绑器(使用Flashbots这样的服务)调用EntryPoint合约进行验证% @8 {" r: _* b; E- b
3. 如果没有错误,交易会被纳入网络上的下一个区块中。5 y/ t; s# J6 O8 s
) H. i9 L) }' R P
EntryPoint合约是一个关键的基础设施,通过捆绑器调用。这个智能合约被调用,首先验证UserOperations是否遵循账户的预先指定的规则,然后执行它们。重要的是要记住EIP-4337没有协议级别的变化。这意味着Bundler是一个EOA地址,向链上提交所有这些交易。EntryPoint合约可以通过添加一个Paymaster来进一步扩展。Paymaster提供了一些好处:
1. 它允许应用程序开发人员代表他们的用户支付费用。: o4 X N. F9 l8 n, A2 H
( b! b( l0 l! n1 ~3 e7 J
2. 它允许用户以ERC20代币支付费用,合约作为中介收取ERC20并以ETH支付气体费用
这对那些不希望自己的用户支付网络费用的应用开发者来说是一个巨大的奖励。用户将能够以不同的代币直接支付给一个 "付款人"--然后他将转换为ETH以实现系统兼容。这只是账户抽象化钱包相对于EOA钱包的独特用例之一,还有很多我们必须要谈的内容。
; A/ z6 I' N7 [1 }
账户抽象的用例
将钱包转变为可编程的智能合约,为新功能打开了大门。拥有一个账户抽象钱包的好处和新的用例是如此之大,对于大多数用户来说,实际上是值得迁移到一个账户抽象钱包。这就好比从一个旧的诺基亚手机升级到最新的智能手机。
智能合约钱包与EOA钱包相比,在功能上是一个重大的升级 - 来源:Argent Wallet on Twitter: Argent Wallet在Twitter上。) G4 M' ^! ~7 U& O* C
7 h) V1 i [! d# y' w* P
社交恢复
( S: U/ X2 ^% K- X M! {! t! T
在确保用户数字资产安全方面,社交恢复是最重要的好处之一,其目的是在用户丢失签名密钥时保护他们。想象一下,如果一个用户的笔记本电脑坏了,他们把他们的私钥或种子短语的物理拷贝放错了地方。在这种情况下,使用EOA钱包,你的所有资产将永远失去。社交恢复不是使用种子短语来恢复钱包,而是遵循一种不同的方法。这是Vitalik最喜欢的保护钱包的方法,他在下面定义了它是如何工作的。
l 有一个单一的 "签署密钥",可用于批准交易: z, X1 g$ O) v
8 X6 ^( ? R0 b. L [9 I# \% ]
l 有一组 "监护人",其中大多数人可以合作改变账户的签名密钥: Z/ n. o; B0 C+ Z% i1 E- }
如果用户丢失或忘记了他们的签名钥匙,可以激活社交恢复功能。通常情况下,如果我丢失了我的签名密钥,并丢失了我的种子短语,我将无法获得对我的账户的访问。有了社交恢复功能,用户可以简单地联系他们的监护人,要求他们签署一个特定的交易,将钱包合约中注册的签署密钥改为新的。虽然有一些机械上的差异,但这在概念上类似于当你忘记谷歌账户密码并需要重新获得账户访问权时的情况。
, O- u. j" `/ w0 i \$ n
对于选择谁作为监护人,有许多可能的选择。最常见的三种选择是。# \- e8 m5 V( A# x" U! ?
l 钱包持有人自己拥有的其他设备
' N% |0 a+ V$ V5 p9 ~
l 朋友和家人: ? R( P7 F2 `2 Z: U, q
9 x' `3 x" w& f
l 机构,如果他们得到你的电话号码或电子邮件的确认,就会签署恢复信息,或许在高价值的情况下,会通过视频通话来验证你本人4 Y" n: r0 J" A
; w9 G! S; c! J9 |
添加新的监护人是一个相当简单的过程。$ a1 O2 K. [/ M" D
+ Q& q7 B. y8 a: |7 L0 ]6 O+ u, A5 V
Unipass钱包添加监护人的界面截图
UniPass Wallet是一个即将推出的智能合约钱包,其主要功能之一是社交恢复。UniPass内涵一个界面,通过这个界面可以无缝地添加和删除监护人。
/ R, k. V' J; |: C9 A" ]# ^! B L# U
基于角色的访问控制
对于许多传统的 "web2 "应用程序,用户需要由平台的开发者启用双因素认证(2FA)。这自动防止了大量的黑客行为发生。
值得注意的是,许多其他文章会声称,通过短信或电子邮件地址的多因素或2因素认证是通过拥有账户抽象钱包解锁的新功能。实现这种形式的2FA通常利用多方计算(MPC)和一个链外服务器。目前还没有一个纯粹的链上实现。但由于它是由MPC技术驱动的,它也可以通过仅仅使用EOA钱包来实现。说它是账户抽象化钱包所独有的是不中肯的。
: l& O* \. o" x& G% U, l
然而,智能合约钱包可以通过要求你的热钱包作为二次确认的形式,在链上实现类似类型的功能。这自动防止了大量黑客的发生,因为即使你被钓鱼,你可能仍然需要确认才能移动你的资产。账户抽象化钱包让你根据自己的喜好来定义特定的安全参数。这方面的例子可以包括:
7 u3 m* y: K0 s; w8 H) T
l 设置每日交易限额,指定每天可以发送的货币门槛,除非你通过硬件钱包确认。这将防止你的钱包一下子被耗尽。0 y* J4 Z# h& V1 i9 v
" I. N. H" ?' _) ]% m5 h, l
l 连接到一个著名的 "诈骗 "地址数据库,如果数据库中存储了你正在进行互动的地址,它会立即提示你通过你的硬件钱包确认交易。6 u" B. u. q5 I1 z% j: W! _8 a
3 m6 X9 h2 ~% G0 a- F! M2 s# J$ o
l 检查Opensea藏品,让你知道你正在购买一个未经验证的NFT藏品,并提示你通过你的硬件钱包确认,防止购买假/恶意NFT的混乱。
最重要的是,所有这些功能在进行链上互动时提供了一个多层次的安全网。大多数用户不知道他们正在签署或批准什么。现在,我们在一个系统上运作,一个错误的点击可以瞬间耗尽你的钱包的余额,这需要改变。
会话密钥/ s/ B. l* N0 U3 @/ U
许多人认为区块链游戏将是web3的下一个大叙事。要做到这一点,需要有比目前存在的更好的用户体验。只要用户想与他们正在玩的游戏中的东西互动,就必须批准多种功能,这是没有意义的。这不是传统游戏的工作方式,并且会因为界面的不熟悉和笨拙而使人们望而却步。会话密钥允许用户根据一组参数预先批准一个应用程序的交易:一个给定的持续时间,一个最大的气体量,一个特定代币的最大交易量,或一个特定合约的特定功能。用户将能够用一些基本条款预先批准他们的会话,点击开始,然后玩游戏,而不会不断地被他们的钱包轰炸询问 "确认此交易"。
批量交易, U' m }( ^6 w1 l2 j
现在,如果我想使用一个去中心化的应用程序,我需要为每个链上的互动做一个新的交易。这很烦人,而且也会很贵,因为每次批准的互动都要花钱。有了账户抽象账户,钱包可以将多个交易捆绑在一起,将它们作为一个交易执行。
这从根本上简化了用户体验。复杂的交易可以简化为只需要点击一个按钮。( i+ K5 p% A; s0 ~/ c
. U: Q% K, j/ w( q! ^3 ^
其他用例: p+ e. p/ a& H* _$ Q0 L2 y
+ X2 r: m. G5 A5 N% L" w% L
一个账户抽象钱包可以支持的功能是无限的。因为账户抽象钱包是智能合约,钱包开发者可以不断地更新它们的新功能和效用。我们甚至可以期待钱包的第三方插件。然而,这让我想到了我的下一个观点:现今账户抽象化钱包的缺陷。
账户抽象的潜在问题
5 ?0 d% w; ~* @: g$ w, ?
账户抽象钱包目前没有在协议层面上实现,目前只是作为智能合约存在,气体以创造性的方式被转发。因为这些钱包是智能合约,所以出现了一些问题。, t( ]# e; F3 h7 a: i
/ B2 t; r# G$ S
首先,部署智能合约钱包是有成本的,因为它使用区块链存储。目前可以通过使用更便宜的链或由中继者支付这一成本来规避这一问题。然而,这并不能真正规避提交交易的较高gas成本。通过智能合约钱包发送单笔交易的gas成本比通过EOA钱包发送更贵。虽然这一点有一天可以通过适当的交易批处理得到改善,但我们还没有到那个时候。' u) q" b N& t2 I5 f& b9 N0 ~
* z' G( Y0 j' ?% N& p$ {
第二个更重要的问题是,每个钱包在被用作EOA的替代品之前都需要进行审计。如果一个广泛使用的智能合约钱包有漏洞,它可能是有史以来最大的黑客之一。这不仅仅是假设,因为智能合约钱包以前就被黑过。2017年,Parity智能合约钱包出现了15万个ETH的黑客攻击(今天的价值为1.8亿美元)。三个月后,同一个智能合约又被黑了50万个ETH(今天价值6亿美元)。幸运的是,自2017年以来,我们已经提高了安全标准,目前账户抽象钱包试图完成的大部分内容并不是不合理的复杂。社交恢复和基于角色的访问控制等安全功能也是默认内置的,这为智能合约本身的任何问题提供了一定程度的保护。然而,即使有这些功能,ERC-4337目前的实现仍然存在安全问题。6 _' y' }# }& T6 W4 h2 C
最大的问题是EntryPoint合约拥有极高的权限。如果这个智能合约有安全问题,黑客就可以通过它来利用任何ERC-4337合约的钱包。
除了安全问题外,正确支持ERC-4337的基础设施也不完全存在。目前ERC-4337的实现严重依赖Flashbots。Flashbots对账户抽象至关重要,因为它将一组UserOperation对象打包成一个 "捆绑交易",然后被包含在以太坊区块中。Flashbots是以太坊本身所特有的,这使得ERC-4337钱包如何与其他EVM链兼容成为了问题。虽然合约钱包可以部署到其他链上,但如果没有与Flashbots类似的机制来捆绑交易,钱包将无法发挥作用。最后,智能合约钱包只能与实施了EIP-1271的去中心化应用程序互动,该程序被调用来验证合约钱包的签名。理论上,如果Opensea或任何其他去中心化的应用程序尚未实施EIP-1271,智能合约钱包将无法与该应用程序互动,并将变得毫无用处。
# \4 _& I( G, H% ]
像Argent这样成熟的智能合约钱包并不会无缘无故地偏离ERC-4337的。第二层网络正在用干净的板子来实施整个协议的变化,以规避ERC-4337提出的问题。
8 | p) X/ U4 s& J$ N: O
Layer 2# ^4 T8 s, w0 b8 t
2 ^0 [' v4 l; X$ W+ `* u
Layer2的网络是从头开始建立的,可以更容易地实施改变,因为他们从一个更干净的板块开始,在技术债务方面。Zksync和Starkware都是Layer2网络,在协议层面上有天然的内置账户抽象。与以太坊不同,Zksync和Starkware没有区分智能合约和EOAs,这两种类型的钱包被合并为一个。Layer2实现了真正的账户抽象,超过了迄今为止任何EIP成功实现的账户抽象。这些账户可以像EOA一样发起交易,但也可以像智能合约一样,在其中实现任意的逻辑。这些设计与EIP-4337所布置的设计非常相似。随着费用的降低以及创建和维护钱包的简化,Layer2可能是登上下一个10亿网络3用户的完美场所。然而,与此同时,如果我们想在以太坊上使用EIP-4337钱包怎么办?什么是最好的钱包呢?
UniPass,一个账户抽象的钱包
1 y2 ^( c' c! Y% `
虽然Argent钱包(一个了不起的账户抽象钱包)专注于像Starknet这样的Layer2,但重要的是我们看到在Layer1上的实现,如Ethereum。UniPass是一个账户抽象钱包,建立了一系列的功能,使其在竞争中脱颖而出,包括EOA钱包和其他账户抽象钱包。当UniPass用户发起交易时,需要第三方作为中继者来完成交易。在这个过程中,中继器可以让用户花费任意支持的代币来支付gas费,甚至可以为用户支付gas费,从而实现gas的用户体验。UniPass将提供一个默认的UniPass Relayer节点,你可以开箱即用。一开始,UniPass Relayer将接受以其原生代币和主流稳定币形式的燃气支付。此外,应用程序可以建立自己的客户relayer,以满足其用户群的需求。4 l+ w! V" N9 `3 u
( X* j; O7 j, l* J
其他智能合约钱包解决方案通常依靠EOA钱包进行私钥管理。UniPass钱包使用基于MPC的阈值签名方案(TSS),这使得它在安全和可用性方面依赖于EOA钱包,同时也完全避免了私钥这个最大的单点故障,贯穿整个用户旅程。这创造了一个无缝的用户体验,对用户来说既愉快又安全。5 |8 f( \ j' L# l" y O6 F0 T# l
创建钱包就像用你的谷歌账户登录一样简单% E. W) a2 I" A& [+ R( ^ P( s* j
/ q- n& d- k. n* g
UniPass还有一个独特的基于电子邮件的链上验证技术,用于社交恢复。电子邮件协议(POP3、SMTP和IMAP),已经存在了50多年,是现代互联网的一个基础部分。为了保护电子邮件不被恶意修改,2004年引入了DomainKeys Identified Mail(DKIM)。DKIM是一种标准化的电子邮件身份验证技术。发件人能够为发出的电子邮件添加数字签名。当电子邮件服务器收到签名的电子邮件时,它可以验证该电子邮件是否来自实际发件人,以及内容是否被修改。; ]9 x! S5 ~9 W( N
经过不断的研究,UniPass Wallet现在可以使用智能合约在链上验证DKIM的数字签名。这使得用户可以管理他们的非托管合约账户,并只使用电子邮件进行社交恢复。典型的智能合约钱包的社交恢复解决方案,如Argent的,需要监护人是Argent的用户或已经拥有一个以太坊钱包。这意味着,如果你信任的家人和朋友不是web3的用户,他们不能作为你账户的监护人。通过UniPass的架构,用户可以设置多个电子邮件地址作为账户的监护人,只要向链上的智能合约提交电子邮件,就可以帮助用户设置账户恢复。这大大降低了监护人的门槛,让你所有有电子邮件的家人和朋友都能成为你的账户监护人。2 X! l; V" d6 P7 b6 m6 Q( O
5 t" {7 ^: i# Y- C
然而,一个问题出现了:UniPass如何保持所有这些信息的隐私?如果与你的账户绑定的电子邮件地址被链上的所有人看到,那就不好了。 因此,UniPass钱包使用零知识技术,在链上完全匿名化用户的私人信息,实现去中心化的验证,同时保护用户的隐私。
结束语
5 b" [4 I' b2 B% S
随着主要中心化托管钱包解决方案的崩溃,许多用户正在涌向自我托管钱包解决方案。EOA钱包必须演变成账户抽象钱包,以扩展到下一个10亿用户。它们使上机过程更容易操作,加强安全,并极大地提高了实用性。虽然我们仍然需要依靠解决方案以创造性的方式在第1层的gas中转,但第2层,如Starknet和Zksync将以最纯粹的形式实现账户抽象。这种实质性的用户体验改进可以很容易地帮助促进这些网络的增长。以太坊社区必须密切关注此事的发展,以安全地实现改变以太坊基础协议的EIP。无论如何,仍有一些钱包,如UniPass,率先使用EIP-4337创建高级钱包。我期待着有一天,当这些解决方案被广泛使用,我们会想,我们以前是如何以如此古老的方式存储我们的数字资产的。
成为第一个吐槽的人