带编号和不带编号的两种钱包连接:CAIP-316 会话生命周期对照表 图 1
带编号和不带编号的两种钱包连接:CAIP-316 会话生命周期对照表 · 图 1

为什么”会话要不要有编号”值得写一份文档

多数用户在钱包的已连接列表里看不出连接有什么不同,但在协议层,会话存在两种形态:一种带会话编号(sessionId),像取件码一样标识每一次连接;另一种不带编号,靠”这个应用和这个钱包之间当前就有一份会话”这种默认约定工作。编号 316 的链无关协议(CAIP-316)不是新机制,而是一份信息性的最佳实践文档:它用一张生命周期对照表,把带编号与不带编号两种会话在六个环节的做法逐格摆出来,确保实现方”无论选哪种、或两种都支持,行为都安全且可预期”。按仓库原文核验,该文档目前处于 Draft(草案)状态,依赖 CAIP-25钱包会话如何申请最小权限? 的会话握手与 一份 JSON 说清「哪条链、哪些方法、哪几个账户」:CAIP-217 授权作用域语法 的作用域语法。

带编号和不带编号的两种钱包连接:CAIP-316 会话生命周期对照表 图 2
带编号和不带编号的两种钱包连接:CAIP-316 会话生命周期对照表 · 图 2

编号曾经为什么重要

要理解这张表的动机,得回到编号的原始职责:当连接要走可能被多方共享、或不那么可信的传输通道时,调用方和钱包都需要一个标识来把请求对号入座——消息混流时,编号就是分拣条码。这个前提在浏览器扩展这类一对一通道里其实不成立:网站和钱包之间一条直连,不存在第二个会话来抢件。于是 316 所描述的规范演进(编号放宽出现在会话查询、变更事件、撤销这一族文档里)把编号从”必备”降成了”可选”:单会话通道可以直接用无编号路径做全套管理。动机段说得很直白——跨通道的等价关系违反直觉,所以画图列表做”苹果对苹果”的比较。

对照表六步:初始化、重连、查询、确认、双方撤销

表的第一行,应用初始化会话:两种形态都调用 wallet_createSession,不带编号发起;若已有旧会话则顶掉重建。第二行,钱包侧重建:带编号形态要等应用下次调用时才回一个新编号;不带编号形态根本不需要重建,因为变更事件会主动通知、查询接口能随手核对——这是两列差别最大的一格。第三、四行,查询与确认现状:带编号形态要么自己存好会话记录,要么带着编号去查;无编号形态直接空参查询即可。第五行,应用发起撤销:带编号的老办法是重发一个不含任何作用域的建会话请求顶掉旧会话,新办法是调用撤销方法并附编号;无编号形态一次空参撤销调用完成全部动作。第六行,钱包侧撤销:带编号形态靠下次调用返回新编号来让旧引用作废,无编号形态同样交给事件与查询兜底。对读的人而言,这张表最有用的读法是”失败排查字典”:网站报”会话编号不认识”,多半处在一个编号已轮换的带编号会话里;报”当前会话都带编号”,是你用无编号方式发指令却撞上了带编号的连接(错误码细节见 点下「撤销连接」之后发生了什么:CAIP-285 与 wallet_revokeSession 的协议动作)。

单会话通道的红利与适用面

放松编号带来的直接红利是流程变短:不需要维护”哪个编号对应哪次连接”的状态簿,重连、查询、撤销都是幂等的一发调用。文档明确点出这适合单会话传输场景——通道本身已经保证一对一,编号只是冗余税。反过来,凡是需要在一个通道里同时挂多份会话(比如多标签页复用同一传输管道的架构),编号仍是不可替代的分拣凭证。这也是为什么 316 把自己定位成信息性文档而不是新标准:它不改写任何协议字段,只防止实现者在”新旧两种流程都支持”时写出自相矛盾的行为,比如同一钱包对同一站点一半流程带编号、一半不带。

用户在两种形态下的动作差异

把工程语言翻译回钱包界面:带编号会话的特征是,断开重连后旧页面上的”已连接”状态经常失效,因为编号一换,旧引用整体作废,网站必须重新申请;无编号会话则更像常驻关系,刷新页面后网站能静默恢复,前提是它实现了查询。你的应对策略因此可以分化。对偶尔连的陌生站点,无编号形态反而要更勤快清理——它静默续用的特性容易让授权”活”得比你记忆久,定期按站点审查连接是必要卫生,方法见 钱包连接过的网站清单怎么清:断开连接和撤销授权是两件事。对常用可信站点,无编号减少弹窗骚扰,值得保留,但要配合权限收缩:把方法清单只留真正用得上的,依据作用域语法逐项收紧(一份 JSON 说清「哪条链、哪些方法、哪几个账户」:CAIP-217 授权作用域语法)。

边界、现状与安全提醒

三点提醒收尾。其一,316 是对照表不是新技术,判断你的钱包与网站走哪种形态,最可靠的方法还是观察行为:断开再刷新,网站能无感恢复的偏向无编号路径,需要重新点连接的偏向带编号路径,两者都不违规。其二,编号放宽改变了部分失败语义——空参撤销、空参查询在”所有会话都带编号”时会被规范判为错误而不是随便挑一个执行,这类保守设计值得肯定:宁可报错,不可猜错。其三,生命周期管理再顺滑,管的也只是”网站与钱包的通信许可”,从不触及链上资产状态;代币授权、合约权限各是独立账本,任何一次批量清理前,先分清你要关的是通道还是支出权,两者撤销方式完全不同。会话安全习惯的养成属于防御性措施,与资产收益无关,本文不构成任何投资建议。