合约报错让钱包补数据:ERC-5568 的 walletSignal24 机制 图 1
合约报错让钱包补数据:ERC-5568 的 walletSignal24 机制 · 图 1

合约报错让钱包补数据:ERC-5568 的 walletSignal24 机制

你在市场挂一枚 NFT,流程本该是”签名、提交、成交”,但某些协议会要求你先做一笔 approve、或者先去别处签个文件。传统做法是把这些要求硬编码在前端里,一份前端伺候几家协议就开始分叉。ERC-5568(2022 年 8 月创建,Review 状态)把方向倒过来:让合约自己对钱包喊话——“这笔操作之前,你需要先做一件事”,用一条约定函数与一种自定义回退理由把指令传出来。

walletSignal24 的问答回合

机制的核心是名为 walletSignal24 的约定函数:钱包在把交易交给网络之前,先以可改状态的语境模拟调用它,函数返回一个指令编号加一段数据。编号语义直接借用 ERC 编号空间——某个 ERC 定义的动作,其指令编号就是那个 ERC 的数字,钱包按编号找到自己认识的处理器(例如某类授权动作、某类链下取数),解析数据后替用户准备或直接弹出确认。标准文本给了几个设想用例:交易所合约直接要求钱包发起 approve、合约要求用户每段时间轮换密钥、或请求一次 HTTP 动作。整条链路刻意做薄:不用 ERC-165 探测、不注册事件,检测方式是直接模拟调用、看返回的编号是否非零;遇到无法解析的数据就报错并放弃交易,但绝不允许在解析失败后偷偷重发交易。标准同时提醒实现者,模拟调用本身有安全含义:被模拟的合约代码在此路径上可以观察调用者,恶意的钱包或被污染的合约都可能把这回合用作侦察面——薄接口从来不等于零风险。

合约报错让钱包补数据:ERC-5568 的 walletSignal24 机制 图 2
合约报错让钱包补数据:ERC-5568 的 walletSignal24 机制 · 图 2

与 ERC-7412 的分岔

同一家族里有两条路线常被混淆。ERC-7412 的做法是交易先上链、合约 revert 时把”缺的链下数据”随错误抛回来,验证节点顺带拿到数据再重试——数据补给发生在链上回合;ERC-5568 把问答挪到交易发送之前,钱包先在本地完成信息交换,再决定要不要发出那笔交易——补给发生在链下回合。一个解决”验证需要数据、数据太大塞不进交易”,一个解决”合约需要钱包做点事、前端写不动了”。顺带说明,ERC-5568 文本在兼容性一节提到的是 ERC-3668:两者可并用但机制不同,CCIP Read 走”合约说去别处读”,walletSignal24 走”合约说先替我做件事”。

对普通用户意味着什么

协议越聪明,签名越要慢

全文收束成一句可执行的话:你的钱包越自动,你越要手动。walletSignal24 这类机制把交互回合数减少,同时也把每一回合的信息密度提高——过去三次弹窗逼你读三次内容,将来一次已代你处理可能什么都没让你读。ERC-5568 的 Review 状态像一枚交通信号灯:通道已铺好,规则还在讨论,而使用者的习惯可以立即养成——凡是钱包替你跳过的步骤,事后翻一次操作记录,看看它替你签了什么;凡是替你做的授权,当作自己亲手签过的那一笔来记账。链上安全的千年铁律没有因为便利而改写:慢一秒读内容,永远比快一秒后悔便宜。

第一层是可感知的体验变化:当钱包开始认识标准指令,某些”先授权后交互”的连环弹窗有望变成一次有解释的合并确认——弹窗会明说”某合约请求你对它执行 approve”,比裸授权签名友好且可审计。第二层是风险提示:凡是自动补做的动作,都继承了”你没读过就发生了”的可能,钱包对 walletSignal24 结果的任何自动处理,都必须保持逐笔展示与可拒绝;把”合约要我先做什么”翻译成”我愿意为它做什么”的那道闸门,永远该握在人手上。第三层是核验姿势:钱包界面若自动替你发起一笔此前没计划过的 approve,先查这笔请求对应的合约地址是否是你正在交互的官方合约——借指令信道混入越权请求,是这类机制上线前最该防的剧本。一份 Review 状态的薄标准,照出的正是钱包与合约关系里最敏感的权力交接。本文只做协议机制科普,不构成投资建议。