连接路径上那个”必须在线的中间人”
dApp 与钱包之间要传签名请求,桌面浏览器里有扩展注入这条近路,移动端应用之间却只能靠深链或 Universal Link 一单一单地传话。跨设备场景(电脑网页配手机钱包)主流做法是借一个中心化的信令服务器牵线,之后虽然也走点对点的 WebRTC,牵线这个环节始终吊着:服务器宕了连不上,它也能看见你在连谁。钱包协议 WalletConnect 对单点问题的公开表态,以及其连接串本身的格式拆解(见 扫码连钱包那串 wc 开头的链接里写了什么:ERC-1328 逐项拆),说明这确实是生态公认的问题而不是假想敌。CIP-45(状态 Active,Category 为 Wallets,2022-11-29 创建,作者来自 Cardano 基金会)给出的答案是:用一批公开的 WebTorrent 追踪器替代中央信令服务器。

用公钥当”房间号”,追踪器只负责介绍
机制可以拆成三步。dApp 一侧生成一对 Ed25519 密钥——种子可以存下来复用,浏览器或 App 重启后仍是同一标识——公钥同时充当连接标识。dApp 把携带该标识的信息向多个追踪器宣告(概念验证用的是公共 tracker 列表,多路冗余),钱包拿到同一个标识后向这批追踪器查询,得到对方位置,随后一切通信都走 WebRTC 数据通道点对点完成,追踪器不再在场。标识怎么交到对方手里:同一台设备上走深链或剪贴板,跨设备就印成二维码。标识若经链接传递,规范规定必须用 CIP-13 的 Cardano URI 方案:web+cardano://connect/v1?identifier=<公钥>。地址类深链的既有写法可对照把地址装进浏览器的 CIP-134(见 web+cardano 链接里只装一个地址:CIP-134 把 Cardano 地址写进浏览器的办法);同为”把签名请求送进钱包”、但不建长连接的系统深链路线是 CIP-186(见 不扫码也不装扩展:CIP-186 用系统深链把签名请求送进 Cardano 钱包),两者一个建会话、一个递条子,分工不同。
概念验证长什么样
CIP-45 附带可运行的概念验证,底层是 bugout 库——源自 2018 年”在浏览器标签页里跑后端服务”的思路、以 MIT 协议开源。演示里 dApp 是一页 HTML,加载库、存种子、向 tracker 列表宣告,然后等着;钱包是一枚跨平台的 Ionic React 应用,扫到标识后发起追踪器查询、建立连接。连上之后,dApp 一侧通过远程调用触发钱包侧的签名,再把结果送回——并且概念验证把这套远程方法伪装成 window.cardano 下的注入对象,让 dApp 代码可以沿用 CIP-30 风格的调用习惯。值得强调:这是可行性演示,不是已上线的产品行为,各家钱包的真实支持面要逐一核对。
去掉中继,去不掉哪些边界
把信任账算清:追踪器只暴露”谁在找谁”的握手层信息,交易内容不再顺路经过中心服务器是主要收益;但标识本身是自生成的公钥,没有谁担保它对应哪家钱包——扫码配对时要确认二维码渲染在对方自己的页面或设备上,换码与投毒攻击照单全收。硬件钱包用户在直连会话里同样要过”设备屏上核对”这道关,交易长什么样、能不能签的边界在 CIP-21 一类规范里划得很清楚(见 硬件钱包拒签的交易长什么样:CIP-21 给 Cardano 交易划出的兼容性红线)。追踪器列表来自代码内置,选用哪些公共节点仍是实现方的自由。
连不上时的分流
按协议环节排查能少走弯路。标识交接失败最常见:钱包重启后若没有持久化种子,会生成新的公钥标识,旧二维码随之作废,表现是扫码后毫无反应——重画配对码即可。追踪器环节其次:列表里的 tracker 全部失联(网络策略拦 UDP、防火墙拦 announc 流量)时,双方各自”在广播但没人应答”,换网络环境重连可验证是否传输问题。最后才是数据通道:WebRTC 对某些对称 NAT 需要额外穿透手段,连上后 RPC 超时属这一类。要注意这些故障都不损伤资产——连接层失败的最坏结果只是签名请求没送到;反过来,任何提示你”把助记词输进这个连接流程”的界面,都不属于 CIP-45 定义的通信环节,按钓鱼处理。
边界与风险提示
CIP-45 描述的是连接通道,不是授权与额度语义:签名请求里每笔操作的金额、收款方、资产仍需逐笔确认;规范状态与实现方名单以其仓库现行文本为准,本文写作时未验证任何具体钱包的上线进度。本文为机制说明,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。