Skip to content

Incentive

Miners are paid for time spent being the best executable quote on a direction — not per swap, not per unit of volume. Validators replay the contract's event history over a rolling window and, at every instant, ask: on this direction, who posted the best rate, and could they actually have filled it? Those miners hold the crown for that instant, and your emission is the share of the window you held it, weighted by how well you backed it.

Completing swaps still matters — it is how you become and stay eligible, and it grows the pool of the direction you serve — but a completed swap is not itself a payout.

Every threshold in this model is a tunable parameter, so none are quoted below. alw view config and alw miner status show the live values; the constants live in the allways repo.

Three conditions, checked every instant

You hold the crown on a direction only while all three are true at the same moment:

  1. Eligible — your delivery record clears the gate (next section).
  2. Active — the purse backing that quote is activated on the contract.
  3. Idle — that purse is not reserved and not mid-swap.

Lose any one and your credit stops until you get it back; the crown falls through to the next qualifying miner. Nothing is averaged across the window — a miner that is busy or inactive for half of it earns for the other half.

Eligibility: three strikes and you're out

The contract keeps two lifetime counters for every miner — swaps completed and swaps timed out — and eligibility is read straight off them.

  • You start ineligible. A new miner earns nothing until its first few swaps clear. Perfect quotes on day one pay zero until then — the warm-up is what stops a miner from earning on a rate it never intends to honor.
  • Every timeout is a strike. Go over the limit and you stop earning. alw miner status shows your counters and the live limits.
  • Strikes never go away. The counters don't decay, don't reset, and survive deregistration — the hotkey↔Solana binding is set-once, and the counters ride on it. Strike out and that identity is done earning, permanently. The only way back is a fresh start: new Solana keypair, new hotkey, bind, re-post collateral.
  • A struck miner disappears from the crown. It isn't merely paid zero — it is skipped, and the next-best eligible miner takes the crown instead. Its quotes still route swaps for users; they just earn nothing.

A strike is not the slash. The slash is the per-swap penalty: miss a delivery deadline and the swap's collateral requirement is seized from your backing and paid to the wronged user — instantly on a SOL-backed swap, via the vault on a TAO-backed one (see What if a miner fails?). The strike is the record of that failure, and it is the strike — not the lost collateral — that eventually ends your emission.

What doesn't count: a swap validators close as Cancelled — your destination provably could not receive (a paused or blacklisted token, a reverting contract, a reserved account) — is no fault of yours. No slash, no strike.

The crown is a band, not a single head

At any instant on a direction, validators sort the posted rates best-first and find the best rate held by a qualified miner — eligible, active, idle, and able to fund its own quote. Every qualified miner within a small band of that rate co-holds the crown, and the instant's credit splits among the co-holders by collateral depth.

In practice:

  • Matching the leader pays. You get your depth-proportional share without undercutting anyone.
  • A one-tick undercut inside the band changes nothing but the depth split. Rates are floored to a fixed precision anyway, so sub-tick undercuts tie rather than win.
  • Beating the band takes the crown outright. Post materially better than everyone else and you hold it alone.
  • Outside the band you earn nothing on that direction for that interval. There is no partial credit for second-best.
  • If no qualified miner is posting, the interval goes unfilled and its share is paid to no one.

Inside the band, depth is what rivals compete on — which is what capacity rewards.

Capacity: depth up to one full-size fill

Your crown share is scaled by capacity: how much of the direction's largest allowed swap your collateral could back at the contract's collateral requirement.

  • Enough collateral for a full-size fill is full capacity. Anything past that earns nothing extra — depth is never pay-to-win.
  • Below that, the ramp is convex: thin collateral is punished harder than the raw ratio. A sharp rate parked on a sliver of collateral earns a sliver of a sliver.
  • Capacity is measured through the window, not read at the end. Topping up afterwards does not retroactively boost credit you already earned; letting collateral drain mid-window costs you from that moment on.
  • Collateral the validators cannot see counts as zero.

Capacity — and nothing else — scales your crown share. There is no volume term, no uptime term, no latency term. Your own cleared volume does not multiply your reward.

Idle is per purse: why running both backings pays

"Idle" is judged per collateral purse, not per miner. A swap running against your TAO bond does not make your SOL purse busy, and vice versa.

  • Two purses keep earning while one works. Take a TAO-backed swap and your SOL-backed quotes keep their crowns for its whole duration. A single-purse miner goes dark on every pair it quotes for the length of each swap.
  • Your slowest chain sets that outage. A Bitcoin leg can hold a purse for the length of its confirmations. If that's your only purse, that's the whole outage on every pair — including pairs that had nothing to do with Bitcoin.
  • You can serve two swaps at once — one per purse, concurrently, on the same miner.

So funding both purses is not just more collateral — it removes the head-of-line blocking a single purse imposes on your entire book. sol↔tao is the special case: one pair that can be quoted under either backing, each scored as its own lane with its own crown. Quoting it both ways means competing for both.

Which direction you serve matters

Every direction has its own emission pool, and pools follow demand. Each hub's family of pairs holds a fixed share of miner emission; within a family, a pair's share blends an equal split with its share of the family's recent cleared volume, then splits evenly between the pair's two directions and across their backing lanes.

  • The equal-split term is a floor — a quiet pair still pays, so an uncontested crown on it is still worth taking.
  • Weighting is at pair level, so one direction can't be inflated without inflating its twin.
  • Volume only sizes pools. Your own volume does not raise your share of one.

Holding the crown on a busy pair is worth meaningfully more than the same crown share on a quiet one. Pools are recomputed every scoring round and drift as demand moves.

What you don't claim is not redistributed

Emission a direction leaves unclaimed — an unfilled interval, an ineligible or thin-capacity holder — recycles back to the network. It does not flow to the remaining miners, and it is not normalized away. A penalty on you is absolute: an eligible miner holding the whole crown at partial capacity takes that partial slice and the rest is gone.

The levers you control are exactly three: stay eligible (deliver, every time), post depth (capacity), and hold the crown where people actually swap (pool).

Ways to quietly earn zero

None of these are strikes — but each one stops your credit until fixed:

SituationEffect
Bond falls below its purse's floor (fees and slashes drain it; the admin raises the floor)That purse is auto-deactivated — no crown on any lane it backed until you top up and re-activate
TAO-backed timeout still settling on the vaultThat hub is frozen to new swaps for a grace period and earns nothing on its lanes; the other purse keeps earning
Quote posted, but not executable under the current swap boundsIgnored for the crown, even if it sorts best
Not enough collateral to fund your own quote's smallest routable fillIgnored for the crown ("boundary squat")
Deregistered from the subnet mid-windowCredit for that window is forfeited
Contract haltedNobody earns; the whole round recycles

alw miner status shows each purse's activation state, required bond, and counters — check it before assuming the scoring is wrong.

Where the live values are

ValueWhere
Collateral requirement, swap bounds, floors, timeoutsalw view config (on-chain, admin-tunable)
Your counters, purse states, required bondalw miner status
Band width, warm-up and strike limits, capacity curve, pool blendallways/constants.py in the repo

For the swap mechanics behind all of this, see How It Works; to set up a miner, the Miner Guide.

Allways is permissionless, open-source, beta software. Swaps settle directly between counterparty wallets; the protocol never takes custody of user funds, and the protocol fee is charged against miner collateral rather than any user transfer. Validator operators, including those run by the project, verify swap outcomes but cannot redirect or receive any transferred amount. Use at your own risk. No warranty. Not financial advice.
Terms of Service · Privacy Policy