Most chains are account books — a flat map of address → balance. LIQUA models its state as an organism.
Cells (individual app/state surfaces) aggregate into organs; organs aggregate into the body; the whole is hashed
by a domain-keyed BLAKE3 Merkle tree whose root — the SOMA-256 root — is the organism's
fingerprint. EVM-shaped on the outside (addresses are keccak(pubkey)[-20:], Solidity runs, JSON-RPC
answers), molecular on the inside. The chain also carries a deterministic, replayable on-chain mind-state that can
be snapshotted and forked from any height — a design language, not a sentience claim.
The thesis: a chain whose every quantity is a continuous function of block height — emission, decay, validation reward, governance quorum — with no epochs and no halving cliffs. The chain breathes per block.
SOMA-256 is LIQUA's content hash. It is not a new cryptographic primitive — rolling your own hash is how chains die — but a house construction on audited BLAKE3 whose tree mirrors the cell → organ stack. The cryptography is audited; the integration is the contribution.
The genesis SOMA root is reproducible by anyone from public inputs — deterministic, no
Date.now(), no RNG. Today's devnet genesis root is 0x37d309f2…091ec80a.
Each is implemented as a real, compiled contract running on the EVM, and verified by a deterministic demo — not a whitepaper promise.
Holders vote-escrow LIQUA on a continuous sliding scale up to 4 years. A longer remaining lock
earns a higher reward boost (capped at 1.5× at the 4-year cap) and more governance weight; both
decay linearly toward expiry. Principal is withdraw-locked until expiry — no early exit, enforced
in VeLock.sol.
Every lock is an append-only, chain-verifiable row — the public proof-of-lock surface. The list is the chain state, not an assertion.
Block reward = a smooth decay envelope × the validation work actually performed × a bounded fast-twitch term,
evaluated every block. Twitch reacts fast but is clamped inside the decayed envelope, so emission
never breaks its schedule. Parameters: e₀ = 50, halflife 2,100,000
blocks, twitch 0.85–1.15×.
A block's reward is not credited as a balance — it is escrowed to a dual-seed instance the miner
controls: the public escrow key is blake3(soma ∥ minerPub ∥ height), but the claiming
private key is blake3(minerSecret ∥ rewardSeed), derivable only by the miner. The reward is
claimed via an L2 getting-tool after a confirmation gate (R6 · instance = auth). Verified by npm run claim:test.
Rollback and parameter change each require 98% of attesting ve-weight in a rolling window — near-unanimity, with the liveness tradeoff named openly. See §7.
| Parameter | Value |
|---|---|
| Symbol / decimals | LIQUA · 18 |
| Chain ID | 8888 |
| Supply split | 2% studio · 98% mined |
| Studio allocation | the only genesis allocation — time-locked → Aug 1, 2026 |
| Base emission e₀ | ~50 / block |
| Emission halflife | 2,100,000 blocks |
| Max ve-lock | 4 years → 1.5× boost |
| Governance quorum | 98% of attesting ve-weight |
LIQUA is 98% GPU-mined from block 0. The only allocation taken from genesis is a single 2% studio / launch allocation — funding development, a security audit, and locked launch liquidity — time-locked and released on the ship date, August 1, 2026, and published on the locked-liquidity surface. Not a wei more is pre-allocated.
alloc: [] — pure
mined, zero allocation. The single 2% allocation is committed at mainnet genesis. Emission is
continuous and decaying, so "supply" is the asymptotic total of all mined emission plus the studio allocation; the
2% / 98% split is the policy, not a fixed circulating number on day one.The presale sells a portion of the 2% studio allocation to fund the studio. Contributors don't wait until mainnet to hold something — they receive a token now and swap it 1:1 at launch.
LiquaPresaleToken.sol (pLIQUA) is a standard, transferable ERC-20 minted to
contributors at the published rate. It is not the network asset — it is a redeemable claim on it, so it can
even trade before launch.
LiquaSwap.sol redeems pLIQUA for real LIQUA at 1:1, but only on/after the ship
date. Each redeem burns the pLIQUA and releases LIQUA from a reserve funded by the studio
allocation, so total economic supply is conserved across the swap. Before Aug 1, 2026 every
swap reverts SWAP_NOT_OPEN.
// LiquaSwap.sol — gated, 1:1, reserve-backed, burn-on-swap
function swap(uint256 amount) external {
require(block.timestamp >= swapOpensAt, "SWAP_NOT_OPEN"); // Aug 1 2026
require(liqua.balanceOf(address(this)) >= amount, "reserve"); // 1:1 backed
pliqua.burnFrom(msg.sender, amount); // burn receipt
liqua.transfer(msg.sender, amount); // release LIQUA
}
npm run swap:test (evm/swap-demo.mjs) passes:
a pre-ship swap reverts; after the ship date the buyer redeems pLIQUA → LIQUA 1:1; the pLIQUA is burned, the reserve
drops by exactly the swapped amount, and supply is conserved.Together with the existing wLIQUA.sol cross-chain wrapper, LIQUA can move between the presale chain,
the L1, and an L2 — all 1:1, all reserve-backed.
LIQUA isn't a deck — the devnet is running. Every layer below is built and verified:
lnode://), an encrypted secp256k1-ECDH / ChaCha20-Poly1305 transport, genesis-gated tx/block gossip, and re-execution block sync (late joiners converge). A peer dashboard + CLI drive it.LiquaToken · VeLock · LiquidityLocker · Governor98 · RewardEscrow · wLIQUA · LiquaPresaleToken · LiquaSwap) running on a real EVM.eth_chainId / getBalance / …) and a real cross-chain bridge (wLIQUA on an L2, authority-attested, conservation-checked).Full operator manuals are in the Codex docs; the protocol is specified §0–§8 in the spec.
Two powers — rollback (revert to a prior height) and change (update a parameter) — each require 98% agreement. The denominator is attesting ve-weight summed over a continuous rolling window, not all-time supply, so dormant stake cannot freeze governance and a malicious change needs almost everyone.
The committed parameters a vote can change are exactly those baked into genesis — ve-lock bounds, emission shape, the confirmation gate, the quorum window. Changing one is, in effect, re-constituting the chain — which is precisely why it takes 98%.
seal() the default live-emission path (vs. the current direct-credit) is a remaining toggle.