EIP-7702: 以太坊外部账户重大变革 为生态带来新机遇与挑战

robot
摘要生成中

EIP-7702:以太坊外部账户的重大变革

以太坊即将迎来Pectra升级,其中EIP-7702对以太坊外部账户(EOA)进行了变革性的改造。该提案模糊了EOA与合约账户CA之间的界限,是朝着原生账户抽象迈进的关键一步,为以太坊生态系统带来了全新的交互模式。

Pectra已在测试网络完成部署,预计不久后将上线主网。本文将深入分析EIP-7702的实现机制,探讨其可能带来的机遇与挑战,并为不同参与者提供实用指南。

协议分析

概述

EIP-7702引入了一种新的交易类型,允许EOA指定智能合约地址并为其设置代码。这使EOA能够像智能合约一样执行代码,同时保留发起交易的能力。该特性为EOA赋予了可编程性与可组合性,用户可以在EOA中实现社交恢复、权限控制、多签管理、zk验证、订阅式支付、交易赞助以及交易批处理等功能。EIP-7702能与EIP-4337实现的智能合约钱包完美兼容,简化了新功能的开发与应用。

EIP-7702引入了交易类型为SET_CODE_TX_TYPE (0x04)的交易,其数据结构包含authorization_list字段,可包含多个授权条目。每个授权条目包含chain_id、address、nonce以及签名数据。

实现

授权者签署授权数据时,需将chain_id、address、nonce进行RLP编码,与MAGIC数一起进行keccak256哈希运算,再用私钥签名。MAGIC (0x05)作为域分隔符,确保不同类型签名结果不会冲突。

当chain_id为0时,表示授权可在所有支持EIP-7702的EVM兼容链上重放。交易执行前,Proposer会进行预检查,确保交易不是合约创建交易。交易中authorization_list字段必须至少包含一项授权条目。

节点执行交易时,先增加发起者nonce,再对每个授权条目进行applyAuthorization操作。如遇错误,该授权条目将被跳过,其他条目继续应用。授权完成后,授权者地址的code字段将被设置为0xef0100||address。授权者可将委托目标地址设为0地址来移除授权。

最佳实践

尽管EIP-7702为以太坊生态注入新活力,但也带来新的风险。以下是生态参与者需要注意的方面:

私钥存储

即使EOA委托后可通过社交恢复等方式解决资金损失问题,仍无法避免私钥泄露风险。用户应将私钥保护放在首位。

多链重放

用户可选择chainId为0进行委托,使其在多链上生效。但不同链上相同合约地址可能有不同实现。钱包服务商应检查委托生效链与当前网络是否相符,并提醒用户相关风险。

无法初始化

EIP-7702无法像ERC-1967代理合约那样在部署时调用初始化函数。开发者应在钱包初始化操作中进行权限检查,避免被抢跑风险。

存储管理

重新委托到不同合约地址可能导致存储结构差异,引发账户锁定或资金损失。开发者应遵循ERC-7201 Namespace Formula,将变量分配到独立存储位置。

假充值

中心化交易所可能面临智能合约充值普遍化情况,应通过trace检查充值交易状态,防范假充值风险。

账户转换

账户可在EOA与SC间自由转换,打破了一些仅限EOA参与项目的安全假设。开发者应假设未来参与者可能都为智能合约。

合约兼容性

开发者应确保用户委托的目标合约实现相应回调函数,以兼容主流代币。

钓鱼检查

钱包服务商应尽快支持EIP-7702交易类型,在用户委托签名时突出展示目标合约,并进行深入自动分析,以缓解钓鱼攻击风险。

总结

EIP-7702通过新交易类型,使EOA具备可编程性与可组合性,模糊了EOA与合约账户界限。不同生态参与者面临诸多挑战与机遇,本文提供的最佳实践值得在实际操作中借鉴应用。

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
liquidation_surfervip
· 07-14 22:20
区块链搬砖哥,风控强迫症患者~

请用中文生成一条评论:

赚钱的机会要来咯
回复0
Blockblindvip
· 07-14 03:24
跑路更方便了属于是
回复0
consensus_failurevip
· 07-14 03:22
链都玩不好 搞什么组合
回复0
治理投票从不参与vip
· 07-14 03:12
又见眼花缭乱的提案 不看
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)