跳到正文

研究指南

加密现货研究

EOA代码委托:跟踪单笔交易之后的持续权限

EOA代码委托可能持续到引入它的应用行动之后。在已启用EIP7702规则的网络中,一笔被包含交易可以先处理合法授权,随后应用执行失败,而已处理委托仍保留。因此,失败回执不单独证明账户代码权限未改变。

应把它研究为状态历史:授权处理、委托指示符、应用执行、后续替换或清除各自记录。交易计数或一个成功标志,都不足以完成这条证据链。

写明网络与启用假设

本题使用已启用EIP7702的虚构网络。H零、H一、H二只表示按顺序观察的区块,不是以太坊主网激活高度。研究真实网络时,应先核当时分叉规则,再将机制用于历史材料。

EIP7702的Set code transaction和Behavior部分规定授权列表先于应用执行处理,并描述链域、nonce检查、委托指示符写入、失败元组跳过及执行失败后的保留规则。这里指按适用规则处理的交易;被共识拒绝的无效交易是另一情形。

保存网络、规则版本、交易类型与区块哈希。若来源只展示“已委托”标签,仍应取得原始授权列表与实际代码状态,不能用熟悉名称代替字段核验。

外层发送者与授权账户分开

外层交易有自己的发送者和nonce,每个授权元组则涉及签名恢复出的authority,两者可以不同。赞助者交易被包含,不证明赞助者拥有被委托账户;赞助者nonce也不能代替authority的授权nonce。

每个元组保留链域、目标地址、nonce与签名字段,并记录恢复账户及处理次序。判断应使用该元组处理时的状态,不能只看交易完成后的最终nonce就倒推所有元组均有效。

来源还区分外层发送者nonce先增加与随后授权处理的顺序。如果发送者本身也是authority,次序会影响核对。本例故意令赞助者S与授权账户A不同;真实材料两角色重合时,需要单独逐步还原,而非机械套本例的数。

假设主例:应用失败,委托保留

设H零之前,A代码为空、授权nonce为七、余额四ETH。S为不同的外层发送者。一份本网络合法授权指向实现D,携带nonce七,假设外层交易全部前置有效性条件均满足。

外层交易不附带价值,包含该授权。合法元组先把A代码设为指向D的指示符,并令A的nonce变八。随后应用尝试从A转零点五ETH,但在效果提交前回滚。本例手续费由S支付,不假定实际费用数值。

阶段A的nonceA代码状态A余额应用结果
H零之前七空四ETH尚未执行
授权处理后八指向D四ETH应用尚未完成
H零执行失败后的最终状态八指向D四ETH零点五转账已回滚
H一且无A的后续变化八仍指向D四ETH旧失败不会自动清除
H二另有合法清除授权后九空代码四ETH需独立交易证据

余额算术是四保持四,而不是四减零点五得三点五,因为拟议转账未提交。授权变更使用不同回滚边界,H零仍有委托。不能因为应用状态显示失败,就把权限列重置为“空”。

通常委托指示符由三个字节前缀0xef0100加二十字节地址组成,共二十三字节。应识别结构并提取目标,不能将所有非空代码都叫常规部署智能钱包。这里的字节长度也是独立可复查的输入,不能靠浏览器账户分类替代。

除指针外,还核历史目标代码

指向D说明代码来源地址,不是安全评价。保存观察时适用代码或代码身份,以及解释它所需的部署关系。目标名称不变,并不让缺少历史实现材料的问题消失。

授权账户状态与目标地址状态也不同。委托执行从目标取得代码,却在authority上下文运行;仅查看D自身存储,不必然说明代码为A行动时使用什么设置。研究底稿应把代码来源与状态存放上下文分列。

把实际资产移动连接到已提交执行证据。授权运行代码本身没有转走四ETH;反过来,没有立即转账也不证明权限无影响,因为持续代码关系可能影响以后行动或后来进入的资产。

因此,权限清单应记录状态持续区间,不只记录交易发生日。若先委托、几天后才转入资产,不能把委托当作“当时余额为零所以结束”的孤立事件,也不能推断一定会损失。

清除是另一项可观察过渡

本例后续合法清除授权使用A当时nonce八和零目标,清除代码并把nonce增加至九。应在H二实际读取结果。未签署的断开意图、网站显示已退出或下一笔交易没有授权列表,都不是同等证据。

清除此指示符也不证明其他权限全部消失。代币allowance、应用授权与特定合约存储是另一些对象。如果报告称已经全面撤权,需要分别重新查询,不能从空代码推及所有关系。

把H零与H二同时保存。今天代码为空的账户,过去可能存在一段委托期。将当前分类回填早期活动,会删除状态历史原本要揭示的权限暴露。

不同失败机制:授权元组从未成功

另设一笔交易,A处理时nonce为七,但元组使用过期nonce六。按所述规则,它检查失败并被跳过。这不同于nonce七合法授权已处理、然后应用失败的主例,不能把两者都归为“授权失败”。

再设列表先有合法nonce七指向D一,处理后nonce变八;后面的nonce七元组指向D二,此时已经过期,不能仅因排在后面就取代D一。若随后还有合法nonce八元组,其结果又需继续按序核对。

来源描述同authority多个元组时最后一个合法结果生效。“最后列出”与“最后合法”不是同义词。保留每项处理前nonce、域检查和决策,让复核者能够重现最终目标。

元组跳过与整笔共识无效也不能混写。某些元组检查失败允许继续处理列表,外层交易的基本有效性要求则另行存在。记录应分别显示列表级、元组级和应用执行级状态。

链域与交易有效性边界

链字段可以是当前链标识,或规范允许的零域。特定链授权不能默认全球适用,零域授权则应明确范围。观察到一条链上的已处理授权,也不能枚举其他地方尚未使用的离线签名。

表格假设交易已被合法包含与处理,但应用执行不成功。它没有声称格式错误或共识无效交易可以更新链状态。节点拒绝记录应与已包含失败回执分开保存,不能把后者当成前者。

如果某接口只返回status零,却没有历史代码或原始元组,应标记委托结果未核。它仍可支持应用失败观察,但不能支持账户权限结论。获取更完整材料后,再增加相应状态,不必虚构一个整体成功或失败标签。

记录状态跨度而非只留事件标签

对每次观察同时保存块前与块后代码,特别是同一块有多笔涉及A的交易时,块末快照不足以归因某一笔。需要相应执行顺序或更细状态材料,才能区分第一笔设置、第二笔替换、第三笔清除。仅有最终空代码,不能证明块内从未存在委托。

若无法取得交易级过渡,应收窄到“该区块末未观察到指示符”,并保留块内过程未知。后续获得顺序材料可以补全事件链,不必改变当初确实看到的块末结果。这样的登记方式也能防止把一次短暂委托漏计为完全没有权限变化。

可执行状态历史清单

检查保存材料防止误读
规则适用网络、启用依据将新规则回套旧块
角色清楚外层发送者、恢复authority用S身份或nonce代替A
顺序处理域、nonce、各项决定最后原始元组必生效
观察指示符历史代码、提取目标应用失败自动清代码
执行对账回执、已提交状态与数量授权本身就是转账
证明后续清除新授权和结果代码网站断开即全面撤权

目标改变、清除事件、nonce还原更正或新历史快照,都应触发重核。每个截止点发布最后已验证权限状态,并说明尚缺元组或实现材料。结论可用于账户控制研究,却不应变成用户人数、安全保证或未来行为预测。

常见问题

应用失败回执是否说明授权没有效果?

不是。在假设启用的规则下,已成功处理的委托可在执行失败后保留,需要核结果代码。

今天空代码是否说明账户没有委托历史?

不是。后续清除可以留下空代码,历史问题需要历史状态。

相关阅读