Abelian, the litepaper
a · b = b · a A chain on Robinhood Chain where every block is a set, and every trade in it clears at one price.0.The thesis
Every blockchain you have used is a sequence. Transactions are lined up one after the other, and the line itself is the most valuable thing in the system: whoever decides the order decides who trades first, who gets sandwiched, whose liquidation fires before whose deposit lands. A decade of MEV research is a decade of fighting over a single totally-ordered list.
Abelian removes the list.
Thesis. A block is a set, not a sequence.
Inside an Abelian block there is no "before" and no "after". The state transition function is defined over a multiset of transactions and is provably independent of any ordering of them:
If the result cannot depend on the order, nobody can profit from the order. Front-running, sandwiching and priority-gas auctions are not mitigated: they are not expressible.
Abelian is a layer 3: a chain with its own validators, running on top of Robinhood Chain (itself an Arbitrum layer 2 of Ethereum). It settles to Robinhood Chain, uses Robinhood Chain assets (ETH and USDG at launch), and exits back to it as soon as a checkpoint lands. Nothing in it is specific to Robinhood Chain: a chain is one spec file, and a fork can settle to any EVM chain, L1, L2 or L3 (see fork).
1.Why Robinhood Chain needs this
Robinhood Chain brought tokenized equities on-chain, trading around the clock. It inherited the worst property of on-chain markets: execution quality depends on transaction order, and order is for sale. On a first-come-first-served sequencer it is a latency race; elsewhere it is an auction. Either way, the retail order is the one that gets ordered last.
Traditional exchanges solved a version of this decades ago with call auctions: at the opening and closing cross, every order in the batch executes at one uniform price. Nobody inside the batch is ahead of anybody else.
Abelian makes every block a call auction, for every market, every slot.
2.Commutative state
An operation commutes when applying it before or after any other operation gives the same result. Abelian's state is built so that everything a transaction can do is a commutative operation, and the few things that are not are resolved per block, as a set.
| operation | why it commutes |
|---|---|
Credit +x to an account | Integer addition is commutative |
Debit -x from an account | Debits are summed per account and checked once per block (see below) |
| Place a limit order | Orders join the block's batch; matching sees the batch as a set |
| Cancel an order | Applied to the set of resting orders before matching |
| Withdraw to Robinhood Chain | A debit plus a leaf in the block's withdrawal set |
2.1 The overdraft rule
The one place order usually matters is overspending: Alice has 100, sends 80 to Bob and 80 to Carol. A sequential chain lets whichever comes first succeed. Abelian refuses to choose:
Rule 2.1 (overdraft). If the debits an account requests for a token in a block exceed its balance at the start of the block, all of that account's debits of that token in the block are rejected.
The rule depends only on the set of transactions, so it commutes. It is also the honest answer: the account asked for something it could not pay, and the chain does not pick a winner.
2.2 Nonces are not counters
Sequential nonces are an ordering. Abelian transactions carry a random 64-bit nonce and an expiry height instead. Replay protection is a set of seen transaction hashes within the expiry window. An account can submit any number of independent transactions to the same block.
2.3 Batch markets
Each market (for example ETH / USDG) clears once per block:
- Collect resting orders and the block's new orders.
- Find the price
p*that maximizes executed volume. Ties go to the smallest imbalance, then to the price closest to the previous clearing price. - Every buy with limit
≥ p*and every sell with limit≤ p*executes atp*. - The long side of the marginal price level is filled pro rata.
- What does not execute rests in the book until it expires or is cancelled.
There is no time priority, because there is no time inside a block. Two orders at the same price in the same block are treated identically, whoever sent theirs "first".
2.4 Parallelism for free
A set has no dependencies between its elements. Validators can execute the debit sums, the deltas and each market's auction in parallel, on any number of cores, with no conflict detection and no optimistic re-execution. Commutativity is the strongest possible parallelism guarantee.
3.Validators and finality
Abelian runs its own validator set. Validators are staked on Robinhood Chain.
- Proposal: each height has a leader, chosen by rotation. The leader proposes a block: the set of transactions, the Robinhood Chain deposits it includes, the resulting state root.
- Voting: every validator re-executes the block and signs its header if the state root matches.
- Finality: a block is final when validators holding more than two thirds of the stake signed it. There are no forks to wait out: BFT finality is immediate.
- Liveness: if a leader does not produce a block in time, the next validator in the rotation proposes instead. A leader proposes as soon as there is a transaction, a deposit or a forced transaction to include; with nothing waiting, it makes an empty block once a minute (
consensus.idleBlockMs), so the chain keeps time. - Locks: a validator signs at most one header per height and writes that vote to disk before sending it, so even a crashed and restarted validator can never be slashed for equivocation.
- Slashing: a validator that signs two different blocks at the same height can be slashed on Robinhood Chain by anyone holding both signatures. The proof is two signed headers.
Because the leader cannot reorder anything, its only power is inclusion. Censorship is visible: a transaction that sits in every validator's mempool and is never included points at the leaders that skipped it, and users can force inclusion through Robinhood Chain (section 5).
4.Settlement on Robinhood Chain
Abelian posts checkpoints to its rollup contract on Robinhood Chain every few blocks:
Checkpoint {
fromHeight, toHeight,
stateRoot, // Abelian state after toHeight
withdrawalRoot, // Merkle root of the withdrawals in the range
batchHash, // hash of the block data, posted alongside
depositNonce, // deposits credited so far
forcedNonce // forced transactions included so far
}
A checkpoint is accepted when signed by more than two thirds of the stake. The block data is posted with it (gzip of the headers and transactions), so anyone can re-execute Abelian from Robinhood Chain alone: rebuildFromSettlement() does exactly that, and validators use it to catch up before asking any peer. Checkpoints are posted when a withdrawal waits (after withdrawalDelaySeconds), when blocks pile up (maxBlocks), or when blocks have waited maxDelaySeconds; an idle chain posts nothing and costs nothing.
The state root commits to every balance and every resting order (with the funds it locks), the last clearing prices and the progress of the deposit and forced queues, as leaves the contract itself can verify: that is what makes exodus mode possible.
4.1 Instant exits
Optimistic rollups make you wait seven days to leave, because their state is only assumed correct until challenged. Abelian state is final the moment it is signed. A withdrawal is claimable on Robinhood Chain as soon as the checkpoint that contains it lands, which is seconds.
4.2 Deposits
Tokens listed in the chain's spec can be deposited into the portal: native ETH and USDG at launch, each under a cap on what the contract may hold of it. The contract credits what actually arrived (fee-on-transfer tokens included) and can never pay out more of a token than was deposited of it, a hard bound even against a signed checkpoint. Deposits are credits, so they commute with everything else; validators credit them in nonce order once the deposit's block is safe on Robinhood Chain, because a credit cannot be taken back if the settlement chain reorganizes.
5.Forced inclusion
A signed Abelian transaction can be posted to the portal contract on Robinhood Chain instead of to a validator. Forced transactions join the next block's set by reference, like deposits: the header commits to how far the forced queue has been included, and the checkpoint carries that number to the contract.
5.1 Exodus mode
If a deposit waits for a checkpoint longer than inclusionPeriod (a day at launch), or a forced transaction is not acknowledged by a checkpoint in that time, anyone can freeze the contract. Frozen is final: no more deposits, checkpoints or forced transactions. Then:
- every balance and every resting order of the last checkpointed state is withdrawable with a Merkle proof against its state root (
escape), computed from Robinhood Chain data alone; - every deposit no checkpoint credited is refunded to its sender (
refundDeposit); - withdrawals already checkpointed stay claimable.
Validators that disappear, or that censor, cannot keep anyone's funds. The end-to-end test runs this path and checks that the contract owes exactly zero afterwards.
6.Building on Abelian
Abelian programs are Δ-modules: modules whose effects are declared as deltas over commutative monoids (sums, sets, maxima) plus an optional per-block resolution step over the set of their inputs, like the overdraft rule or a batch auction.
The prototype ships two native modules, bank and exchange. The roadmap is a module language, Δ, with one compiler rule:
Compiler rule. If it does not commute, it does not compile.
Δ will type-check that every state effect is a monoid operation and that every per-block step is a function of a set. The commutativity proof is the type check.
Until Δ exists, developers build on Abelian through its API and SDK (build): wallets, trading front-ends, market makers, bots, explorers, indexers. Every block is a published set with its clearing prices, which makes Abelian the easiest chain in existence to index: there is nothing to replay in order.
7.Security model
Be precise about what protects what.
- Safety of the state rests on the validators: more than two thirds of the stake signing a false state root could steal funds, because checkpoints are not yet proven, only signed. Re-execution fraud proofs are on the roadmap. At launch the four genesis validators are run by one operator, so Abelian is exactly as trustworthy as that operator, and its caps are set accordingly.
- Liveness and censorship do not rest on the validators: forced inclusion and exodus mode return every fund of the last checkpointed state without any validator's help.
- The owner of the contract lists tokens, sets caps, pauses new deposits and admits genesis validators. It cannot move, freeze or redirect user funds; claims and escapes are never paused. Ownership transfers in two steps, to a multisig as soon as there is one.
- Assets keep their own rules: USDG is issued by Paxos, which can freeze addresses.
- Spam is bounded, not priced: transactions carry no fee in v1, so validators rate-limit submissions per client and per account, and expiries are capped so the replay-protection set stays small. A fee market is a roadmap item.
- The code is unaudited. The launch is guarded by caps (1 ETH and 2,500 USDG) until it is.
8.What exists today
This repository has everything to run Abelian on Robinhood Chain mainnet:
- the node (TypeScript): orderless state transition, batch auctions, BFT voting with persisted locks, leader rotation, deposits, forced inclusion, checkpoints, rebuild from settlement data, HTTP + WebSocket API and a live explorer;
AbelianRollup, the settlement contract: validator stake with unbonding and slashing, checkpoint verification, listed tokens with caps, native ETH, forced inclusion, exodus mode;- the chain spec
chains/abelian.json, an SDK and a CLI that deploys, launches and operates it; - tests: permutation invariance and conservation of the state transition, the contract's suite, hash parity between the node and the contract, an end-to-end run from deposit to exodus, and a launch rehearsal against a local fork of Robinhood Chain mainnet.
9.Roadmap
- Guarded mainnet (this repository): four genesis validators, capped deposits, ETH/USDG.
- Independent validators, then a permissionless set with stake-weighted rotation.
- Re-execution fraud proofs: anyone can prove on Robinhood Chain that a checkpoint's state root is wrong, by re-executing the block. The orderless state transition is simple enough to verify on-chain one market at a time.
- Node in Rust, slots of 10 ms, incremental state tree.
- Δ, the commutative module language.
- Encrypted mempool: transactions encrypted to the validator set and decrypted together once the block is sealed. Combined with orderless execution, a validator learns nothing it can act on.
Order is an attack surface.