免费交互幕后的那通电话
很多产品宣传操作零 Gas,背后常见的是账户抽象体系里的代付角色:paymaster 替你向网络付费。钱包和应用之间过去没有统一的对话规矩,各家代付服务商的接口字段、调用时序互不相同,钱包要为每家写适配。ERC-7677 就是补这块短板的:它定义了一个 EIP-5792 能力声明,让应用告诉智能账户钱包去和哪家代付 web 服务通信,同时给出这个 web 服务本身该实现的两个 JSON-RPC 方法。这份 ERC 状态为评审中(Review),比纯草案前进了一步,但落地程度仍以各钱包与各服务商的实际支持为准。账户抽象与 EntryPoint 的背景机制不在本文展开,可先读 免费交互与 paymaster:用 ERC-4337 让 NFT 操作零 Gas 的原理与限制 建立底座。
两个方法与两步流程
标准方法一叫 pm_getPaymasterStubData:钱包把尚未签名的用户操作、入口合约地址、链标识和上下文发给代付服务,换回一组占位值——代付地址、代付数据、代付相关的 gas 限额字段——用来做费用估算。方法二叫 pm_getPaymasterData:在占位值基础上返回最终要写进用户操作的正式数据。拆成两步的原因是费用估算需要一个结构完整但内容可以是占位的操作体,而正式签名之前又必须拿到真实终值,顺序是先 stub 估算、再签名前取 final。
原文还允许一条捷径:如果拿到占位数据后已经不需要第二步——例如代付数据本身不含签名——第一步可以返回 isFinal 为 true,调用方就跳过第二次请求。规范同时建议代付服务在第一步就做合规性判断,不该赞助的请求应当在这一步就拒绝,而不是等用户签完了再失败。
对参数有一点值得记住:发给代付服务的用户操作不含签名字段,因为用户签在所有字段填齐之后。这个顺序决定了代付服务看到不了你的签名,只能看到操作意图本身。
名字牌与渲染安全的细节
pm_getPaymasterStubData 的返回里可选地包含一个 sponsor 对象,带 name 和可选 icon,是告诉你这笔费用由谁垫付的标识。钱包可以选择展示。原文对 icon 的规定相当具体:必须是 data URI 形式的图片地址,建议正方形、分辨率不低于每边 96 像素,推荐 PNG、WebP 或 SVG 这类格式;而对 SVG 有一条硬性要求——由于 SVG 能携带脚本,钱包必须通过图像标签的方式渲染它,防止图片里夹带的代码在钱包界面里执行。这是接口标准里少见的把渲染安全写进规范正文的例子,说明代付弹窗这类高信任界面被当作攻击面认真对待。
作为用户,你在弹窗里看到代付方名称时,可以把它当成一个可核验的声明而不是事实:名称由服务商自报,真正垫付关系要看交易里代付字段指向的合约,这与我们讲过的谁付钱看回执的思路一致。
代付的正常代价是什么
天下没有免费的 Gas,代付模式的费用总会以别的形式回来:可能是应用运营预算、活动限额、注册引导,也可能什么都没有但希望降低你的上手门槛。规范本身不规定这些商业安排,只规定对话格式。所以要警惕两类情况:一是代付弹窗声称帮你自动做别的事——规范要求的是费用字段装配,任何把代付和额外授权捆绑的话术都值得怀疑;二是代付服务 URL 由应用指定,恶意指向自代付服务时弹窗展示信息可能失真,核对域名和合约地址仍是兜底手段。
支持现状方面,采用 EIP-5792 能力协商的钱包与接入该标准的智能账户服务商之间才存在这套对话;用传统外部账户加 gas 费直接发交易的路径完全绕开这一切,两者的弹窗长什么样、费用从哪走,是完全不同的账本。
风险提示
本文解释接口标准与费用代付机制,不构成投资建议,也不背书任何代付服务或钱包。凡涉及签名,请先核对域名、代付字段与授权范围;代付不代表你的授权数据不被收集,也不降低操作本身的不可撤销性。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。