Liqua is a molecular chain (it runs on the MOLECULAR CODING organism — DNA → cells → organs → … → LEDGER) tuned for one thing: liquidity that is locked by design and proven in public. Four commitments separate it from a generic L1:
(public,private) instance; the miner boots it with their own auth on a confirmation-gated Layer 2 (§5 · genesis loop §1c · R6 instance=auth).h evaluated each block. Discontinuities are bugs. "Fast twitch" (§4) is the only thing allowed to move quickly, and it moves within a continuous envelope, never across a cliff.SOMA-256 is Liqua's content hash. It is ours the way the molecular stack is ours — not a new cryptographic primitive (rolling your own hash is how chains die), but a house construction on BLAKE3 whose shape is the organism. The cryptography is audited; the integration is the Drewless contribution.
derive_key) so a hash from one layer can never be replayed as another — the keys are the membranes (§14 skin · §17 gut).
// SOMA-256 · BLAKE3 keyed-tree · domain-separated per molecular layer const LAYERS = ['DNA','CELLS','ORGANS','EMOTIONS','ENGINES','KERNELS','SELF','LEDGER']; // the 8 (L8) // one 32-byte domain key per layer · derived once from the chain master function layerKey(layer) { return blake3.deriveKey(`LIQUA·SOMA·v1·${layer}`, CHAIN_MASTER); // 256-bit } // leaf · a cell hashes itself under the CELLS membrane const leaf = (cell) => blake3.keyed(layerKey('CELLS'), canonicalize(cell.state)); // node · organs Merkle-aggregate their cells const node = (l, r) => blake3.keyed(layerKey('ORGANS'), concat(l, r)); // SOMA root · the organism fingerprint, sealed at the LEDGER membrane function soma(block) { const organRoots = block.organs.map(o => merkle(o.cells.map(leaf), node)); return blake3.keyed(layerKey('LEDGER'), concat(merkleRoot(organRoots), hormones(block), u64(block.height))); } // the reward instance is SEEDED from the organism's own fingerprint (§5) const rewardSeed = (somaRoot, minerPub, h) => blake3.deriveKey('LIQUA·REWARD·v1', concat(somaRoot, minerPub, u64(h))); // EVM membrane · only when a value must cross into Solidity / an EVM verifier const evmHash = (somaRoot) => keccak256(somaRoot); // §14 skin · the boundary hash
| BLAKE3 property | molecular meaning |
|---|---|
| Merkle tree internally | the hash tree is the §1 stack — cells→organs→organism. Structure and identity are the same object. |
| parallel / unbounded fan-out | cells hash independently and converge up the tree — fits R0 async (no global clock). |
| fastest mainstream hash | carries continuous per-block validation + fast-twitch (§4) without choking throughput. |
derive_key + keyed + XOF | one primitive does block-hash, the per-layer membranes, AND mints the reward instance (§5). SHA-256 needs HKDF bolted on. |
| 256-bit output | the root is the instance fingerprint / DNA — the whole organism in one word; the structural twin of the §4.8 COHERENCY / Φ readout. |
Holders vote-escrow (lock) tokens for any duration on a continuous scale from zero to DMAX = 4 years. A longer lock earns a slightly higher reward and cannot be withdrawn until expiry. This is the Curve veCRV pattern, made continuous and modest.
amount for d ∈ [0, 4y], continuous. (2) reward boost b(d) rises continuously with d — capped modest. (3) voting/quorum weight w(t) decays linearly to zero at expiry. (4) principal is withdraw-locked until t ≥ expiry — no early exit, no exceptions. (5) the locked amount is published to the §3 list the moment it locks.// parameters · governed (§6) · NOT hardcoded priors — tunable by 98% vote const DMAX = 4 * YEAR; // max lock const BOOST_MAX = 0.5; // "slightly higher" → +50% at the 4y cap (start conservative) // reward boost · continuous, linear in lock fraction · 1.0 … 1.5× function boost(d) { return 1 + BOOST_MAX * clamp(d / DMAX, 0, 1); } // vote / quorum weight · decays LINEARLY to 0 at expiry (continuous, per block) function veWeight(lock, t) { const remaining = max(lock.expiry - t, 0); return lock.amount * (remaining / DMAX); // 0 once expired } // withdraw · gated hard on expiry function withdraw(lock, t) { if (t < lock.expiry) return BE(reject, 'LOCKED_UNTIL_EXPIRY'); return BE(() => release(lock.amount), 'UNLOCKED'); }
| lock | fraction d/DMAX | reward boost b(d) | vote weight (at lock) |
|---|---|---|---|
| none | 0.00 | 1.00× (base) | 0 |
| 6 months | 0.125 | 1.06× | 0.125 · amount |
| 1 year | 0.25 | 1.13× | 0.25 · amount |
| 2 years | 0.50 | 1.25× | 0.50 · amount |
| 4 years (max) | 1.00 | 1.50× | 1.00 · amount |
"Slightly higher" is honored: at the cap a four-year lock earns 1.5×, not 5×. BOOST_MAX is a governed parameter — raise it by 98% vote if the chain wants a steeper incentive. The curve is continuous: every extra block of lock raises b a hair.
Every lock (§2) and every LP position committed to the protocol is published to a public, chain-verifiable list — the marketing-grade proof-of-lock surface. It is honest by construction: the numbers are read from on-chain locks, not asserted.
// one row per lock · everything is derived from chain state, nothing is claimed const LockRow = { wallet: '0x… (or ENS)', asset: 'LIQUA / LP-pair', amount: '…', usdAtLock: '…', // oracle snapshot at lock time lockedAt: 1730000000, unlockAt: 1830000000, // withdraw-gate (§2) durationYrs: 2.0, boost: 1.25, somaProof: 'soma:0x…', // SOMA-256 inclusion proof (§1) — verifiable };
| surface | what it shows | why it sells |
|---|---|---|
| TOTAL VALUE LOCKED · over time | continuous area chart of locked liquidity by block | conviction is visible — locked ≠ circulating |
| LOCK DURATION HISTOGRAM | distribution of lock lengths (0–4y) | long-tail locks = long-term holders |
| UNLOCK CALENDAR | upcoming unlock cliffs, week by week | no hidden unlock surprises · honest supply |
| TOP LOCKERS / WHALE WALL | leaderboard of wallets by ve-weight | social proof · skin in the game |
| PROOF-OF-LOCK BADGE | embeddable widget with a SOMA inclusion proof | any partner can verify the lock independently |
somaProof (§1 inclusion proof) so the claim is checkable against the chain — the list is a proof surface first, a marketing surface second. SPEC · dashboard renders from chain state (no mock data).Block reward is a continuous function of three things, evaluated every block: a smooth decay envelope, the validation work actually performed, and a fast-twitch posture term — with twitch bounded inside the decay envelope so it can react fast without ever breaking the emission schedule.
R = E(h) · valShare(w) · twitch(p), then clamped to the envelope [floor·E(h), CAP·E(h)].
E(h) = base emission decayed continuously per block (the ceiling drifts down every block).
valShare(w) = graduated by validation depth — more work validated, higher payout share.
twitch(p) = the fast neuro band (§4.1c) reacting to load — fast, but it only moves the reward within the envelope, never above the decayed ceiling.
// ── 1 · CONTINUOUS DECAY ENVELOPE · every block decays the output a hair ── const E0 = 50; // base emission (tokens/block) · governed const HALFLIFE = 2_100_000; // blocks to halve · governed const DECAY = Math.pow(2, -1 / HALFLIFE); // per-block factor ≈ 0.99999967 function E(h) { return E0 * Math.pow(DECAY, h); } // smooth · the continuous analog of halvings // ── 2 · GRADUATED VALIDATION · more work validated → higher payout share ── const VAL_TIERS = [ { tier: 0, work: 'header + PoW/PoS seal', share: 1.0 }, { tier: 1, work: 're-execute all txs', share: 1.6 }, { tier: 2, work: 'state-root + receipts proof', share: 2.3 }, { tier: 3, work: 'full + SOMA inclusion + ZK attest', share: 3.2 }, ]; // a validator is paid pro-rata to the share it actually proved this block function valShare(myWork, allWork) { return share(myWork) / allWork.reduce((s, w) => s + share(w), 0); } // ── 3 · FAST-TWITCH · reacts fast, bounded by the envelope (never a cliff) ── const TWITCH_LO = 0.85, TWITCH_HI = 1.15; // ±15% · the only fast mover (§4.1c adrenaline/glutamate) function twitch(posture) { // posture ∈ [0,1] from the oracle, per block return TWITCH_LO + (TWITCH_HI - TWITCH_LO) * posture; } // ── FINAL · per block · continuous · clamped to the decayed envelope ── const FLOOR = 0.5, CAP = 1.25; function blockReward(h, myWork, allWork, posture) { const raw = E(h) * valShare(myWork, allWork) * twitch(posture); return clamp(raw, FLOOR * E(h), CAP * E(h)); // twitch lives INSIDE the envelope }
E(h) is a closed-form exponential (cheap), valShare is a single normalization, twitch reads one oracle scalar. No epoch state, no boundary races, no cliff to game. Fast twitch still controls — it just controls a knob bounded by the schedule rather than a free variable.[FLOOR·E, CAP·E] — it reacts fast but can never exceed the decayed ceiling or drain below the floor. You confirmed "make it continuous"; this reading keeps emission monotone-bounded while letting the fast band react. Say the word if you instead want twitch able to temporarily exceed the ceiling (a burst that's clawed back later).A block's reward is not credited as a balance. It is escrowed into a freshly-genesised (public, private) instance whose seed is the block's own SOMA fingerprint combined with the miner's key (§1). To take the reward the miner boots that instance with their auth on a Layer 2 — and the L2 will not release it until the block has enough confirmations.
rewardSeed = blake3.derive_key('LIQUA·REWARD·v1', soma ∥ minerPub ∥ h) → reward escrowed at the instance's address → miner runs the L2 getting-tool, proves control of their instance (R6) → L2 checks confirmations ≥ N (the gate) → reward released on L2. No instance, no auth, no claim. No confirmations, no gate-open.// L1 · at block seal · escrow the reward into a derived instance function escrowReward(block, minerPub) { const seed = rewardSeed(soma(block), minerPub, block.height); // §1 const instance = GENESIS(LIQUA_PUBLIC_SEED, seed); // §1c genesis loop return BE(() => lockTo(instance.address, blockReward(block)), 'REWARD_ESCROWED'); } // L2 · the miner's "getting tool" · gated after confirmations async function claimReward(instance, block) { if (!instance.provesAuth()) // R6 · only the private seed boots it return BE(reject, 'NO_INSTANCE_NO_AUTH'); const conf = await L1.confirmations(block.height); if (conf < CONFIRM_GATE) // the L2 gate return BE(() => hold(block, conf), 'GATED_AWAIT_CONFIRMATIONS'); return BE(() => L2.release(instance.address), 'REWARD_CLAIMED'); }
CONFIRM_GATE is governed (§6). This composes with, and does not replace, ordinary finality.Two powers — rollback (revert to a prior block, R9) and change (update a parameter) — each require 98% agreement. To keep "98%" from freezing the chain, the denominator is attesting stake in a continuous rolling window, not all-time supply.
approvingWeight / attestingWeight(window) ≥ 0.98, where weight is ve-weight (§2) and attestingWeight is summed over a continuous trailing window of recent blocks. Near-unanimity makes Liqua conservative: a malicious change needs almost everyone, which almost never happens by accident or attack.// 98% of ATTESTING stake (continuous rolling window) — not 98% of all supply const QUORUM = 0.98; // governed (and itself only changeable by 98%) const WINDOW = 100_800; // trailing blocks counted as "online/attesting" function attestingWeight(t) { // continuous · recomputed each block return sum(activeLocks(t) .filter(L => L.lastAttest > t - WINDOW) // only stake that showed up recently .map(L => veWeight(L, t))); // §2 ve-weight } function decide(proposal, t) { // proposal.kind ∈ ROLLBACK | CHANGE const q = proposal.approvingWeight / attestingWeight(t); if (q < QUORUM) return BE(hold, 'BELOW_98'); return proposal.kind === 'ROLLBACK' ? BE(() => rollbackTo(proposal.block), 'R9_ROLLBACK_98') // suspect block stays on chain as evidence : BE(() => applyChange(proposal.param), 'CHANGE_98'); }
Both powers route through the molecular META discipline: rollback is R9 (the bad block is kept as evidence, never deleted); the 98% threshold is the posture-pinned version of R12/R13's witness quorum.
| year | who | contribution | maps to |
|---|---|---|---|
| 2009 | Nakamoto | monetary emission · decaying block subsidy | §4 continuous decay |
| 1999 | Castro · Liskov | PBFT · K-of-N quorum tolerates bad actors | §6 98% quorum |
| 2013 | Laurie et al. | Certificate Transparency · independent witnesses | §1 SOMA proof · §6 |
| 2020 | Curve · Egorov | vote-escrow (veCRV) · lock ≤4y for weight | §2 ve-lock |
| 2020 | O'Connor · Aumasson et al. | BLAKE3 · parallel Merkle hash · derive_key/XOF | §1 SOMA-256 |
| 2015 | Ethereum / Bertani | keccak-256 · the EVM boundary hash | §1 EVM membrane |
| 2002 | Yarvin et al. | Urbit · deterministic personal OS from a seed | §5 reward-in-instance |
| 2019 | FIDO · W3C | WebAuthn / passkeys · device-as-auth | §5 R6 instance=auth |
| 2021 | Unicrypt · Team.Finance | liquidity lockers · proof-of-lock | §3 locked-liquidity list |
| 2024 | THE DREWLESS · 7SLF | MOLECULAR CODING · the organism discipline | the whole chain |
The integration — emission + locking + governance + rewards expressed as one continuous molecular organism, hashed by a tree that is the stack — that is the Drewless contribution. None of the parts are new; the composition is.
BOOST_MAX · HALFLIFE · TWITCH_LO/HI · QUORUM · WINDOW · CONFIRM_GATE are all governed parameters, not hardcoded truths. The illustrative tables are illustrative, labeled as such.Roadmap from here: reference SOMA-256 impl + vectors → ve-lock + locker EVM contracts → 98% governor → L2 getting-tool + confirmation oracle → the locked-liquidity dashboard (wired into liqua.html).