Document
Junaeth / Deep Reference
Target block spacing
5 s · QP_TARGET_SPACING
Validators
100 · Fixed, self-stabilising
Client
v3.3.4.0
Junaeth · Consensus by Schedule

Sign, don't mine.

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.

Weight = √(P − M) 5-second blocks Reverse auction Permanent burn Block-height ticks
One slot per node. Pseudorandom order. 5-second tick. Consensus is a rhythm.
Validator set
100
Fixed · self-stabilising
Block interval
5.000 s
QP_TARGET_SPACING · QPConstants.hpp
Blocks per day
~17,280
12 / min · 720 / hr
Avg interval (obs.)
5.0116 s
~0.2% missed blocks · 24 h
Mainnet since
May 2021
Chain live since 2014 · consensus live since 2021
01

Thesis.

Consensus model

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.

02

Sign, not mine.

Block production

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.

How one block happens

  1. Schedule

    At the start of each round, the 100 active StealthNodes are shuffled into a fixed order. Slot N belongs to the signer whose position is N. There is no competition for the slot — it has an owner, known to every node on the network, for the entire round.
  2. Sign

    When the signer's slot opens, they gather pending transactions, assemble a block, and sign it with the StealthNode's signing key. The signature is the block's only proof. There is no hash search, no nonce, no difficulty adjustment — the signer either produces a block in their window or they miss it.
  3. Broadcast

    The signed block propagates to every peer. Nodes verify the signature against the scheduled signer, check that the block arrived inside the slot, and apply it. Five seconds after the slot opens, the next slot opens — whether the last block was produced or not.
Proof-of-Work

Everyone races, one wins.

Who produces
Whoever hashes fastest this round
Cost of participation
Electricity, burned externally
Block interval
Probabilistic — Poisson around a target
Failure mode
Orphans, reorgs, 51% attacks
Who is paid
Winning miner, from inflation + fees
Junaeth

One signs, everyone verifies.

Who produces
The scheduled signer for this slot
Cost of participation
A permanent burn of XST at acquisition
Block interval
Exactly 5 seconds, observed 5.0116s
Failure mode
Missed slot → weight penalty, slot passes
Who is paid
The signer, by weight — share of a fixed reward pool
The rename matters. Mining is a competition to be chosen. Signing is a consequence of having been chosen. Every design decision downstream of Junaeth — the feework clock, the acquisition burn, the weight-proportional reward split — assumes the chosen-in-advance property and would not compose with a leader election. The schedule is not an optimisation. It is the interface.
03

Reverse auction.

Slot acquisition

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).

acquisition burn = market-clearing XST  ·  irreversibly eliminated from supply  ·  no per-block drawdown
Three problems it solves by construction
01

Sybil cost

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.

02

Nothing-at-stake

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).

03

Plutocratic drift

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.

04

Weight.

Reputation mechanics

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.

weight = √( P − M )
P — blocks produced by this signer, ever. M — slots missed by this signer, ever. The square root dampens runaway advantage: net counts grow slowly against their root. Observed performance across a 120-block window: roughly 0.2% of slots missed at a 5.0116-second mean interval (Series #3).
01

Average interval

observed · last 24h

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.

5.0116 s vs 5.000s target
02

Missed slots

network-wide · last 24h

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.

~ 32 blocks ≈ 0.19% of 17,280 slots
03

RMSD drift

jitter · slot-to-slot

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.

~ 0.25 s last 24 h · Series #3
05

Timekeeping.

Block height as 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.

QP_TARGET_SPACING

QP_TARGET_SPACING = 5
Source. 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.
Three challenges a block-height clock has to survive
01

Clock skew

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.

02

Network latency

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.

03

Downstream finality

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.

Block height · the clock the protocol reads Live

—
− 20 s
—
− 15 s
—
− 10 s
—
− 5 s
—
NOW
—
+ 5 s
—
+ 10 s
Units the rest of the protocol uses. Feework expiry ticks down once per block. Deferred transactions settle at a block height rather than a timestamp. If a receiver is offline for an hour, they don't need a correct clock to catch up — they need the missing 720 blocks.
06

Forks.

Focal point resolution

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.

A fork's winner is the branch with more signer-weight, not more blocks. The calculation is deterministic and public, so every rational signer converges on the same choice independently — no round-trip coordination required.
Focal-point resolution · Junaeth Series #2: Novel Timekeeping · derived framing
07

Hybrid ledger.

Chain + registry

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.

Blockchain

Unbroken sequence of signed blocks.

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.

  • Append-only. A block cannot be rewritten once its descendants are signed.
  • Signed by Junaeth. Every block carries exactly one slot-holder's signature.
  • Asynchronous cash. Transactions replay deterministically from genesis; the chain doesn't need external timestamps.
Registry

StealthNodes, queue, and registry ledger.

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.

  • Off-chain, deterministic. Held alongside the chain, not in it — which is what the ~1.5 GB/year bloat reduction pays for.
  • Authoritative for scheduling. Slot ownership and the next-signer lookup both consult the registry.
  • Four authority keys per StealthNode. Owner, manager, delegate, controller — separating ownership from day-to-day operation.
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.
Reward flow · what this architecture enables

Rewards by weight, not politics.

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).

reward split   weight-proportional
weight   =   √(P − M)
observed   0.0574 XST / block
registry ledger tracks unclaimed balances · chain bloat −1.5 GB/yr
A block's job is to commit economic history. The registry's job is to commit consensus history. Keeping the two structures separate is what buys the ~1.5 GB/year bloat reduction — while still letting any node reconstruct the full consensus state deterministically from the chain.
08

Specifications.

Junaeth · reference
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).
SPEC · v0 Full Junaeth specification → Back to landing · 06 Junaeth
09

The Junaeth series.

Source posts · 2021

The four posts this page cites throughout — the original 2021 Junaeth series by James Stroud, republished in full on the blog.