Junaeth replaces the mining race with a pseudorandom signing queue. Every validator gets exactly one slot per round. A block signs every five seconds, forever. No hash puzzle. No fork auction. Consensus is a schedule.
Junaeth is the consensus layer that lets every other part of stealthCORE work. It replaces the auction-for-attention of mining and the auction-for-capital of staking with a schedule: validation rights are purchased, not granted, and the payment is an irreversible burn made to the protocol itself.
Five-second blocks aren't a performance claim — they're a structural feature. Once the schedule is fixed and the clock is the block height, ten thousand downstream decisions get cheaper: fees can be paid in compute, expiry can be counted in blocks, offline receivers can catch up deterministically.
The shorthand is simple. Nobody mines. Nobody is rewarded for signing. Validators sign because they paid, in advance, for the right to — and they keep that right only as long as they keep showing up.
A Junaeth block is not discovered. It is issued. At a precise moment, by a precise signer, in a precise slot. If any one of those three things is wrong, the block is rejected before it reaches the pool.
A Junaeth signer does not stake XST. They destroy it. The burn is the bid — and the bid is paid to the chain, not to another holder.
The 100 StealthNode slots are allocated by continuous reverse auction. To take a slot, a bidder commits to burning more XST per block than the lowest-ranked incumbent. The burn accrues over time as the node signs — if the schedule turns over 17,280 blocks per day, the cost is paid across 17,280 increments, not up front.
Outbidding is how the set stays live. A higher bid displaces the lowest current signer on the next rotation. A dropped bid retires gracefully. There is no unbonding period, because there is no bond — the XST that paid for past slots is already gone, and the XST that hasn't been burned yet is still the bidder's.
This inverts the economic relationship. In PoS, validators extract value from the chain: they post capital and the chain pays them to hold it. In Junaeth, validators fund the chain: every signed block removes supply from circulation forever, and the only return is the right to keep signing.
A would-be attacker cannot fabricate signers cheaply. Every added identity demands its own burn, paid forever, against an auction they do not control. The cost scales linearly with the number of slots captured and does not recover if the attack fails.
A PoS validator loses nothing by signing multiple competing forks — they hold the same coins on every branch. A Junaeth signer has already burned against a specific chain. Signing a competitor's fork cannot recover the burn; it can only forfeit the slot.
PoS rewards make the rich richer: yield compounds proportionally to holdings. Junaeth has no validator rewards. The largest holder gains nothing by running a signer that they would not also gain by simply holding. Wealth does not compound through the consensus layer.
Weight is the only thing money can't buy in Junaeth. A signer's weight is a function of how they have actually performed — blocks produced, slots missed — accumulated across every rotation they have served.
Real block arrival time, measured across all 17,280 daily slots. The tight gap between observation and the 5.000s target is a direct consequence of weight discipline: signers who drift pay for it.
Slots where the scheduled signer failed to produce a block inside the window. Each miss increments that signer's M permanently and subtracts from their weight on the next tie-break.
Root-mean-square deviation of slot arrival from the 5.000s target. Small jitter means the schedule is respected to within a quarter-second even under real network conditions, which is what makes block height usable as a clock.
Every chain has a wall clock and a block clock. Most chains treat the wall clock as authoritative and let the block clock drift. Junaeth does the opposite: block height is the clock that the protocol consults, and wall time is only ever a hint.
stealth/src/QPoS/QPConstants.hpp — a compile-time constant. Changing it requires a hard fork and is not something a single node can do unilaterally. The five-second target is therefore a network-wide invariant, not a per-node setting.
Operator machines drift. NTP helps but isn't guaranteed. Junaeth resolves this by making the network the time authority: peers converge on the median of recent block timestamps, and any signer more than a second off the consensus view is ignored on the next slot.
A block signed at wall-time 12:00:00.000 may not reach every peer by 12:00:05.000. The schedule is tolerant of this: what matters is that the scheduled signer produced a signed block whose timestamp is inside the slot. The slot boundary is a rule about authorship, not arrival.
Feework, expiry, channel windows all depend on "is it time yet?". Answering that with wall-clock readings would pin the protocol to the operator's machine. Answering it with block height makes the clock part of consensus — everyone agrees on the current time because everyone agrees on the tip.
Two valid branches can exist only when the schedule is silent on which to prefer. Junaeth's tie-breaker is weight, not work — the branch signed by more reputation wins, and rational signers converge on it by self-interest.
Most of the time, Junaeth has no forks. The schedule pre-assigns authorship, so competing blocks at the same height simply cannot both be valid — one is signed by the scheduled signer, the other isn't. The honest block wins on inspection, and there is nothing to choose between.
Forks arise only when signers legitimately disagree on which parent to build on — typically because of a partition that cleared, leaving two internally consistent branches. Junaeth resolves this with a focal point: each branch advertises the summed weight of its signers. Every honest validator picks the higher-weight branch because every other honest validator will, and orphaning one's own block is worse than re-signing on the heavier branch.
The key property is that nobody has to coordinate. The focal point is public, the calculation is deterministic, and the Schelling equilibrium is reached in a single slot. The losing branch is abandoned in the same interval it was created.
Signed by 62 of 100 active StealthNodes, drawn from the long-tail veterans. Total weight across the branch is dominated by 2021-era operators whose P counts are in the millions.
Signed by 38 of 100 active StealthNodes, mostly mid-band. No individual signer is misbehaving — they simply landed on the lighter side of a partition that has now cleared.
Junaeth does not carry all the state that makes it work. Validator identity, stake, weight, and slot ownership live in a registry — a structure maintained alongside the blockchain, updated by the same consensus but not serialised into every block. The chain holds economic history; the registry holds consensus state.
The split is a stealthCORE property. The mainchain commits economic state and Junaeth derives consensus state from it in the registry — two structures, one ledger. stealthPRIVATE takes a different architectural path: funds live as shielded notes in a pool addressed by commitment rather than by account, with no per-user ledger to split; it inherits Junaeth's scheduling through the bridge rather than running its own consensus.
The blockchain is what every node stores in full and replays from genesis. Transactions, balances, contract state, feework receipts — the things a user would want to prove to a third party — all live here.
The registry is consensus state that is derived from the chain but stored separately. It changes constantly — every block updates weight and slot ownership — so embedding it in the chain would bloat every block with information already computable from earlier blocks.
| Data type | Lives in blockchain | Lives in registry | Why |
|---|---|---|---|
| Account balances | yes | — | Economic state. Users must prove it to third parties. |
| Signer identity & bid | origin only | live copy | Set at bid time on-chain; mutated continuously off-chain. |
| Slot schedule | — | yes | Derived each round from registry state; never serialised. |
| Signer weight (P, M) | — | yes | Recomputed every block. Storing it would duplicate the chain. |
| Burn accounting | yes | reflected | Burn is an on-chain event; the registry just reads it. |
Because the registry, not the chain, records who owns a slot, Junaeth can settle economic events without routing them through the signer. When a transaction clears, its compute-paid fee is simply burned against the chain's supply. The signer receives nothing from the block they produced.
| Consensus type | Junaeth · Quorum Proof-of-Stake (QPoS) | Pre-scheduled signing, weight-resolved forks, no block reward. |
| Active validator count | 100 StealthNodes | Fixed cardinality. New entrants displace lowest-ranked incumbent by bid. |
| Target block interval | QP_TARGET_SPACING = 5 |
Compile-time constant in QPConstants.hpp. Hard-fork to change. |
| Observed avg. interval | 5.0116 s | Rolling 24 h, last measured 2026-04 — 0.23% over target. |
| Blocks per day | ~ 17,280 | 86,400 s ÷ 5 s · 720 per hour · 12 per minute. |
| Slot acquisition | Reverse auction · permanent burn | Bid = XST burned per block signed. No bond; no unbonding period. |
| Validator reward | none | Signers are not paid. Fees are compute (feework), not coin. |
| Weight formula | weight = √(P − M) |
P = blocks produced · M = slots missed · lifetime cumulative. |
| Fork resolution | Heaviest-weight branch | Focal point: Σ weight across signers, not block count. |
| Finality latency | ≈ 1 block (≈ 5 s) | Reorgs deeper than one block are economically unprofitable. |
| Ledger architecture | Hybrid · blockchain + registry | Economic state on-chain; validator/slot state in derived registry. |
| Clock authority | Block height | Wall-clock timestamps are hints. Consensus uses tip height. |
| Consensus launch | May 2021 | Junaeth activated at block ~1,150,000. Chain itself live since 2014. |
| Reference implementation | stealth/src/QPoS/ |
C++17. Core: QPRegistry, QPConstants, QPBlock. |