Witness Plane
Witnesses, quorum e visibilità dei fork
Witness Plane rende più difficile riscrivere in silenzio la stream history. I witnesses firmano la progressione monotona dei checkpoint ed emettono fork evidence quando osservano histories in conflitto per lo stesso stream.
Witnesses
Un witness è un servizio indipendente con una propria identity key e key epoch. Memorizza l'ultimo checkpoint accettato per tenant stream e firma un nuovo checkpoint solo quando estende la history precedente.
| Ruolo | Scopo |
|---|---|
| Attesto-operated witness | Managed witness per policies di produzione iniziali e disponibilità di base. |
| Customer-operated witness | Vista lato cliente della progressione dei checkpoint, spesso tramite Local Vault. |
| Assurance witness | Witness indipendente gestito da assurance o auditor per policies con trust più elevato. |
| Partner witness | Witness third-party affidabile usato in policy designs specifici del cliente. |
Package privacy-preserving witness node
Il package witness standalone è definito come observation node, non come consensus node e non come blockchain validator. Osserva checkpoint heads, anchor epochs, release manifests e truth-package hashes pubblici o condivisi esplicitamente. Non riceve mai customer payloads, envelopes, receipts, tenant metadata o secrets salvo che un tenant condivida esplicitamente uno specifico artifact.
I nomi package sono attesto-witness, @attesto/witness e go.attesto.eu/witness. Il package non deve mai essere una dipendenza transitive dei core SDKs, non deve mai auto-enroll e non deve mai avviare un background service senza azione esplicita dell’utente. Finché la release evidence non marca verde il package standalone, il comportamento customer-operated witness è fornito da Local Vault witness mode.
Quorum
Quorum descrive quanti witnesses devono firmare perché un checkpoint soddisfi la tenant policy. Una policy managed-only può essere utile per uno stream semplice. Una policy 2-of-3 è più forte perché il verifier può richiedere agreement tra più views indipendenti.
{
"policy_id": "policy-2026-01",
"required": 2,
"witnesses": [
"attesto-managed",
"customer-local-vault",
"assurance-witness"
]
}
Fork evidence e visibilità dei fork
Un fork è un conflitto in cui due checkpoint heads dichiarano histories incompatibili per lo stesso stream. Il witness non deve nasconderlo scegliendo una parte. Registra fork evidence machine-readable così il verifier può respingere la history ambigua.
{
"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"
}
Forma della Witness API pubblica
GET /witness/v1/identity: witness identity, key epoch e algoritmi supportati.POST /witness/v1/checkpoints: invia checkpoint statement per la firma.GET /witness/v1/checkpoints/{checkpoint_id}: recupera witness statement.GET /witness/v1/forks: recupera fork evidence visibile al caller.
