授权列表不是交易备注
EIP-7702 把一组授权放进 type-4 set-code transaction。可以把它想成一张由签名背书的处理清单:外层交易负责把清单带到链上,协议再逐条检查,符合条件的授权会改变相应账户的代码状态。读列表时,关键不是只看到“有授权”三个字,而是确认每条记录指向哪个地址、针对哪条链、使用哪个 nonce,以及签名字段是否完整。
这一机制让外部拥有账户(EOA)可以通过授权委托执行逻辑,但不会把授权范围自动细分成“只能做某个按钮背后的动作”。EIP-7702 明确指出,授权代码可以访问账户,在协议这一层无法实现细粒度权限。因此列表里的一条授权可能影响账户后续如何执行,不能按普通登录确认或一般消息签名来理解。
六个字段分别表达什么
EIP-7702 将授权元组定义为 [chain_id, address, nonce, y_parity, r, s]。前面三个字段提供授权适用范围和账户状态信息,后三个字段构成签名表示。把它拆开读,比把整组数据看成难懂的十六进制更有帮助:
| 字段 | 在授权处理中承担的作用 | 核对时要问的问题 |
|---|---|---|
chain_id | 标记授权适用链;协议接受 0 或当前链 ID | 是通用链标记,还是与正在处理的链匹配? |
address | 指定委托代码所指向的地址 | 这个目标是否与签名者预期一致? |
nonce | 参与授权账户状态与顺序校验 | 当前账户 nonce 是否满足协议要求? |
y_parity | 签名恢复所需的一个分量 | 签名是否能够通过恢复校验? |
r、s | 签名值 | 这条记录能否恢复出有效授权账户? |
这张表解释的是协议字段职责,不代表钱包一定会用相同名称或布局展示它们。事实包没有核验具体钱包版本的确认界面,也没有说明所有浏览器都呈现授权列表,所以不要把界面上缺少某个字段直接等同于协议没有检查,也不要凭一张弹窗截图判断授权安全。
从交易发送到委托代码写入
处理顺序决定了列表应怎样理解。首先,交易发送者的 nonce 增加;之后,授权列表才会在交易执行主体开始前处理。也就是说,列表的处理发生在外层交易的主要执行逻辑之前,但并非在发送者 nonce 变化之前。对审阅交易的人而言,这两个先后关系要分开记:一个是外层交易发送者的交易顺序,另一个是列表里每个授权账户自己的校验与状态变化。
协议随后逐项遍历授权元组。每条授权都要检查链 ID 是否为 0 或当前链 ID,校验授权账户的 nonce,恢复签名,并检查账户代码状态及 nonce 是否匹配。若一条授权没有通过这些检查,协议停止处理这一条,然后继续检查列表中的下一条。它不是“整张清单遇到一处错误就必然全部作废”,也不意味着失败项会得到部分写入;应将每一行看成独立的处理单元。
通过验证的授权会把授权账户代码设置成 0xef0100 || address。这里的 0xef0100 是委托指示器前缀,后面连接授权元组指定的地址。若该地址是零地址,处理结果则是清除该账户代码。需要注意,写入的是账户代码状态变化,不是把目标合约的全部源码复制到账户里。
可以用下面的顺序图快速定位一条授权所处阶段:
type-4 交易进入处理
→ 交易发送者 nonce 增加
→ 在交易执行主体开始前逐条处理授权
→ 核对 chain_id、账户 nonce、签名与代码状态
├─ 未通过:停止当前条,继续下一条
└─ 通过:写入委托指示器,零地址则清除代码
→ 进入外层交易执行主体
失败边界与用户可见含义
链 ID 不在允许范围、签名无法恢复、授权账户代码状态不满足规则,或 nonce 不匹配,都可能令当前元组不被处理。单条停止不等于整笔交易的所有效果都自动撤销;同样,列表中后续项目继续处理,也不能证明它们一定成功。要判断链上最终状态,必须区分协议对列表的逐项处理与外层交易本身的执行结果,不能只凭“交易已提交”或某个页面的概括状态下结论。
这也是为什么审阅授权时要把字段、处理结果和账户状态连起来看。看到委托地址,只能说明记录里指定了目标;是否通过验证、账户当前实际代码是什么,是另一层问题。站内的 EIP-7702基础机制 介绍了该提案与账户体验的关系;EIP-7702授权风险 侧重授权风险;如果关心清除后的检查流程,可继续阅读 EIP-7702委托撤销核验。本文聚焦列表处理,不重复撤销操作教程。
确认前的防御性检查
对于进阶用户和开发者,核对可以围绕三件事展开:第一,逐条辨认目标地址和链 ID,不把列表整体当作单一授权;第二,确认钱包给出的签名说明与待处理交易目的相符,对无法解释的目标或字段保持谨慎;第三,交易后通过可靠的链上数据核对账户状态,而不是把前端提示当作最终证据。若需要审查实现,应以 EIP 原文定义的字段、校验顺序和写入规则为准。
对普通钱包用户,最重要的动作是暂停不可理解的确认请求,并通过钱包官方文档确认当前版本如何展示 EIP-7702 授权。EIP 本身明确提醒,钱包不应提供让应用直接建议用户签署授权的界面。应用页面声称“点一下即可安全升级”并不能代替钱包的独立提示与用户判断。具体钱包是否支持某项展示、模拟或撤销能力,取决于产品实现;本文不假设所有钱包功能相同。
EIP-2718 为类型化交易封装提供背景,而 EIP-7702 规定了本主题的授权列表语义。理解两者的分工,可以避免把“交易属于某种类型”误解成“授权自动可信”:封装格式说明交易如何携带类型信息,授权规则才决定列表如何被校验和处理。
风险提示
授权目标与账户执行逻辑相关,签错或误解委托可能造成资产损失;协议级校验也不能保证目标代码没有漏洞或恶意行为。请在确认前独立核验网络、目标地址和钱包说明,不要因为批量处理、代付费用等体验能力就推断账户更安全。本文仅作技术与安全教育,不构成投资建议、交易建议或收益承诺;数字资产价格可能剧烈波动并可能损失本金,请自行评估风险。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。