Überblick über das Datenmodell des AT Protocols
Repositorys des AT Protocols nutzen eine content-adressierte Datenstruktur. Für Speicherung, Übertragung und Verifizierung werden folgende Bausteine verwendet.CBOR
Die KlasseCBOR bietet Encoding/Decoding im DAG-CBOR-Format, das das AT Protocol verwendet. Als Erweiterung des Standard-CBOR unterstützt es CID-Links (Tag 42).
Encoding
Decoding
Anwendungsfall
Wenn Sie die CID eines Posts manuell berechnen oder verifizieren möchten, wird CBOR-Encoding benötigt (siehe auch verify-Seite).CID (Content Identifier)
Eine CID ist ein selbstbeschreibender Identifier auf Basis des Daten-Hashs. Das AT Protocol wickelt einen SHA-256-Hash in Multihash und codiert ihn zusätzlich mit Multicodec und Multibase.CIDv0 und CIDv1
Wichtige API
CAR (Content Addressable aRchive)
Eine CAR-Datei ist ein Binärformat, das AT-Protocol-Repositorys als Folge von Blöcken speichert. Die übercom.atproto.sync.getRepo abgerufenen Daten liegen in diesem Format vor.
Decoding
Signed Commit verifizieren
Um zu prüfen, ob eine CAR-Datei tatsächlich zu einem bestimmten Nutzer gehört, wird die Signatur des Signed Commit mit dem öffentlichen Schlüssel aus dem DID-Document verifiziert.TID (Timestamp Identifier)
TID ist eine zeitbasierte ID, die als Record-Key im AT Protocol verwendet wird. Sie kombiniert einen Mikrosekunden-Zeitstempel und eine Clock-ID zu einem 13-stelligen base32-encodierten String.Erzeugen und Umwandeln
Aufbau einer TID
MitTID::s32encode() und TID::s32decode() können Sie zwischen Integer und String hin- und herwandeln.
Varint (Variable-Length-Integer)
Varint ist ein internes Utility für die Binäranalyse von CAR/CBOR. Es wird normalerweise nicht direkt verwendet.
Zum Mocken der Core-Funktionen
Da die Core-Funktionen (CBOR/CID/CAR/TID) keine externen Zugriffe durchführen, müssen sie in Tests nicht gemockt werden.Weiterführende Links
Source: src/Core/