钱包里的静默签名是怎么回事:EIP-5345 的四个权限字段 图 1
钱包里的静默签名是怎么回事:EIP-5345 的四个权限字段 · 图 1

免掉逐笔确认,是免掉了哪一步

日常连上网站发起操作,流程一般是四拍:点击、弹窗、核对、确认。所谓静默签名,想省掉的是第三拍和第四拍——在你提前批准的一段时间窗内,某些交易不再逐笔弹出确认。EIP-5345 是这个方向的一个提案,2022 年 7 月提交,全名 Silent Signing Extension for JSON-RPC,目前状态是 Stagnant,没有主流钱包把它做进正式版。先把它的结构看清,是为了识别那些借同类名头的产品到底让你交出了什么。

钱包里的静默签名是怎么回事:EIP-5345 的四个权限字段 图 2
钱包里的静默签名是怎么回事:EIP-5345 的四个权限字段 · 图 2

三个方法各管一段

提案在常规 JSON-RPC 之外加了三个方法。第一个是 wallet_requestSilentSign,这是唯一的授权入口,网站要先过这一关。第二个是 wallet_silentSignTransaction:网站把交易参数交给钱包,钱包在后台签好返回,广播动作仍由网站完成。第三个是 wallet_silentSendTransaction:钱包不仅签名,还直接把交易广播上链。两者的区别只在”谁把交易推上网”,信任重心都在前面那次授权上。若用户没有批准,或者钱包不支持这个方法,页面回退到常规流程,原有方法不受影响。

权限的形状:四个字段缺一不可

wallet_requestSilentSign 的请求对象里,真正划边界的是四个字段。until 是 Unix 时间戳,权限到这个时点自动失效,是四道闸里的时间闸。chainId 指定权限只在哪条链上有效,与 钱包报错别只截图:4001、4100、4900 各指一件事 里讲过的用户操作错误码同属”先把范围说死”的思路。contractAddress 圈定被允许的合约,只此一个地址。allowedFunctions 是函数签名数组,写成 equip(address,uint256) 这样的形式,等于给这次委托列了一份点名清单。另有一个 description 字段,供钱包把”这次到底授权了什么”展示给你看。用户批准后,钱包生成一段随机 permissionSecret 交回网站,之后的静默操作凭它执行。

这四个字段在语义上是四道同心闸门:时间窗、链、合约、函数名单,任何一道缺失,权限面都会明显扩大。一份只写了时间、没限定合约和函数的授权,与”这段时间里这个网站可以替你签任何交易”没有本质区别。反过来看,假如某个产品实现了类似协议却不展示权限内容,问题不在协议文本,而在实现方没有把权限可视化。

站在钱包一侧看这笔交易

从钱包实现的角度,这类协议最难写对的不是密码学而是产品。授权窗口打开时必须把 until 换算成本地可读时间、把 contractAddress 反查成合约名、把函数签名逐个摊开成人话——任何一个字段含糊,免确认就变成了免知情。到期后钱包应立即把 permissionSecret 作废并让网站收到明确报错,而不是静默回退到逐笔弹窗又不告诉用户权限已结束。更现实的问题是审计:一段窗口内后台签了哪些交易,用户事后能不能按笔回看?提案没有规定钱包必须留这份台账,所以评估任何实现类功能时,“签过的每一笔能不能查回来”应当是用户自己追加的验收项,而不是默认存在的能力。

提案没有走完的路

按提案的设计,“网页知道钱包在场”与”网页能替你签字”之间隔着多道闸门——连接归连接、签名归签名、授权动钱,这在 连接钱包、签署消息、授权转账是三件事:各自动了你什么 里按三件事分过工。EIP-5345 停留在提案库里,没有进入主流钱包的实现,链上也查不到对应的标准产物。识别这类概念时可以照例先核三件事:有没有主网实现、授权是否可审计、范围是否可提前限定。三问全空的”免确认”通道,无论包装成什么,都建议先绕开。

本文为技术说明,不构成投资建议或买卖推荐;任何免确认授权都可能造成资产损失,请先小额验证。