§34: the four-party protocol - killing distributed transactions

This commit is contained in:
2026-08-23 13:09:41 -05:00
parent c8de2eab18
commit c5066ef8ab
+77
View File
@@ -943,3 +943,80 @@ Rules that make it real:
This is Law 48 made executable. The four parties stop being a
documentation convention and become the shape of memory itself.
## 34. THE FOUR-PARTY PROTOCOL — killing distributed transactions
The claim: 2PC and its descendants (sagas, coordinators, distributed
locks) exist to answer one question — "did we BOTH do it?" — with
infrastructure. Four-party records answer it with epistemology.
### Why distributed transactions die
2PC's fatal shape: a COORDINATOR holds LOCKS while asking everyone
to promise. If any node dies mid-promise, locks stay held and the
whole system blocks. Sagas avoid blocking by adding compensation
logic — manual undo for every step. Both pay heavily to fake one
thing: a single moment when reality flipped from not-done to done.
Four-party records refuse the premise. THERE IS NO SHARED MOMENT.
Each party commits locally, always, immediately. "Done" is not an
instant — it is a STATE OF AGREEMENT, reached asynchronously:
STATES OF AN OPERATION:
INTENDED → recorded locally: {what, why, prior_hash}
PERFORMED → executed; outcome appended w/ before/after hashes
PROPOSED → signed offer sent to counterparty(ies)
MUTUAL → all counterparties countersign (proof-of-possession)
WITHDRAWN / AMENDED → supersede record appended, never delete
### The guarantee mapping
ATOMICITY → replaced by VISIBILITY RULES:
only MUTUAL records may present themselves as
fact to third parties. Partial work exists as
PROPOSED — real, recorded, but claiming nothing.
CONSISTENCY → chain verification at sign time; divergence =
fork = loud alarm (never silent corruption).
ISOLATION → competing proposals to the same object create
rival forks; resolved by deterministic rule
(first-MUTUAL wins) or explicit resolution
record. Loser remains in history, superseded.
DURABILITY → local append-only + §26 fallback cascade.
### Failure analysis — where 2PC dies, this shrugs
Coordinator dies → there IS no coordinator. Each party
owns its own ledger; nothing blocks.
Counterparty dies → operation sits PROPOSED: visible,
pending, retryable, amendable. Other
work continues untouched.
Party lies → transcript mismatch = fork alarm;
honest majority out-votes by hash
(the little blockchain, §33).
Network partitions → both sides keep recording truth
locally; on heal, forks surface and
reconcile by signed resolution.
"Undo" needed → AMENDMENT: a forward operation that
references what it corrects. Rollback-
by-deletion is undefined, as designed.
History cannot be unbuilt, only
outgrown.
### Finality = common knowledge
An operation is FINAL exactly when witness-status reaches MUTUAL:
signed by all parties, hashed into both chains, eligible for seals.
This is sunrise-finality (§26/§33): not "a coordinator declared it"
but "everyone knows, and everyone knows everyone knows." No lie can
be coordinated against finality of this kind.
### Cost, stated honestly
Every operation carries its own receipt-chain: more bytes, more
hashing, slower absolute throughput than a single-node transaction.
What you buy: zero coordinators, zero held locks, zero blocked
systems, total auditability, and recovery that is a property of the
data rather than a procedure run by operators.
Formal status: protocol sketch complete; state machine above is the
implementation contract for semantic.ts storage layer (after R1-R3).