断开连接不该只是一句界面话
钱包和网站之间的”连接”,本质是一份带期限的授权记录:网站记住了它能替你哪些链上做什么事。清理这份记录,过去主要靠用户在钱包界面点”断开”,或者靠网站重新发起一个不含任何权限的会话来顶掉旧的。编号 285 的链无关协议(CAIP-285)给这条路径补了一个正式动作:wallet_revokeSession 方法,让撤销成为协议里可调用、可验证的一步,而不只是界面按钮的副作用。按提案所在的规范仓库原文核验,它仍是 Draft(草案)状态,读者在钱包里能不能看到它生效的行为,取决于钱包有没有跟进实现。

参数与语义:有编号点名撤销,没编号整体撤销
方法的参数只有一个 sessionId,字符串、可选,语义分三种情况。传了编号:只撤销那一个会话。不传编号、且存在一个不带编号的活跃会话:撤销它,并返回成功。其余情形返回错误。成功响应极其简洁——result 为布尔真;规范同时要求钱包在成功撤销后移除该会话关联的全部授权与属性。这意味着协议层的”撤销”和你在钱包里删掉一条连接记录,目标是同一件事:让网站未来引用这份会话时拿不到任何可用权限。它和 WalletConnect会话怎么关? 讲的会话关闭逻辑同源,只是 285 把”应用主动发起撤销”这条路正式化了。
三个错误码:5500、5501、5502 各指一件事
失败情形的处理是这篇规范最有辨识度的部分。默认情况下,除非网站被钱包视为可信对端,失败都应该用泛化的”未知错误”(错误码 0)回复——规范的理由是防止把错误细节变成外部探测钱包状态的指纹工具,伤害群体隐私。在可信连接里,规范则给出三个更具体的码:5500 表示传入的会话编号不被认识;5501 表示钱包里没有任何活跃会话;5502 表示你没传编号、但当前所有活跃会话都带编号,系统无法猜你要撤哪一个。对开发者的排障含义是:5502 通常意味着连接是有编号的那一档(带编号和不带编号的两种钱包连接:CAIP-316 会话生命周期对照表 对比过两档连接形态),补上编号重发即可;5501 说明会话早没了,撤销请求本身多余;5500 多半是页面记住了已被钱包回收的旧编号。
和链上授权是两套账,别混着销
必须把边界钉死:wallet_revokeSession 撤销的是”网站能不能向你发起签名请求”这一层的会话授权,它不碰你在链上批过的代币支出许可。你曾对某个合约批过的代币额度,是记录在合约里的数字,撤销它要发一笔链上交易,和会话断没断没有关系——两类授权的盘点方法在 钱包连接过的网站清单怎么清:断开连接和撤销授权是两件事 里分开讲过。判断自己是否”清理干净”的正确姿势是三层各查一遍:钱包里的连接与会话列表、协议层的活跃会话、链上的代币与 NFT 授权清单。只做了前两层就离场,是不少用户事后被旧授权波及的根源。
撤销的正确顺序与防误操作
结合协议能力,稳妥的清理顺序可以这样安排。先决定范围:是清一个会话还是清某条链上的所有连接,钱包的权限管理页通常按站点归并,路径因钱包而异,以你的钱包当前版本为准。其次处理有资产暴露的对象:对用过借贷、去中心化交易类站点的钱包,先盘链上授权再断连接,顺序反了也不会出错,但先断连接容易让你忘记还有额度挂在合约里。然后在支持的场景里让网站侧走协议撤销——正规应用在你点”登出”时理应调用这类方法,做到断开即失效。最后做一次反向验证:重新打开该站,它应当回到”未连接”状态并要求你重新走一遍授权请求,那份请求的字段怎么逐项读,见 WalletConnect会话权限怎么读?。
隐私与技术现状的两点提醒
第一,撤销行为的可观察性本身是隐私面。错误码分级已经说明了原因:细节给多了,钱包就成了公开查询的靶子。所以正规钱包不会对任意来源告诉你”当前有几个会话”,你在陌生页面遇到试图枚举会话状态的行为,应视为危险信号。第二,285 属会话家族协议簇,和会话查询 网站记忆和钱包实况对不上?CAIP-312 给会话权限装了一个查询接口、变更事件 你在钱包里改了权限,网站凭什么知道:CAIP-311 的会话变更广播事件 是配套设计,单独问某钱包”支持不支持 285”往往不如直接测试行为:撤销后让网站尝试沿用旧会话,被拒绝且要求重新授权,说明撤销真实生效。整个过程只会产生协议层动作,正常情况下不会替你发出任何资产转移交易;涉及真实资产的授权撤销请逐项确认后自行签名,本文所有内容仅为机制说明与防御建议,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。