前几个月,关于账户抽象和智能合约钱包的讨论显得十分火热。

随着以太坊生态的快速发展, 实现统一和无缝的用户体验变得愈发重要。在以太坊 2.0 的路线图中, 账户抽象与合并、分片被放在同等重要的位置。

Vitalik Buterin 也曾发推表示智能合约钱包相比 EOA 钱包拥有更佳的用户体验。

对加密老手来说, 使用 EOA 钱包已经足够熟练。但从吸引更多新用户的角度看,EOA 钱包在用户界面和理解成本上还存在一定问题:让人摸不着头脑的签名、从哪里搞来 gas 费、"行动=交易"这种硬核逻辑....

因此, 社区逐渐形成共识, 需要从 EOA 账户向智能合约钱包进行平滑过渡, 这也成为一种政治正确。

但 Crypto 圈子里流行的信息,一般都只讲叙事,而不讲如何实现:

假设我们都知道智能合约钱包比 EOA 更好,这条路非常明显,问题是如何走过去?桥在哪里?

更难解决的是路径依赖后的现实问题:我在 EOA 账户里已经有了各类资产,现在你让我迁移到智能合约账户,麻烦不麻烦?

我们该如何有效实现这一转变? 用户资产迁移又需要如何简便操作?

这世界上本来没有路,除非有人提前铺了路。

近期,EIP-7377 提案为此提供了一种可能的解决方案。该提案由 Go Ethereum 开发者 Matt Garnett 提出, 其目的是添加一种新的交易类型, 允许 EOA 账户通过一次性交易将账户永久迁移到智能合约钱包。这为推进以太坊账户抽象提供了一条可行路径。

EIP-7377 提案的动机

自 2015 年以来, 智能合约钱包就被认为是解决以太坊用户体验问题的重要途径。相比 EOA 账户, 智能合约钱包具有更强的可编程性, 可以实现复杂的机制设计, 提高安全性和用户友好性。

但是由于历史原因, 从整体上看,目前以太坊上只有少数用户使用智能合约钱包, 大量资产仍存放在 EOA 账户中。这成为推进以太坊发展的障碍。

随着资产的积累, 用户无法轻易将 EOA 账户中的所有资产手动迁移到新的智能合约地址, 无论从成本还是操作流程来看都非常困难。

因此,EIP-7377 的动机在于通过在协议层面提供从 EOA 向智能合约钱包迁移的机制, 来解决这一现实需求, 实现平滑过渡。这或许将大大增加存量用户迁移的意愿,以及为增量用户进场时,在账户抽象尚未普及前,提供一种更加实用主义的 EOA 过渡方案。

EIP-7377 技术实现的通俗解释

那么,这个提案具体是如何实现 EOA 向智能合约钱包转移的呢?

在技术论坛的原贴中,作者进行了简要的说明:

这个摘要的大致意思是,EIP-7377 提出了一种新的交易类型 0x04, 专门用于"迁移交易"。

用原帖的技术语言来说:

"它将发送账户在状态树中的 code 字段设置为代码存储中指定代码的指针。同时, 迁移交易也可以直接设置发送账户的存储值。交易中的 storage 字段将作为键值对写入发送账户的存储树。另外, 代码存储使用指针而不是内联代码。这么做的优点是可以重用共享的代码, 减少冗余, 优化状态树的大小"。

以上的原描述显得非常晦涩难懂,对于没有技术基础的人来说无法理解。在咨询了一些技术朋友和公开资料后,我们尝试简化所有的技术细节,通过比喻的方式来快速理解 EIP-7377:

EIP-7377 提出了一种特殊的交易类型, 可以理解为一种「迁移卡」。

普通用户只需要发起这种迁移卡交易, 就可以将账号里的资产迁移到智能合约钱包。

这相当于你原网站中的账户, 里面有用户名、密码、头像等信息(你原来的 EOA 中有币名、数量、链、gas 上限等)。但是这个网站的功能不太好, 你想完全迁移到另一个新网站。

为了方便大家迁移, 新网站推出了一种「迁移卡」。你只需要在新网站提交这个「迁移卡」, 那么你的账号信息就会自动复制过去, 相当于新旧账户数据直接对接了。这比一个个手动搬运数据方便多了。

同时, 为了安全起见,「迁移卡」只能用一次, 不允许反复迁移来回刷数据。而且新网站会继承一些旧网站的验证规则, 所以其他用户看不出你是新用户还是老用户。

这就是 EIP-7377 在技术上想要实现的效果。利用「迁移交易」这张特殊「卡片」, 通过直接操作账户代码和存储, 以一种安全和高效的方式完成 EOA 到智能合约钱包的平滑迁移。

当然,其具体的迁移对象并不是以上比喻中的用户名、密码、头像,而包含着与加密资产相关的各类信息:

(注:由于非技术背景,笔者无法完全理解该提案中的全部内容。也请各位技术大佬做进一步的指正和补充。原帖地址:https://eips.ethereum.org/EIPS/eip-7377?ref=newsletter.ether.fm)

EIP-7377 的潜在影响、意义与风险

EIP-7377 提出的 EOA 向智能合约账户迁移方案, 远期看将对以太坊生态产生正面影响。我们认为它有望成为推动账户抽象实现的关键步骤之一。

这种在协议层面支持的平滑迁移方式, 可以大大降低用户迁移到智能合约钱包的难度和路径依赖。对于 Crypto 用户来说,往往并不精通底层技术,在资产优先的导向下也不会做主动的技术创新。如果底层协议已经支持了"一键迁移」,那么辅以适当的激励活动和前端界面的友好适配,用户迁移的意愿理论上将大大增加。

然而, 我们也应注意这种新功能被用作恶意攻击的风险。可能想到的恶意手段包括但不限于:

钓鱼攻击:制作伪造的迁移交易, 然后通过钓鱼链接欺骗用户 approving 该交易, 达到非法转移资产的目的。

恶意代码植入:黑客可以在迁移过程中通过篡改代码植入后门, 获取账户控制权。

重复迁移盗取:利用迁移交易只能执行一次的限制, 黑客可以在合法迁移后发起重复的迁移交易, 谎称失败然后再次让用户 approve, 达到窃取资产的目的。

在加密世界里,单独一次协议的升级和革新并不能一蹴而就的实现完整愿景。黑暗森林的环境下,协议升级也需要配套相应的审计升级、可信来源验证、赏金计划等手段来防范这些威胁, 保证迁移交易的安全性。

最后,我们也需要思考:

基础设施和协议的转变,需要强大的生态驱动力量。究竟是谁来推动用户从 EOA 向智能合约账户进行大规模迁移? 谁来承担迁移过程中的技术风险和资产安全?

在崇尚自由和去中心化的加密世界, 这类系统升级如何形成共识和合力?

以太坊生态庞大, 利益相关方众多。虽然这一转变具有正面意义, 但也可能遭遇来自不同群体的质疑与阻力。过渡过程的规划与细节需要审慎设计, 以取得社区共识, 并确保用户利益不受损害。

从理想到现实, 从设想到执行, 路途仍然漫长。