Skip to content

Incentive ​

Miners are paid for two things on a direction: time spent being the best executable quote, and swaps actually delivered while holding that position. 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. Most of a direction's pool pays out on the share of the window you held the crown, weighted by how well you backed it; the rest pays out on quality volume — fills that were reserved on a crown holder.

Completing swaps still matters — it is how you become and stay eligible, it grows the pool of the direction you serve, and a fill taken on your crown earns the quality-volume slice — but a completed swap is not by itself the 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: stay active, and three strikes and you're out ​

Eligibility is binary and has two halves: a lifetime strike limit read off the contract's timeout counter, and an activity window read off the validators' fill ledger.

  • You are eligible from your first completed swap. There is no warm-up count. Perfect quotes on day one pay zero until one swap clears — that first delivery is what stops a miner from earning on a rate it never intends to honor.
  • You stay eligible only by delivering, per purse. At least one completed swap in every trailing activity window (12 hours at launch) drawing on each purse you quote under, on any direction, from any taker — a real user or yourself. A purse that misses the window drops off every lane it backs until its next fill clears; your other purse keeps earning. There is no penalty beyond the gap. A timed-out or cancelled swap does not count as activity.
  • Every timeout is a strike. Go over the limit and you stop earning. alw miner status shows your strike counter and the live limit.
  • 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.
  • An ineligible miner disappears from the crown. Struck or lapsed, 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 uptime term, no latency term. Volume does not multiply your crown share either; it is paid as its own slice, below.

Quality volume: the β slice ​

Each direction's pool is split once more: 1−β pays crown time × capacity, and β pays quality volume. Your quality-volume share is your qualified hub-leg notional over the direction's total, across the same trailing window that sizes the pools.

A fill qualifies iff you held the direction's crown at the instant it was reserved, judged at that fill's own size. Concretely, validators replay the direction as it stood when your reservation opened and ask whether your pinned rate was inside the band of the best rate a taker of that size could actually get — the same test the crown uses, with can-fund bound to the swap's size instead of the minimum. Nothing after that instant changes the answer: the crown moving to someone else, your own later re-quote, or a competitor undercutting you mid-swap.

  • Reserved on you at the best rate → it counts, whoever the taker was and whatever the crown did afterwards.
  • Reserved on you off the crown → it does not count, anywhere. It does not pay you and it does not size the pool. A taker who deliberately picks a worse quote gives that miner nothing.
  • The β slice is not capacity-scaled. A completed fill was backed by construction.
  • A direction with no qualified fills in the window burns its β slice. Standing alone on a dead pair earns 1−β of it, not all of it. Fill your own crown at a small size and the slice is yours — at the protocol fee and the reservation fee, which is the point.
  • Special (treasury) fills never qualify. They are excluded from volume entirely.

Why the reservation instant: the rate is pinned into the reservation when it opens, so that is the only moment the taker's choice and your quote are the same thing. The 30-second pool window between open and draw is the whole tolerance.

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. A pair is live for a scoring round if it cleared at least one qualified fill in the trailing pool window (24 hours); a pair that did not is dead for that round and pays nothing. Each hub's family holds a share of miner emission proportional to its live pair count; within a family, a live pair's share blends an equal split over the family's live pairs with its share of the family's qualified volume, then splits evenly between the pair's two directions and across their backing lanes.

  • The equal-split term is a floor for live pairs only. The floor budget is fixed, so it is divided among the pairs someone actually filled — few live pairs means large floors, many means small ones. A registered pair nobody fills dilutes nobody.
  • Keeping a pair funded costs one qualified fill per window. Post a rate on an unquoted pair, fill it at min size while you hold its crown, and for the next 24 hours that pair has a floor, an α share, and your β slice. Let it lapse and it goes back to zero. Nothing is paid for a quote that never fills.
  • Weighting is at pair level, so one direction can't be inflated without inflating its twin.
  • Only qualified volume sizes pools. Fills reserved off the crown move nothing.
  • A silent network (no qualified fill anywhere in the window) falls back to an equal split over every registered pair.

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 four: stay eligible (deliver, every time), post depth (capacity), hold the crown where people actually swap (pool), and get filled while you hold it (the β slice).

Ways to quietly earn zero ​

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

SituationEffect
The pair you quote cleared no qualified fill in the pool windowThat pair is dead for the round — its pool is zero on every lane, whoever holds the crown
A purse goes a full activity window without completing a swapThat purse is lapsed — skipped for the crown on every lane it backs until its next fill clears; no strike, no slash
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 strike counter, purse states, required bondalw miner status
Your activity windowValidators judge it from completed swaps; your own last fill per purse is in your miner log and the swap history on the site
Band width, activity window, strike limit, capacity curve, pool blend, βallways/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