Become a Validator
Validators secure Liqua by putting LIQUA at stake and attesting to the canonical head. You ve-lock tokens (§2) into a real on-chain escrow, register to the validator set, and then co-sign every new head as live proof-of-participation. Longer locks earn more weight; the principal can't leave until expiry. This page runs the validator node and walks the connect flow.
An L8 LEDGER wallet (detected via EIP-6963) or an L8 signer key you can import — a
12/24-word phrase or a 0x… private key, derived at BIP-44 m/44'/60'/account'/0/0, the same
path as your L8 wallet. The key never leaves the page; it signs the on-chain lock and the live co-signing. On
devnet, the in-page faucet grants test LIQUA. New here? Start with
Get a Wallet.
Run the validator node
The validator is a small node that serves both the chain-stake API and the connect page itself.
cd liqua
node miner/validator.mjs # :7100 (or set LIQUA_VALIDATOR_PORT)
Then open http://localhost:7100 — the node serves
miner/validator-connect.html at /. (You can also open that file directly and point it at a
remote node by setting localStorage.LIQUA_VAL.) The Server Hub launches this as
validator · §1e witness.
The flow · four steps
The connect page is a guided, four-step path. Each step lights up as the previous completes.
-
Connect your wallet
The page scans for your L8 extension via EIP-6963 (
rdns: studios.7slf.l8) and lists it first. Click it to connect your address & balance. To lock and co-sign, import your L8 signer key (⚿ IMPORT L8 SIGNER KEY) — paste a phrase or0x…key and choose HOT · 0′ (operational) or COLD · 1′ (vault). An extension-only connection can view, but signing the on-chain lock needs the imported key. -
Stake & ve-lock
Enter an amount and slide the duration from 1 month to the chain's max (4 years). The page previews your ve-weight, boost (continuous, capped at +50% at the 4-year cap), and your share of the set — all mirroring
VeLock.sol, driven by the node's/params. Hit⛓ APPROVE & LOCK ON-CHAINtoapprovethencreateLock— the principal is now escrowed inVeLock.sol.No early exitLocked principal is withdraw-gated until
t ≥ expiry— the contract enforces it, there are no exceptions. Pick a duration you can live with. -
Register as a validator
With a lock in place,
★ REGISTER AS VALIDATORsigns aLIQUA-VALIDATOR-REGISTERmessage (native key → keccak/JSON scheme, or extension →personal_sign). The node reads your on-chain lock and adds you to the set. The moment you lock, your amount is also published to the §3 locked-liquidity list. -
Activate live co-signing
⚡ ACTIVATE LIVE CO-SIGNINGstarts signing each new canonical head: the page polls/head, and when thesomaRootchanges it signs it and posts to/attest. Your blocks co-signed counter ticks up — this is your §1e proof-of-participation in the K-of-N witness quorum. Live co-signing needs the imported signer key.
What the page shows
- Your validator — escrowed amount, ve-weight (+boost), time until unlock, blocks co-signed, and your set share. Status is
CO-SIGNINGwhen live, elseSTAKED. - Validator set / locked liquidity — the whole set ranked by ve-weight, with totals (validators, total escrowed, total ve-weight, online now) and a live online/offline dot per validator. This is the proof-of-lock surface, live.
- Withdraw — enabled only after expiry; the contract gate means the button can't release principal early.
Governance · the 98% rule
Two powers — rollback (revert to a prior block) and change (update a parameter) — each require 98% agreement. To keep near-unanimity from freezing the chain, the denominator is attesting ve-weight in a continuous rolling window, not all-time supply:
// passes only if, over a trailing window of recent blocks:
approvingWeight / attestingWeight(window) ≥ 0.98
Your co-signing is what puts your ve-weight into that attesting window — so staying online is what gives your
stake a governance voice. On-chain this is Governor98.sol (98% of attesting ve-weight), verified
retuning live parameters in the demos.
The Governance page covers the rule in depth — rollback vs change, the proposal lifecycle, and the liveness tradeoff. Note: the 98% governor runs on-chain, but a surface for creating proposals and casting votes is still roadmap.
Verify the stack
The validator + stake vault ship with their own gates:
node miner/test-stake-vault.mjs # the on-chain ve-lock escrow
node miner/test-validator-stake.mjs # stake accounting
node miner/test-validator-reg.mjs # registration + attestation
The validator API
Everything the page does is plain HTTP on :7100. The full catalogue is in the
API reference; the essentials:
| Endpoint | Purpose |
|---|---|
GET /params · /stake/params | chain + stake parameters (chainId, symbol, max lock, min stake, quorum) |
GET /validators · /me | the ranked set · your own record |
GET /stake/of · /head · /chain | your on-chain lock · current head · chain summary |
POST /stake/build · /stake/submit | build an unsigned stake tx · submit it signed (approve · createLock · withdraw) |
POST /stake/faucet | devnet — grant test LIQUA |
POST /register · /attest | join the set · co-sign a head |
Files
| File | Role |
|---|---|
miner/validator.mjs | the validator node — serves the stake API + connect page on :7100 |
miner/validator-connect.html | the guided connect / stake / register / co-sign UI |
miner/stake-vault.mjs | the ve-lock escrow + faucet + build/submit tx flow |
VeLock.sol | the on-chain vote-escrow lock (boost + linear-decay weight) |
Governor98.sol | 98%-of-attesting-ve-weight governor (rollback + change) |
Validators secure what miners produce — see Mining for the other side, Run a Peer for the network underneath, and the API reference for every endpoint.