登录签名需要一个容器
登录网站时你签的那条验证消息,本身只是一串字节加一个签名。它在应用、钱包、中继服务之间流转时,需要回答一串工程问题:这条签名属于哪个链上的哪个地址?用什么算法验?什么时候过期?父级签名在不在场?编号 74 的链无关协议 CACAO(Chain Agnostic CApability Object,链无关能力对象)就是回答这些问题的容器。写作时该协议处于 Review(评审)状态,是 登录消息到底让你签了什么:CAIP-122 的 SIWx 数据模型逐项拆 数据模型往工程落地方向延伸的一层。

头部加负载的两层结构
CACAO 顶层分两块。h 是头部,只带一个 t 字段标记验签方式;p 是负载,字段表和登录消息一一对应:domain(域名)、aud(URI)、version、nonce、iat(签发时间)、可选的 nbf(生效时间)与 exp(过期时间)、可选 statement、requestId 与 resources 列表。时间字段按 RFC 3339 的 date-time 编码,可以精确到毫秒。签发者 iss 用的是 did:pkh 格式,里面同时装着区块链地址和网络信息,这正是 CAIP-10账户ID为什么必须带链? 强调过的原则:地址不挂链标识就说不清是谁的地址。
签名提示与验签路径
签名本质上是字节,容器里额外放了个类型提示 t,告诉验证方怎么验。规范列出的取值沿用了 SIWx 命名空间里的方法:eip191 就按 EIP-191 恢复地址,eip1271 就调用合约钱包的验证接口。对 EVM 链,验证方把负载字段重组成登录文本再验签,重组结果与 EIP-4361 定义的消息格式逐行一致。也就是说,容器没有发明新的签名算法,只是把「怎么验」写进了信封。
序列化与能力链回传
作为一个 IPLD 对象,CACAO 用 dag-cbor 做确定性序列化,同一个对象在任何环境得到同一串字节。传输时规范提议把它装进 base64url 编码的 CAR 文件(当前用 CARv1),CAR 的根指向能力链的末端,并把所有被引用的父级 CACAO 一并带上——这样即便某个父级还取不到,出示方和消费方也手里有货。这套设计的意图是让「A 授权 B、B 再委托 C」的链条可以整体搬运。
它站在哪条协议线上
编号 74 不是孤立提案:它装的签名就是编号 122 SIWx 流程的产物,负载字段表与 SIWx 数据模型逐项对应,签发者 iss 用的 did:pkh 把链与地址写进同一串,沿用的是 CAIP-10账户ID为什么必须带链? 那套账户标识原则(详见 登录消息到底让你签了什么:CAIP-122 的 SIWx 数据模型逐项拆),签名重组后与 EIP-4361 的以太坊登录文本逐行一致。仓库里还并存着另一份同号主题的 CACAO 草案(编号 196,状态 Draft),评估实现时先确认对方对齐的是哪一份文本,比确认「支持 CACAO」这句话更有信息量。连接和登录合成一次弹窗:CAIP-222 的 wallet_authenticate 把两步并作一步 的 wallet_authenticate 返回的正是这种能力对象,两者一个定义信封、定义调用入口,读协议时最好成对读。
新旧头部类型
早期版本的头部类型被限死为 eip4361,即只服务 Sign-in with Ethereum。新版本要求实现同时支持 eip4361 与 caip122 两种头部,后者把消息格式推广到任意链的 SIWx 命名空间。评估钱包或库时可以直接问一句支持哪种头部,这比笼统问「支不支持 CAIP-74」更能暴露实现完整度。
三个易混概念
第一,CACAO 不是代币也不是 NFT,名字里的 capability 指「能力凭据」:持有并出示这条签名,就证明你在那个时点把某链地址的登录权限给了某个域名。第二,它的身份证是 IPLD 体系里的 CID——确定性序列化保证同一对象在任何机器算出同一个 CID,这与 一串字符串指到合约里的一个数:CAIP-373 函数调用引用怎么读 用字符串指向合约数据的思路同源,只是那边指向链上、这边指向一个签名对象。第三,验证「签名有效」与验证「还没过期」是两回事:前者看算法与地址恢复,后者只看 exp 与本地时钟,日志里两者要分开报,否则排查时会把已过期的合法签名误判成伪造。
用户视角的核对清单
普通用户遇到 CACAO 的典型场景是钱包弹出的登录授权窗。值得核对的三件事:域名是否与你正在访问的站点一致;exp 过期时间是否短得合理;resources 里有没有可疑链接——规范只把它们当 URI 列表,点了才算数,但列表本身值得扫一眼。容器本身不授权任何链上操作,签名登录不等于同意转账,这条边界和 连接和登录合成一次弹窗:CAIP-222 的 wallet_authenticate 把两步并作一步 里两步合一流程的结论相同。本文为协议机制说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。