最近宣布,下一个以太坊硬分叉将包含EIP-3074,这是一个针对以太坊钱包用户体验的协议级改进。这个消息引发了以太坊社区各种不同的反应。有人庆祝这个重大升级,有人担心其中存在问题,还有人感到困惑不确定这是否是正确的策略。那么EIP-3074到底是什么?它能保证用户的资产安全吗?它与智能合约钱包、账户抽象或ERC-4337有什么不同?为什么以太坊社区喜欢用令人困惑的数字来命名一切?
如果你是经常使用EVM或是开发者,了解钱包的下一步发展方向是很重要的。但首先,让我们从头开始。
EOA和智能合约钱包
EVM的基本账户原语是外部拥有账户(EOA)。
账户:以太坊地址(例如0xabcdef)
外部拥有:该地址的控制者拥有加密私钥
另一种类型的以太坊账户是智能合约,它也有一个地址,但包含代码并且没有原生的控制密钥。如果你想通过智能合约账户发送交易,你需要在代码中构建相应的功能。
在以太坊上,所有的交易都必须由EOA发起,所以它们是迄今为止最常见的以太坊账户类型。然而,EOA存在许多主要的用户体验和安全缺陷:
– 用户必须在交易中使用足够的ETH作为Gas(如果用户拥有其他有价值的资产,如NFT,但没有ETH,就会出现问题)
– 他们无法以原子方式发送捆绑交易或与多个智能合约交互
– 他们不能够进行链上恢复(如社交恢复)
– 他们很容易被泄露,如果私钥泄露,用户的所有资产都会被盗
为了解决这些挑战,区块链研究社区一直致力于实现“账户抽象”(AA):将用户从EOA切换到由链上代码控制的“智能合约钱包”。用户通常仍然需要在设备上保存一些密钥材料,但通过在智能合约代码中编写逻辑,我们可以控制用户资产并解决上述问题。
一些区块链已经原生支持账户抽象(如Starknet),而以太坊则让钱包提供商创建自己的智能合约钱包实现。现在已经有数十种智能合约钱包,它们提供不同的功能来满足不同的需求(如Gnosis Safe、Argent、Coinbase智能钱包、Immutable Passport)。
然而,数字数据显示,不到0.1%的以太坊用户使用智能合约钱包,而仍然有数千万活跃的以太坊EOA用户。让这些用户进行切换是一项艰巨的任务,也是一场安全噩梦。
EIP-3074有什么帮助?
EIP-3074在2020年底提出,旨在帮助EOA用户立即获得账户抽象的一些好处,而无需将其账户完全转换为智能合约钱包。
EIP-3074引入了两个新的操作码:AUTH和AUTHCALL。这些操作码允许用户通过签署消息的方式,临时将对EOA账户的控制权委托给另一个账户(通常是智能合约,被称为“invoker调用者”)。然后,另一个账户(称为“sponsor/bundler”)发送一笔交易,使用该消息和AUTH操作码来将委托正式上链。然后,“调用者”账户可以使用AUTHCALL来代表用户进行交易。
可能会有一些标准的调用者合约(比如处理批处理的合约),这些调用者将复制账户抽象的一些关键用户体验优势。
批量交易
考虑ERC20批准+转账的常见流程,目前EOA需要两笔独立的以太坊交易。通过委托给批处理调用程序,可以将这个过程减少为一笔交易(尽管钱包仍然需要显示两次确认)。此外,许多应用程序试图通过在用户第一次交互期间请求无限制的批准来避免后续交互中的“双重请求”。这会让用户致命地暴露于这些协议中未来的任何错误中,因此通过避免它,我们将免费获得巨大的安全改进。
Gas赞助
假设用户的钱包中有20美元的USDC,但没有ETH用于支付Gas费用(如兑换费用)。DApp可以通过调用者请求代表用户行事的权限,自行支付Gas费用,然后从用户的USDC余额中寻求补偿。调用者合约必须包含逻辑,限制其发送的交易仅发送给用户通过显式签名批准的交易。
其他自定义调用者可能会随之而来,用户可以在不离开现有熟悉的钱包的情况下访问这个用户体验(假设这些钱包添加了对EIP-3074的支持)。
这与ERC-4337有什么不同?
等等,我以为我们已经有了一个带有奇怪号码的账户抽象提案?ERC-4337发生了什么?
ERC-4337是智能合约钱包的标准,旨在整合目前分散的智能合约钱包生态系统。ERC-4337账户是完整的智能合约钱包:用户资产存储在智能合约中而不是EOA中。有许多不同的实现,但ERC-4337交易的总体流程如下(请注意alex.eth是智能合约):
ERC-4337的目标是在不对核心EVM进行任何更改的情况下推动智能合约钱包的广泛采用。最终,账户抽象很可能会原生融入到链中:已经有计划通过RIP-7560将原生账户抽象引入以太坊L2,这可能在未来扩展到以太坊本身(通过EIP-2938或后续版本)。
如今,ERC-4337仍处于起步阶段。该标准尚未最终确定,上周所有EVM链上仅有约200,000笔ERC-4337交易(Polygon上的交易量超过90%)。EIP-3074和ERC-4337是钱包用户体验的并行改进,而目前大多数以太坊用户仍然是EOA用户。两者的支持者都认为,在这两个方面尽快推进是改善以太坊用户体验的最快方法!
那么为什么有些人反对EIP-3074?
EIP-3074是一个潜在的主要安全攻击媒介。你在Twitter上最常见的抱怨是,在EIP-3074之后,“一个签名就可以耗尽我账户中的所有ETH、ERC20和NFT”。这是事实:如果将控制权委托给恶意调用者,用户的所有资产都将丢失。当然,如果EOA钱包的私钥被泄露,用户的资产也会丢失。但在web3应用程序的标准流程中,签名更为常见,许多用户只是尽快确认。
然而,这里有一些重要的警告。EIP-3074的签名非常容易识别,它们必须有一个“魔法前缀”(字面上是“0x04”)。如今,大多数钱包只支持使用ERC-191中定义的不同前缀进行签名,因此当前签名被用来欺骗EIP-3074委托的可能性很低(但不是零!)。随着钱包实现对EIP-3074的支持,它们可能会引入非常严格的屏幕,要求用户在签署此消息之前仔细检查他们的操作——就像“导出你的私钥”一样严格。这限制了EIP-3074的用户体验优势:如果你不小心就签署了这个消息,你的资产可能会受到威胁。每次想要使用不同的调用程序时都需要批准大红色警告屏幕,那么我们还没有取得任何进展。
为了解决这个问题,许多钱包可能会选择实施经过批准的调用程序列表(例如标准交易批处理程序),并且仅在用户超出这些范围时才显示可怕的屏幕。然而,这是一个明显的中心化问题,在不同的钱包之间会有所不同,并且依赖于 dapp 和钱包之间的协调(例如,两者都选择相同的 Gas 赞助调用者)。
假设用户的钱包明智地部署了 EIP-3074,则没有理由相信 EIP-3074 将成为一场安全灾难。但这是无数个以太坊钱包的一个重大假设。无论如何,这都将是一个重要的新攻击媒介,毫无疑问会导致一些引人注目的事件——我实际上想知道伪装的批量交易(适用于所有 AA 钱包)实际上是否是最大的长期风险领域。
EIP-3074不会永久“抽象”你的钱包
有人将 EIP-3074 描述为“将你的 EOA 升级为智能合约钱包”。这是一种误导——更准确地说,用户是“暂时允许智能合约代表你行事”,它有一些主要限制:
委托给调用者是暂时的,可以随时撤销。这意味着,如果有人泄露你的私钥,或诱骗你签署恶意交易,你的资产仍将被盗。你可以获得帐户抽象的一些用户体验优势,但没有任何安全优势。事实上,EIP-3074 可能会大大降低钱包和用户升级到完整智能合约钱包的动力——这与我们的长期目标相矛盾。
每当你发送实际的 EOA 交易时,你都将清除任何现有的调用者授权。这对于快速撤销来说非常棒,但如果你出于任何原因需要发送非 EIP-3074 交易,你将必须重新经历钱包的“可怕的屏幕”过程,以获取所有现有的授权。这不好玩。
对于以太坊社区的许多人来说,这感觉像是工作完成了一半。如果我们要花 2-3 年的时间来让 dapp 和钱包支持 EIP-3074 交互,为什么不实现使这些委托永久化的能力,并且完全替换帐户的代码(将其完全转换为智能合约)钱包)?EIP-5003将引入另一个新的操作码 AUTHUSURP,它可以做到这一点,并且现在正在大力推动将 EIP-5003 包含在下一个以太坊硬分叉中以“完成工作”。
Safe创始人对AA全面替代EOA之路的看法
尽管该提案得到了许多主要以太坊社区成员的支持,但这并不是灵丹妙药:
与完整的智能合约钱包相比,EIP-5003 账户仍然存在一些限制
没有简单的方法可以使 EOA 私钥中的现有或新签名无效,并且许多合约将这些签名视为权威签名
跨链支持存在各种各样的挑战,尽管其中许多挑战也存在于ERC-4337 钱包中
EIP-3074 将需要广泛的钱包基础设施改变
为了启用上述赞助和批量交易流程,我们需要一个大致如下图所示的流程:
dapp 必须确定这些交易应该批量处理在一起
dapp 必须知道我们的钱包是否支持批量交易,并且可能需要在交易成本估算中包括钱包使用的特定调用程序的成本(以了解他们是否想要赞助)
钱包必须知道 dapp 是否打算赞助交易
钱包必须检查用户是否已经批准了必要的批量交易和赞助调用者
钱包必须能够将 dapp 的“批准和转移”请求转换为正确调用者的 EIP-3074 授权以及后续请求 – 或者也许我们要求 dapp 这样做?
钱包必须使用其自定义 EIP-3074 逻辑向创作批量交易调用程序的用户请求 EIP-3074 签名
钱包必须向用户显示 UI 以确认批次中包含的每笔交易。这必须由每个钱包单独构建。
Dapp 需要为批处理/非批处理用户实现单独的流程,并针对任何差异进行自定义错误处理。正如你所看到的,让所有用户/钱包/dapps 支持此流程将是一项艰巨的任务 – 我们甚至还没有开始跨 L2 UX !
这与 ERC-4337/智能合约钱包当前面临的挑战非常相似,并且已经有新的钱包 RPC 方法的提案,例如EIP-5792 (批量交易)、标准化 paymaster API(EIP-7677 )、与帐户无关的用户操作包(ERC-7679 )和更多人类可读的钱包权限。在某些/所有情况下,EIP-3074 批处理可能能够搭载这项工作,但我们也完全有可能最终得到 3 个独立的流程(EOA、EIP-3074、ERC-4337)!
这种巨大的实施提升会带来巨大的现实世界成本:我们使以太坊越复杂(在 EVM 层和钱包 RPC 层),我们就越分散开发者的注意力,让他们无法完成以太坊成功所需的其他一切工作。
总结
对于采用EIP-3074 的用户/dapps/钱包来说,毫无疑问,EIP-3074 将能够提供有意义且立即的用户体验提升。
然而,存在一个很大的风险,即该功能的使用将非常有限:新的用户体验将令人困惑、复杂且跨钱包不同。当 dapp 和钱包为 EIP-3074 提供广泛支持时,完整的智能合约钱包标准将有望拥有工具和成熟度,成为对用户更具吸引力的目的地。我最希望 EIP-3074 作为用户通往完整智能合约钱包的中间工具,并且我同意这样的论点,即如果不快速包含 EIP-5003,这将受到很大的限制。
以太坊社区面临的最大风险是支持 EIP-3074 所需的努力将削弱开发人员试图将用户转移到完全账户抽象钱包的努力。 ERC-4337仍然不是最终版本,钱包 <>dapp 层的关键 EIP 仍然悬而未决,并且通过RIP-7560 在 L2 上进行原生帐户抽象的尝试吸引力相对较低。进一步划分开发者关注点不太可能产生更好的结果!
最终,EIP-3074 是否是一个好主意将取决于它成为其他帐户抽象路径(ERC-4337 和原生)的特洛伊木马的程度。在成功案例中,EIP-3074 是一次出色的即时升级,并激励 dapp 开发人员集成启动 ERC-4337 采用所需的工具。在失败的情况下,我们最终会发现 dapp 开发人员需要为 8 种不同类型的以太坊账户维护自定义流程!
标签
Argent
Coinbase
EIP-3074
Gnosis
Gnosis Safe
Uniswap
以太坊
金色财经
来源链接:
https://www.jinse.cn/blockchain/3681761.html
说明:比推所有文章只代表作者观点,不构成投资建议
原文链接:https://www.bitpush.news/articles/6616820
相关新闻
Galaxy Digital:加密一周评论——减半、稳定币监管、Lido和数据
美SEC要求Terraform Labs和Do Kwon上缴53亿美元罚款
【比推每日市场动态】BTC多头的下一个目标:6.7万美元
导致比特币再次爆发的新技术发展总结
a16z合伙人:糟糕的监管如何有利于Meme而不是创新