Witness Plane
Witnesses, Quorum und Fork Visibility
Die Witness Plane erschwert es, Stream History unbemerkt umzuschreiben. Witnesses signieren monotone Checkpoint Progression und erzeugen Fork Evidence, wenn sie widersprüchliche Histories für denselben Stream beobachten.
Witnesses
Ein Witness ist ein unabhängiger Service mit eigenem Identity Key und Key Epoch. Er speichert den zuletzt akzeptierten Checkpoint pro Tenant Stream und signiert einen neuen Checkpoint nur, wenn dieser die bisherige History erweitert.
| Rolle | Zweck |
|---|---|
| Attesto-operated witness | Managed Witness für frühe Produktionspolicies und grundlegende Verfügbarkeit. |
| Customer-operated witness | Kundenseitige Sicht auf Checkpoint Progression, häufig über Local Vault. |
| Assurance witness | Unabhängiger Assurance- oder auditor-operated Witness für Policies mit höherem Trust. |
| Partner witness | Vertrauenswürdiger Third-party Witness für kundenspezifische Policy Designs. |
Privacy-preserving witness node package
Das standalone witness package ist als observation node definiert, nicht als consensus node und nicht als blockchain validator. Es beobachtet öffentliche oder ausdrücklich geteilte checkpoint heads, anchor epochs, release manifests und truth-package hashes. Es erhält niemals customer payloads, envelopes, receipts, tenant metadata oder secrets, außer ein Tenant teilt ausdrücklich ein bestimmtes Artifact.
Paketnamen sind attesto-witness, @attesto/witness und go.attesto.eu/witness. Das Package darf niemals eine transitive Dependency der Core SDKs sein, darf niemals auto-enroll ausführen und darf niemals einen background service ohne explizite Nutzeraktion starten. Bis Release Evidence das standalone Package grün markiert, läuft customer-operated witness Verhalten über Local Vault witness mode.
Quorum
Quorum beschreibt, wie viele Witnesses signieren müssen, damit ein Checkpoint die Tenant Policy erfüllt. Eine managed-only Policy kann für einen einfachen Stream nützlich sein. Eine 2-of-3 Policy ist stärker, weil der Verifier Agreement über mehrere unabhängige Views verlangen kann.
{
"policy_id": "policy-2026-01",
"required": 2,
"witnesses": [
"attesto-managed",
"customer-local-vault",
"assurance-witness"
]
}
Fork Evidence und Fork Visibility
Ein Fork ist ein Konflikt, bei dem zwei Checkpoint Heads eine inkompatible History für denselben Stream beanspruchen. Der Witness darf dies nicht verbergen, indem er eine Seite auswählt. Er zeichnet machine-readable Fork Evidence auf, damit der Verifier ambigue History ablehnen kann.
{
"kind": "fork_evidence",
"stream_id": "str_...",
"conflicting_checkpoints": [
{"checkpoint_id": "chk_a", "checkpoint_head_hash": "hex-a"},
{"checkpoint_id": "chk_b", "checkpoint_head_hash": "hex-b"}
],
"detected_by": "customer-local-vault",
"result": "verifier_rejects_ambiguous_history"
}
Öffentliche Witness-API-Form
GET /witness/v1/identity: Witness Identity, Key Epoch und unterstützte Algorithmen.POST /witness/v1/checkpoints: Checkpoint Statement zum Signieren einreichen.GET /witness/v1/checkpoints/{checkpoint_id}: Witness Statement abrufen.GET /witness/v1/forks: Fork Evidence abrufen, die für den Caller sichtbar ist.
