Stand · Bauplan
Ein Protokolleintrag verbindet eine beschriebene Handlung mit ihrem Ergebnis und dem Prüfwert des vorigen Eintrags. Diese geplante Referenz trennt lesbare Ereignisdaten, eindeutige Serialisierung und unabhängig zu sichernde Vergleichswerte.
Ein geplanter Vertrag, kein erreichbarer Endpunkt
Die Felder beschreiben eine prüfbare Entwurfsrichtung. Es gibt hier keinen zugesagten HTTP-Endpunkt, keine SDK-Methode und keine Kompatibilitätsgarantie. Vor einer Implementierung müssen Authentifizierung, Grenzwerte, Serialisierung und Fehlertransport festgelegt und getestet werden.
Gleicher Inhalt braucht gleiche Bytes
JSON erlaubt unterschiedliche Schlüsselreihenfolgen und Darstellungen. Ein reproduzierbarer Prüfwert setzt eine exakt beschriebene Bytefolge voraus. Änderungen an Normalisierung, Zeichensatz oder Zahlenformat sind Vertragsänderungen. Die Spezifikation muss passende Testvektoren liefern.
Die Kette in Reihenfolge prüfen
Die Prüfung beginnt bei einem bekannten Startpunkt. Für jeden Eintrag werden Vorgänger und Prüfwert nachgerechnet. Beim ersten Unterschied stoppt die bestätigte Strecke. Ein nachfolgender Eintrag kann nicht isoliert die Integrität der fehlenden Strecke beweisen.
Die externe Abschrift ist eine eigene Schicht
Wer alle Einträge und alle Prüfwerte ersetzen kann, kann eine in sich stimmige neue Kette schreiben. Ein unabhängig aufbewahrter Vergleichswert begrenzt diesen Angriff. Er ist im vorhandenen Prototyp ausdrücklich noch nicht umgesetzt. Eine Hashkette beweist außerdem nicht die Wahrheit einer ursprünglichen Eingabe.
Schema
{
"id": "<eintrag-kennung>",
"sequence": <reihenfolge>,
"timestamp": "<zeitpunkt>",
"actorRef": "<identitaet>",
"actionRef": "<handlung-kennung>",
"outcome": "succeeded",
"payload": {
"targetId": "<objekt-kennung>",
"newVersion": <version>
},
"previousHash": "<pruefwert-des-vorgaengers>",
"hash": "<pruefwert-aus-vorgaenger-und-nutzlast>",
"schemaVersion": "<schemafassung>"
}Felder
| Feld | Typ | Pflicht | Bedeutung |
|---|---|---|---|
id | string | ja | Eindeutige Eintragskennung. |
sequence | integer | ja | Reihenfolge innerhalb genau eines Protokollstroms. |
timestamp | string (date-time) | ja | Erfasste Zeit; ihre Vertrauenswürdigkeit braucht eine eigene Zeitquelle. |
actorRef | string | ja | Kontext der handelnden Identität. |
actionRef | string | ja | Referenz auf den zugehörigen Handlungsversuch. |
outcome | enum | ja | succeeded, failed oder uncertain. |
payload | object | ja | Minimal nötiger Prüfkontext ohne Geheimnisse. |
previousHash | string | ja | Prüfwert des direkten Vorgängers oder definierter Startwert. |
hash | string | ja | Prüfwert aus Vorgänger und kanonischer Nutzlast. |
schemaVersion | string | ja | Fassung des Eintragsschemas und der Serialisierungsregel. |
Fehlerfälle
| Kennung | Bedeutung |
|---|---|
CHAIN_PREDECESSOR_MISMATCH | Der Vorgänger stimmt nicht mit dem vorigen geprüften Eintrag überein. |
ENTRY_HASH_MISMATCH | Der nachgerechnete Prüfwert stimmt nicht. |
SEQUENCE_GAP | In der angegebenen Reihenfolge fehlt mindestens ein Eintrag. |
ANCHOR_UNAVAILABLE | Ein unabhängiger Vergleichswert steht nicht zur Verfügung. |
Grenze
- Grenze
- Dieser Schnittstellenvertrag ist geplant. Ein lokaler Kontrollprototyp belegt weder eine veröffentlichte API noch organisationsweiten Betrieb.