同是”连着的会话”,各家数法不一样
用户点一次”连接钱包”,背后其实建立了一段有状态的会话:dapp 记住了你的账户,钱包记住了这个站点的授权。麻烦在于各架构记录这段会话的方式完全不同——浏览器插件钱包(如 MetaMask 的沙箱)按站点 origin 追踪,浏览器里表现为一段会话令牌;CAIP-25钱包会话如何申请最小权限?讲过的 CAIP-25 用能力清单描述会话;WalletConnect 类协议则以一个 topic 字符串驱动发布订阅。想写一个”列出我所有打开的钱包会话并支持一键断开”的工具,就得先回答”会话的身份证号是什么”。2022 年 11 月 9 日提出的 CAIP-171 就是给这个身份证号立规矩:类型上它只是一个字符串,规范刻意不给取值加代码级约束,具体编码是实现者的自由,但五条 MUST 级别的性质必须全部满足。

五条性质各挡一种故障
第一条:标识符必须唯一标识一个打开的、有状态的会话——防止把两段独立会话混成一个编号,工具断开一段却以为两段都关了。第二条:必须标识一个”可关闭”的会话,且会话关闭后标识符必须失效——挡的是那种”断开按钮点了、旧编号还能继续调用”的僵尸会话,凡是用站点名或账户地址直接当会话号的实现,都会在重复连接后留下关不掉的残留。第三条:会话状态变化过程中标识符必须保持不变——账户切换、链切换都不该让编号换了名字,否则审计日志会把一段会话错记成多段。第四条:JSON 序列化往返后必须逐字符相等——会话号要能安全地存配置、进日志、跨进程传递,带浮点数或日期对象这类不可靠往返形态的编号不合格。
为什么熵值是安全条款
第五条性质从密码随机源生成、至少包含九十六位熵,是五条里唯一直接讲安全的。会话标识符在很多架构里就是凭据本身:谁能出示这个编号,谁就能继续以该会话的身份发请求。如果编号是可预测的(顺序整数、时间戳拼接、站点名派生都算),本地进程或被注入的脚本就能猜测并劫持别人的会话。九十六位熵是这份草案给出的下限,与常见加密协议的会话令牌实践一致。顺带说,签名不再只是一条消息:CAIP-74 的 CACAO 能力对象如何打包与验签讲的 CAIP-74 能力对象是”会话凭什么被授权”的记录,而 CAIP-171 管的是”会话本身叫什么、怎么关”,一个管内容一个管外壳,读规范时不要混。
草案现状与能期待什么
这份 CAIP 的官方状态至今是 Draft(草案),作者为 Olaf Tomalka,规范正文的 Specification 段落前还专门声明该节属于非规范性内容(non-normative)——即连这些条目在链条内的约束力都留待后续版本钉死。对照现实:主流钱包的会话列表功能(例如插件钱包里的”已连接站点”面板)早已能用,但它们的会话编号格式互不兼容,CAIP-171 想统一的目标尚未落地。用户层面的务实期待因此是:第一,任何工具声称实现了”标准会话标识”时,可以拿五条性质追问,尤其”断开后编号是否立即失效”这一条;第二,看到产品文档引用 CAIP-171 时先确认它对应链条与版本,草案阶段不同实现可能各自理解。
用户自查清单
把这套规范翻成普通用户能执行的检查:在钱包管理页连接了十几个 dapp 后,逐条断开几个,再刷新列表确认它们真的消失了(性质二的实操检验);同一站点断开后重新连接,确认工具把它们显示为一段新会话而不是旧会话复活;不要手动复制或截图会话编号发给任何人——在符合性质五的实现里,那个字符串等同于临时钥匙。清理节奏上,把”断开不再使用的站点”和CAIP-25钱包会话如何申请最小权限?讨论的最小授权审查合并成一次季度盘点最省事:先断会话、再降级权限,两步都留截图,出问题时可回溯。
一句合规提醒
本文讨论的是钱包会话的技术组织方式,与任何资产收益、投资建议无关;CAIP-171 处于草案状态,机制细节以 ChainAgnostic 官方仓库当前文本为准。任何以”会话编号可兑换资产”为话术的客服或空投都是诈骗话术,与本文规范毫无关系。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。