Vortex DSE public verification bundle
TLA+ specification and executable reference implementation for the strict C-slot admission rule used as one public Vortex DSE verification artifact.
Author: Vasilis Nasopoulos
Status: machine-checked with TLC explicit-state model checking and executable reference scenarios (JavaScript port)
Scope: C-slot admission only. Network transport, production ticker internals, finality, benchmark internals, and full end-to-end protocol composition are outside this repository.
This repo is for readers who want a clear, bounded, executable version of the admission rule. It is intentionally separate from the late-tolerant proof repo so visitors can compare the two variants:
- strict admission here:
tx.cslot = current_slot - late-tolerant admission in the proofs repo:
tx.cslot <= current_slot
If the transaction is not in the current slot, it is rejected.
| Repository | Role | Verification status |
|---|---|---|
| vortex-dse-cslot-proofs | Late-tolerant C-slot admission; deductive safety proofs | TLAPS: []TypeInvariant, []NoFutureAdmission; all 194 obligations proved |
| vortex-dse-cslot-spec ← you are here | Strict C-slot admission, clock skew, Byzantine timestamp/origin spoofing, executable reference | TLC bounded checks; JavaScript reference scenarios |
| vortex-merkle-agreement | Per-slot input-set agreement: Freeze → Reconcile → Commit | TLC + Apalache bounded checks under declared assumptions |
This repository specifies the strict C-slot rule:
admit(tx, node) ⇔ tx.cslot = node.current_slot
Meaning:
- on-time transaction → admitted;
- one bucket late → permanently rejected;
- future-dated transaction → permanently rejected.
The C-slot rule is a deterministic local admission predicate. It is not, by itself, consensus.
C_slot(tx) = floor((T_hw - T_0) / Delta_t)
There is no leader, no quorum, and no voting in this admission layer.
- Read the TLA+ spec.
- Run TLC on the provided configurations.
- Run the JavaScript reference scenarios.
- Compare the strict model against the late-tolerant proof repo.
Requires tla2tools.jar.
java -jar tla2tools.jar -workers auto \
-config specs/Vortex_DSE_CSlot_tiny.cfg \
specs/Vortex_DSE_CSlot.tlaRequires Node.js 18+ and has no dependencies.
node ref_impl/cslot_ref.mjs- Start with the strict vs late-tolerant distinction above.
- Inspect
specs/Vortex_DSE_CSlot.tla. - Inspect
specs/Vortex_DSE_CSlot_Skew.tla. - Run the TLC configurations and compare against
logs/. - Run the JavaScript reference scenarios.
- Continue to
vortex-dse-cslot-proofsfor deductive TLAPS safety proofs. - Continue to
vortex-merkle-agreementfor the agreement layer.