Formal methods · TLA⁺ · TLAPS · distributed consensus

Vasilis Nasopoulos

I work on Vortex DSE, a deterministic consensus protocol that reaches finality without leader election, voting, or gossip. The specifications and safety proofs below are public and machine-checked; the engine itself is not.

TLAPS proofs TLC models Apalache models
325TLAPS obligations discharged
2×RTTlatency bound, no coordination
13 / 13nodes / countries, one state hash

See it before reading about it

Two things you can check for yourself, before deciding whether any of the rest is worth your time.

Where to start

Three entry points, in increasing depth.

What is actually proved

Bounded model checking and deductive proof are different guarantees, so the distinction is kept explicit rather than collapsed into one number.

One claim that does not rest on me

Everything above is my own work, checked with my own tools. This is the exception. On 25 August I published a small property under CC BY 4.0. Within three days, three independent engineers had taken it further than I had.

The property states its own limit: at-most-once needs the receiver to honour the identity, because the effect and its durable record live in two different systems. That declared limit is why the third harness measures the receiver instead of assuming it. The three benchmarks above are their authors' own work, not mine; all of it is public in langgraph#8039.

Testnet

loading…

Three nodes in Frankfurt, Tokyo and Los Angeles, running continuously. The figures below are what those nodes measure and report. Two of them are worth explaining, because the numbers mean nothing without the problem they answer.

Anyone can claim to run nodes on three continents. Nobody can prove it.

These nodes time the distance between themselves. Light takes what it takes: 244 ms between Frankfurt and Tokyo cannot be faked downward. Three copies on one machine would answer each other in microseconds, and the system flags any pair that close as sharing a host. None are flagged here.

This build is a production candidate, not the engine the published results were measured on. Those come from bounded runs of the core: the most recent, on these same three machines, converged on chain hash c756379c16c8d977 — byte-identical to the single-machine reference, with no shared clock and 241 ms between the furthest pair.

Beta

by invitation

The network above has been running unattended. A small number of outside nodes will be invited to join it. Participants are chosen rather than admitted on request, and the list is kept short on purpose.

What you would be doing: running one node, on your own machine, against those three. It registers with the bootstrap, discovers the others, and joins — one token, no files edited by hand.

What this is not.

There is no SLA and no uptime guarantee, and the engine on those nodes is a production candidate rather than a released product. The bootstrap does not speak TLS yet either, which is one of the things we sort out before a node of yours joins.

Nothing is self-serve and no credential travels before we have spoken. If you would like to be considered, say what you would run and where. Where it is a fit, we arrange the join together — vasilis_nasopoulos@hotmail.com.