跳转到主要内容
Core 是较为底层的内部实现。一般的发帖、feed 获取、通知等场景并不需要它。只有当你需要直接操作 AT Protocol 数据结构时才需要参考本页。

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 的签名。
参考实现:DownloadRepoCommand

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/
最后修改于 2026年7月18日