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. Validators earn in proportion to how they perform — weight in, rewards out — and they keep the right to sign 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 to mint a StealthNode — a non-fungible asset carrying the right to sign. The burn is the price of the NFT, paid to the chain itself, not to another holder.
The 100 StealthNode slots are allocated by a reverse-auction pricing mechanism. To acquire a slot, a buyer pays the market-clearing price in XST to the blockchain itself. That XST is not transferred — it is irreversibly eliminated from the money supply at the moment of purchase.
The set stabilises through price equilibrium rather than tenure. When a StealthNode changes hands, the new buyer pays the market-clearing price in XST — that XST is burned to the chain at the moment of acquisition. Because the purchase is a burn rather than a lock, there is no unbonding period: the XST is gone from circulation when the StealthNode is acquired, and no per-block drawdown happens after that.
This inverts the economic relationship on acquisition. In PoS, validators post capital and extract yield from it. In Junaeth, the cost of entry is paid to the protocol itself: acquisition burns XST permanently to the chain. The signer's return is a share of the block-reward pool, allocated by weight — absolutely no politics comes into play (Series #1).
A would-be attacker cannot fabricate signers cheaply. Every added identity demands its own upfront acquisition burn, paid into the blockchain at the market-clearing price. The cost scales linearly with the number of slots captured and is not recoverable 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 XST permanently on acquisition, against a specific chain. Signing a competitor's fork cannot recover that burn and can only forfeit the slot (and its accrued weight and future rewards).
PoS rewards make the rich richer: yield compounds proportionally to holdings. Junaeth's rewards are not holdings-weighted — a StealthNode earns a share of the fixed reward pool in proportion to its weight, which is performance over time, not XST on hand. Wealth on its own does not compound through the consensus layer; only showing up reliably does.
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 block height itself the time authority: the network's tip is the authoritative "now". Every node agrees on the current time because every node agrees on the current tip — wall-clock skew on any single operator's machine is a local problem, not a consensus one.
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, transaction expiry, and offline catch-up 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 are rare — roughly once per day, or once every ~17,000 blocks — and arise when signers legitimately disagree on which parent to build on (typically after a partition clears, leaving two internally consistent branches). Junaeth resolves this with a focal point: each branch carries 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.
Junaeth does not carry all the state that makes it work. Validator identity, performance counters (P and M), slot ownership, and unclaimed block-reward balances live in a registry — 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. The chain side is UTXO-based — the structure cryptographic privacy attaches to; the registry side is account-based, built for efficiency. Stealth's own docs use two names for this, "hybrid ledger" (Series #4) and "fused ledger" (what-is-stealth); same structure. The payoff is ~1.5 GB/year less chain bloat, because performance and reward balances live off-chain and are reconstructable deterministically from the blockchain itself.
The blockchain is what every node stores in full and replays from genesis. Transactions, balances, validator registry state, feework receipts — the things a user would want to prove to a third party — all live here.
The registry holds the state that changes every block — StealthNode list, slot queue, performance counters, and the Registry Ledger (unclaimed block rewards by pubkey). It's updated by the same consensus that produces blocks, but stored off-chain; any node can reconstruct it deterministically from the blockchain.
| Data type | Lives in blockchain | Lives in registry | Why |
|---|---|---|---|
| Account balances | yes | — | Economic state, held as UTXOs — the structure cryptographic privacy attaches to. Users must prove it to third parties. |
| StealthNode ownership | origin only | live copy | Acquired on-chain via burn; ownership mapping maintained in registry. |
| Authority keys (owner · manager · delegate · controller) | origin only | live copy | Four-key split from Series #4; registry tracks active mapping. |
| Slot schedule | — | yes | Derived each shuffle from registry state; never serialised into blocks. |
| Signer weight (P, M) | — | yes | √(P − M), recomputed every block. Storing it would duplicate the chain. |
| Unclaimed block rewards | — | yes | Registry Ledger tracks pubkey balances (Series #4). |
| Acquisition burn | yes | reflected | XST burned on StealthNode purchase is an on-chain event; registry reflects ownership shift. |
Because the registry holds performance counters and unclaimed balances separately from the chain, Junaeth can settle rewards without governance and without bloating blocks. Each block pays from a fixed reward pool into the Registry Ledger, allocated by the signer's weight — the square root of lifetime (P − M). Observed block reward: 0.0574 XST (Series #4 measurement, Aug 2021).
| Consensus type | Junaeth | Pre-scheduled signing, weight-resolved forks, weight-proportional block-reward split. |
| Active validator count | 100 StealthNodes | Fixed cardinality. New entrants acquire from the blockchain via reverse-auction pricing; XST spent is burned on acquisition. |
| Target block interval | QP_TARGET_SPACING = 5 |
Compile-time constant in QPConstants.hpp. Hard-fork to change. |
| Observed avg. interval | 5.0116 s | Series #3 observation averaged across 17,280 daily slots — 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 | Acquisition cost = XST burned to the chain at purchase. No bond; no unbonding period. |
| Validator reward | Weight-proportional | Share of fixed reward pool allocated by √(P − M). Observed 0.0574 XST per block (Aug 2021, Series #4). Tracked in Registry Ledger. |
| 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 model | Focal-point convergence | Competing branches resolve by Σ signer-weight (Series #2). Forks are rare — about once per day / once per ~17,000 blocks. |
| Ledger architecture | Hybrid · blockchain + registry | Economic state on-chain; StealthNodes, queue, performance, and unclaimed rewards in registry. ~1.5 GB/year less chain bloat. |
| Clock authority | Block height | Wall-clock timestamps are hints. Consensus uses tip height. |
| Consensus launch | May 2021 | Junaeth consensus activated May 2021. Chain itself live since 2014. |
| Reference implementation | stealth/src/QPoS/ |
Protocol headers and constants (e.g. QPConstants.hpp → QP_TARGET_SPACING). |
The four posts this page cites throughout — the original 2021 Junaeth series by James Stroud, republished in full on the blog.