English version · 区块链学习导航 · 上一篇
区块链学习 · 文章 BC064

可编程区块链账户能够按照明确的授权策略,判断一项拟议操作是否被允许。因此,值得追问的不只是有没有人提供签名,还包括:哪个规则检查了签名,它允许执行什么动作,还有哪些条件尚未满足?
账户抽象可以支持受限权限以及不同的执行费用支付安排。这些能力来自具体标准、账户实现和已配置规则。一个产品名称不能证明每个账户都有恢复功能、每段会话都受到严格限制,或者每次请求都会获得费用赞助。
本课通过一项虚构的博物馆目录操作,依次分析账户授权、费用赞助、打包与应用执行。所有名称都是教学标记,策略时间也由题目虚构。无需生成密钥、部署账户、存入资金或提交操作。学习目标是先读懂证据链,再理解便捷界面所表达的结果。
选择适合你的阅读路线
本篇目录
- 1. 先描述账户规则,再描述界面
- 2. 沿着四种职责追踪操作
- 3. 虚构的权限卡
- 4. 一次改变一个字段,检查权限
- 5. 费用赞助回答的是另一个问题
- 6. 模拟检查的情境可能发生变化
- 7. 账户验证与应用执行有各自的结果
- 8. 受限权限取决于完整执行路径
- 9. 建立一张操作证据卡
- 10. 练习:找出未满足的条件
- 11. 常见问题
- 12. 来源与延伸阅读
- 第1至3节介绍参与方,并给出完整的虚构策略。
- 第4至8节区分权限、付款条件与执行结果。
- 第9至12节提供证据清单、练习答案与来源记录。
1. 先描述账户规则,再描述界面
先考虑一种简单的基准账户:其普通授权依赖某个指定签名密钥。再考虑另一种账户,它按照配置好的程序判断权限:例如,一个权限主体可以修改管理设置,另一个只能在限定时段内更新某个目录对象。后一种安排需要表达并执行这些不同的权力。
关键变化在于决定账户能够做什么的规则。精美的登录页面并不等于这套规则。页面可以收集请求、解释内容、安排递交,但拟议动作是否被允许,取决于账户实际采用的授权路径。
ERC-4337定义了通过EntryPoint处理的UserOperation,并允许账户采用自己的验证逻辑。UserOperation与承载它的基础链交易是不同对象。该规范创建于2021年9月29日;本课核对时,其状态为Final。参见ERC-4337规范。
这里的比较有明确范围,并不是说所有外部拥有账户都永远不能具有可执行行为。EIP-7702另行规定了EOA的持久代码委托机制,创建于2024年5月7日,核对时状态同样为Final。它与ERC-4337属于不同机制,也可以组合使用。两份规范都不能直接证明某个未指明的钱包具备哪些功能。参见EIP-7702规范。
2. 沿着四种职责追踪操作
本课把账户、打包者bundler、EntryPoint和可选的费用赞助方paymaster分开讨论。
账户执行已配置的授权条件。打包者接收候选操作,进行初步检查,并把操作打包进链上的EntryPoint调用。打包者文档介绍了这种收集和打包职责。初步检查结果描述的是被检查的情境,并不承诺所有未来状态都会给出相同结果。参见打包者概述。
EntryPoint协调相关验证与执行过程。使用paymaster时,它按照自身条件判断是否赞助费用。paymaster文档将费用赞助描述为具有独立条件的服务。本课只采用这一有限职责,不假设所有实现具有统一的收费政策或接口版本。参见Paymaster概述。
给每个参与方分配一个明确问题:账户判断操作是否获得授权;赞助方判断是否支持指定付款路径;打包者判断操作在已检查情境和拟议打包方案下是否合适;应用随后判断所请求的状态变化是否符合自身规则。如果把这些问题压缩成一个绿色对勾,重要信息就会消失。
3. 虚构的权限卡
账户AcctQ已经存在,运行在虚构链S上,并识别EntryPoint E。账户所有者此前为会话权限主体K配置了以下规则,范围仅限于:
- 目标只能是CatalogueX。
- 方法只能是setLabel。
- 对象只能是Object42。
- 不得转移资产。
- K仍须处于有效状态。
- 账户所用的虚构整数策略时间t须满足100 ≤ t ≤ 120,包含两个端点。
这是题目给定的账户策略,并不是ERC-4337统一规定的会话格式。会话密钥文档明确说明,受限会话的约束由具体钱包逻辑执行。“会话密钥”这个名称本身并未定义目标、方法、到期时间或撤销规则。参见会话密钥与委托。
下面各案例彼此独立。除案例明确修改的事实外,均假设策略被正确实现,真实授权绑定了预期操作及其情境,重放保护正确,执行资源充足,其他必要检查也全部满足。这里的t只是教学参数,并不表示某个标准字段的编码、单位或边界惯例。
操作请求CatalogueX将Object42的标签设为“Gallery North”。应用另有一个前置条件:当前目录修订号必须与请求中给出的修订号相同。这属于目录业务规则,不是账户的重放计数器。通过其中一个检查,不能证明另一个也已通过。
4. 一次改变一个字段,检查权限
在t = 110、K仍有效,而且目标、方法、对象及不转移资产的条件都正确时,账户授权检查通过。结论到此为止。此时尚未证明获得赞助、已被纳入区块、应用执行成功或结果具有最终性。
保持可读标签不变,只把Object42改成Object43,授权就会失败。权限指定了对象,不是允许修改任何描述相似的对象。把setLabel改成管理方法,也会失败。把CatalogueX改成另一个目标,同样失败,即便那个目标提供同名方法。
接着保持这些字段正确,只改变时间。按照包含端点的规则,t = 120时授权通过,t = 121时失败,t = 99时也失败。计算并不难,重要的是认真核对两个边界,而不是把“临时”理解成自己设想的持续时间。
如果请求额外加入资产转移,就违反了题目中的禁止转移条件。使用错误链或未被识别的EntryPoint,也无法通过给定的情境检查。对另一项操作有效的签名,不能修复这些差异。
还要留意哪些权力并没有出现。修改标签的权限不包括替换账户所有者、安装模块或修改会话自身的限制。这些能力需要各自的授权路径。本权限卡没有把它们授予K。
5. 费用赞助回答的是另一个问题
现在加入可选paymaster P。在本教学路径中,P必须同意赞助;如果P拒绝,题目没有提供备用付款来源。这是明确给定的路径假设,不表示所有可编程账户都依赖某个赞助方。
第一种变体中,账户策略允许Object42更新,但P拒绝赞助。给定的赞助路径不能继续。这不能说明K缺少指定的目录权限,问题出在所选择的付款路径。
第二种变体中,P愿意赞助Object43更新。账户策略仍会拒绝这项请求。别人愿意承担费用,并不会扩大K的权限。因此,“赞助方批准了”不是完整结论,除非说明批准的究竟是什么。
第三种变体中,两项检查都通过。在给定条件下,这两处障碍被排除,但请求的新标签未必符合目录当前修订号,也不能保证操作一定会被纳入区块。
这种区分有助于排查问题。如果某项服务停止赞助,值得核实的是是否存在另一条已获授权、得到支持的路径,不能直接假设它存在。反过来,换一个赞助方也不能补足对象权限。诊断应依据失败阶段的证据,而不是笼统宣布账户已经失效。
6. 模拟检查的情境可能发生变化
在策略时间110,打包者对请求进行模拟,此时K有效,给定检查全部通过。随后,在相关链上验证发生前,一个拥有独立管理权限的主体撤销了K。题目进一步给定:后续验证所使用的状态已经包含这次撤销。
之后的账户检查失败,因为规则要求K仍有效。较早的模拟不一定不诚实,也不一定计算错误,它描述的是较早状态。如果把模拟结果理解成对未来权限的预留,就额外加入了策略中没有提供的保证。
因此,有用的记录应说明初步检查使用的状态和假设、检查的确切操作,以及之后的处理结果。缺少这些情境时,“模拟成功”不能回答请求实际被处理时是否获得账户授权。
描述撤销时也需要准确。界面显示已请求撤销,与相关状态已经体现撤销,是两回事。本例明确给定的是后者。如果缺少这个事实,就还需要有关顺序和已接受状态的证据。
这说明便捷性与确定性需要分别理解。打包者可以简化递交过程,却不能控制中间发生的所有应用变化和授权变化。不了解条件为何改变就反复提交,也不能证明存在有效路径。
7. 账户验证与应用执行有各自的结果
回到获准操作Object42的请求。K有效,t = 110,赞助条件也通过。请求预期目录修订号为7,但应用当前已处于修订号8。假设CatalogueX严格检查修订号相等,并将这次更新失败向上传递为执行失败。
按照题目给定的应用规则,目录更新失败。这不意味着K原本没有受限权限,而是说明:一项获得授权的请求,尝试执行的应用状态变化已经不满足前置条件。
带版本的EntryPoint代码说明了区分阶段的重要性。在v0.8.0实现中,验证和操作执行属于不同处理环节,操作结果记录包含成功与否的信息。代码也存在导致整个打包交易中止的失败路径。因此,不能普遍概括为“任何失败都会撤销所有操作”,也不能概括为“单项操作失败绝不影响整个打包交易”。参见EntryPoint v0.8.0源码。
解释实际结果时,需要识别已部署版本、账户执行行为和确切失败类别。本练习不为未指明的实现计算费用、nonce后果或回滚边界。外层交易的状态本身,也不能替代这一次目录更新的结果证据。
应当追问预期应用状态的结果:在已识别的被接受状态中,Object42是否确实获得了所请求的标签?如果记录仅说明承载它的交易被处理,回答的仍是较窄的问题。在此之后,最终性还需要对应链的证据。
8. 受限权限取决于完整执行路径
本模型假设目标、方法、对象以及禁止转移资产等限制,确实约束了实际效果。这个假设很重要。如果某实现只检查友好名称,却允许通过另一条不受限制的路径执行,就不符合本权限卡。
阅读设计说明时,应问清每项限制在哪里执行,以及还有哪些路径能够行使权限。会话是否真的局限于声明的操作?其他模块能否独立行动?谁能够修改规则?这些是具体架构问题,不能据此直接接受或否定整个可编程账户类别。
恢复功能也需要同样谨慎地理解。会话权限不会自动包含所有者恢复能力。如果账户存在独立恢复路径,就需要另行说明参与方、等待时间和权限。本例中的K没有恢复权或管理权。
这里存在实际取舍。狭窄权限可以缩小该权限主体失控后的影响范围,前提是实现及所有可达路径都保留了限制。同时,新增策略代码与依赖关系也需要审查。单凭功能清单,无法判断某个已部署账户是否满足这些条件。
9. 建立一张操作证据卡
简明的证据卡能让支持沟通或课堂分析清楚得多。先记录账户与链、被识别的EntryPoint及实现版本、确切请求、适用策略和相关状态,再分别填写以下观察结果:
- 初步检查:检查了哪项操作,使用哪个状态?
- 账户授权:哪些条件通过,哪些失败?
- 付款路径:需要哪个赞助方或其他给定安排,结果如何?
- 处理情况:操作是否确实在已识别的链上情境中被处理?
- 应用效果:预期状态变化是否成功?
- 最终性:哪些协议专属证据覆盖这一结果?
不要补造缺失信息。如果现有证据只能证明赞助方愿意支付,就将账户授权标为未知。如果没有执行结果,不要把纳入通知改写成目录更新已经完成。
证据卡也能帮助确定下一步该问什么。对象不符的拒绝需要核对权限定义;修订号过期需要核对应用状态和请求构造;缺少赞助决定则属于付款路径。这些诊断都可能发生在账户正常、区块链也正常运行的情况下。
10. 练习:找出未满足的条件
练习1:最后一个允许的时间
在t = 120时,所有给定条件均满足。账户策略是否允许请求?t = 121时有什么变化?
答案:120包含在区间内,因此账户策略允许;121不在区间内,时间条件失败。这两个结论都不能单独证明最终执行结果或最终性。
练习2:赞助方慷慨,但对象错误
P愿意支付一项签名正确的Object43更新费用。K的策略仍只指定Object42。赞助批准能否使操作获得授权?
答案:不能。对象限制没有满足。支付意愿与账户权限是两个独立条件。
练习3:请求有权限,但路径不可用
Object42请求通过账户检查,P却拒绝赞助,而且题目没有提供其他付款路径。可以得出什么结论?
答案:指定赞助路径不能继续。不能扩大为K没有目录权限,也不能声称账户所有可能路径都不可用。
练习4:先模拟,后撤销
打包者检查确切操作时K有效,之后验证所用的状态已经包含有效的授权撤销。后续账户检查应依据哪个结果?
答案:依据后续状态。有效状态条件已经失败,先前模拟并未预留权限。
练习5:授权通过,修订号不同
操作预期修订号7,CatalogueX当前为8,并执行相等检查。所有授权与赞助条件均通过。能否证明标签更新成功?
答案:不能。按照给定执行行为,应用前置条件失败,更新也失败。账户授权结果是另一项观察事实。
练习6:产品说明缺少字段
说明只写“临时会话访问”,没有目标、方法、时间和管理路径。能否由此推导出Object42权限卡?
答案:不能。这句话没有给出那些限制。需要核对实际配置及其执行方式,不能把本课虚构规则套到产品上。
11. 常见问题
账户抽象会消除签名吗?
它改变的是授权可以如何被判断。具体账户仍可能使用签名,并结合其他条件。关键在于实现了什么规则,而不是密码学是否消失。
本课架构必须使用paymaster吗?
不必须。在参与方结构中,P是可选的。但一旦某道练习将P设为唯一给定付款路径,P的批准就成为该练习的必要条件。系统层面的可选功能,仍可能被某项具体配置所依赖。
可编程就意味着可恢复吗?
只有实际配置的恢复路径才能支持这一结论。本课会话规则没有提供恢复功能。恢复、签名权限和付款安排都需要分别说明条件。
便捷界面能证明操作成功吗?
界面陈述是来自该界面的证据。要确立效果,应将确切操作关联到相应处理结果和应用状态,再依据链规则判断最终性。清晰的界面应当帮助呈现这些差别。
12. 来源与延伸阅读
以下来源核对于2026年10月12日。ERC-4337与EIP-7702是具有各自创建日期和当前状态的标准文件;文档页面属于持续维护的说明;实现引用固定为v0.8.0。不能把这些资料的细节当成可互换版本。
- ERC-4337:使用替代内存池的账户抽象:操作与参与方定义,以及账户专属验证。
- 打包者概述:初步检查与打包职责。
- Paymaster概述:可选费用赞助及自身条件。
- 会话密钥与委托:由具体实现定义的受限权限。
- EntryPoint v0.8.0:不同处理阶段与失败路径。
- EIP-7702:为EOA设置代码:独立的持久委托机制。
如需更广泛的入门说明,可阅读How Blockchain Works。接下来可学习持续存在的代币额度授权:那是另一种授权机制,需要在各次动作之后继续追踪剩余权限。核心习惯相同:识别确切规则、规则被判断时的状态,以及证据实际确立的结果。
