メインコンテンツへスキップ
Core は高度な内部実装です。通常の投稿・フィード取得・通知などには必要ありません。AT Protocol のデータ構造を直接操作する場合に参照してください。

AT Protocol のデータモデル概要

AT Protocol のリポジトリはコンテンツアドレス型のデータ構造を採用しています。データの保存・転送・検証に以下の要素が使われます。
クラス役割
CBORバイナリシリアライゼーション
CIDコンテンツアドレス (ハッシュ識別子)
CARリポジトリアーカイブの読み書き
TID時系列レコードキー
Varint可変長整数エンコーディング (内部)

CBOR

CBOR クラスは AT Protocol が採用する DAG-CBOR 形式のエンコード・デコードを提供します。標準 CBOR の拡張として CID リンク(タグ 42)をサポートしています。

エンコード

デコード

用途

投稿の CID を手動で計算・検証したい場合は CBOR エンコードが必要です(verify ページも参照)。

CID (Content Identifier)

CID はデータのハッシュを元にした自己記述型の識別子です。AT Protocol では SHA-256 ハッシュを multihash でラップし、さらに multicodec と multibase でエンコードします。

CIDv0 と CIDv1

バージョンエンコーディング先頭文字用途
v0base58btcQm...古い仕様 (ブロブ)
v1base32bafy...新しい仕様 (レコード)

主要 API


CAR (Content Addressable aRchive)

CAR ファイルは AT Protocol リポジトリをブロックの列として格納するバイナリフォーマットです。com.atproto.sync.getRepo で取得したデータがこの形式です。

デコード

署名付き Commit の検証

CAR ファイルがそのユーザーのものか確認するには、Signed Commit の署名を DID Document の公開鍵で検証します。
サンプル実装: DownloadRepoCommand

TID (Timestamp Identifier)

TID は AT Protocol のレコードキーに使われる時系列 ID です。マイクロ秒単位のタイムスタンプとクロック ID を組み合わせ、base32 でエンコードした 13 文字の文字列です。

生成・変換

TID の構造

TID::s32encode()TID::s32decode() で整数と文字列の相互変換ができます。

Varint (可変長整数)

Varint は CAR / CBOR のバイナリ解析で使用される内部ユーティリティです。通常は直接使用しません。

Core 機能のモックについて

Core 機能 (CBOR/CID/CAR/TID) は外部アクセスを行わないため、テスト時にモックする必要はありません。

参考リンク

Source: src/Core/
最終更新日 2026年4月25日