AT Protocol 的数据模型概览
AT Protocol 的仓库采用了内容寻址式数据结构。数据的保存、传输和校验依赖以下几个组件。CBOR
CBOR 类提供了 AT Protocol 所采用的 DAG-CBOR 格式的编解码。作为标准 CBOR 的扩展,它支持 CID link(tag 42)。
编码
解码
用途
如果想手动计算和校验帖子的 CID,需要使用 CBOR 编码(另见 verify 页面)。CID (Content Identifier)
CID 是基于数据哈希的自描述标识符。在 AT Protocol 中,SHA-256 哈希会被 multihash 包裹,再通过 multicodec 和 multibase 编码。CIDv0 与 CIDv1
主要 API
CAR (Content Addressable aRchive)
CAR 文件是把 AT Protocol 仓库以 block 序列形式存储的二进制格式。通过com.atproto.sync.getRepo 获取的数据就是这种格式。
解码
校验带签名的 Commit
要确认 CAR 文件确实属于某个用户,需要用 DID Document 中的公钥来校验 Signed Commit 的签名。TID (Timestamp Identifier)
TID 是 AT Protocol 中作为 record key 使用的时序 ID。它由微秒级时间戳与 clock ID 组合而成,用 base32 编码,共 13 个字符。生成与转换
TID 的结构
通过TID::s32encode() 与 TID::s32decode() 可以在整数与字符串之间互相转换。
Varint(变长整数)
Varint 是 CAR / CBOR 二进制解析时使用的内部工具类。通常不需要直接使用。
关于 Core 的 mock
Core 的功能(CBOR/CID/CAR/TID)不会访问外部服务,因此测试时不需要 mock。参考链接
Source: src/Core/