AT Protocol 資料模型概觀
AT Protocol 的儲存庫採用內容定址(content-addressed)的資料結構。以下要素會用於資料的儲存、傳輸與驗證。CBOR
CBOR 類別提供 AT Protocol 採用的 DAG-CBOR 格式編解碼。作為標準 CBOR 的擴充,支援 CID 連結(tag 42)。
編碼
解碼
使用場景
若要手動計算並驗證貼文的 CID,就會需要 CBOR 編碼(另請參考 verify 頁面)。CID (Content Identifier)
CID 是根據資料雜湊產生的自我描述型識別碼。AT Protocol 會以 multihash 包裹 SHA-256 雜湊,再以 multicodec 與 multibase 進行編碼。CIDv0 與 CIDv1
主要 API
CAR (Content Addressable aRchive)
CAR 檔是將 AT Protocol 儲存庫以區塊序列儲存的二進位格式。透過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/