mainnet is not live yetdevnet beta is live at play.dust.bid
skip to content

solvency line ​

the other side of every bet is the house. it starts with nothing. this page is how it pays, what happens when it cannot, and where the surplus goes.

the house starts at $0 ​

the house is the free cash LP, plus the earmarked cash SB, minus the line Q:

tracked LP  =  LP + SB − Q

it can be negative. that is how far underwater the house is.

  • nobody can deposit into it. there is no instruction for it.
  • it fills from trader losses. a loss or a bust moves money into the house.
  • it pays winners from that cash.

on day one the house is empty, so early wins can wait in the line. that is also why early losers get the most $DUST.

how a bet settles against the house ​

a win (margin M, net profit W, fee fee):

margin goes back to the trader at once                    never queued
if the line is empty:
    pay      = min(W, LP)                                 paid from the house
    queued   = W − pay                                    the unpaid rest joins the line
    if queued = 0 and LP ≥ fee:  the fee is paid and split
else:
    the whole W joins the line, and no fee is paid
tracked LP falls by W + the fee actually paid

a loss (the trader loses loss):

trader gets M − loss back at once
line empty:      fee = 2% of loss, rest of the loss goes to LP
line not empty:  no fee, the whole loss goes to SB
$DUST is minted either way

a bust is a loss of the whole margin, with the bounty taken out first.

the line ​

what the house cannot pay goes into a first in first out line. nobody skips it.

  • where it lives. a ring account of 4096 entries. a new win from the wallet at the back of the line joins that entry and keeps its place. a full ring fails with QueueFull.
  • no overtaking. while the line holds any debt, free house cash is never used for a new winner. a new win goes to the back.
  • losses feed the head. while the line is not empty, every loss goes to SB, the cash earmarked for the line, with no fee.
  • paying it. harvest is open to anyone. it pays the head entry from SB first, then from LP. a partial payment keeps the head in place. when the line empties, whatever is left in SB moves to LP. one call takes up to 32 entries. the SDK batches 24 per transaction, because 32 do not fit.
  • margin is never queued. only the profit on top can wait.
  • a queued win is not collateral. you cannot bet it until it is paid.

no fee on a queued win ​

the fee is paid only when the line is empty, the win is paid in full and the house holds the cash for the fee. in every other case the fee is dropped. your claim is still W. a dropped fee only leaves more in the house.

a worked line ​

the house starts with $100 of free cash. five traders have bets open. amounts are in USDC.

stepeventLPSBlinetracked LP
0start100.00000000100.000000
2alice wins, W = 423.140793. the house pays its 100, the rest joins the line. fee dropped00323.140793−323.140793
3bob loses $30 while the line is not empty030.000000323.140793−293.140793
4carol is dusted, $200 margin. $0.20 bounty. no fee0229.800000323.140793−93.340793
5dave wins, W = 36.217441. he joins the line behind alice, although SB holds cash0229.800000359.358234−129.558234
6harvest(1) pays alice from SB00129.558234−129.558234
7erin loses $100001000.000000129.558234870.441766
8harvest(8) clears the line. the rest of SB moves to LP870.44176600870.441766
9bob wins, W = 15.938740. the line is empty and LP covers it. paid directly, the fee flows854.17774500854.177745

in step 5 the cash in SB is reserved for the head of the line. dave does not get it ahead of alice.

the reward cap C and the overflow ​

once the house holds more than the cap, everything above it goes to stakers. 100% of it.

C        = max(4% of D0, $250,000)             set once, at genesis
overflow = min( max(tracked LP − C, 0), LP )   only when the line is empty
pool     = SF + overflow

D0 is the time weighted average of the money that sat in the deposit window. mint curve has the genesis formulas.

push_fees is open to anyone. it moves the pool to the stakers and lowers both LP and tracked LP by the overflow.

  • the cap can be changed. the owner can set C anywhere from $250,000 to $100,000,000. nothing else can.
  • fees wait for stakers. a push needs at least 1 $DUST staked. before that, fees keep piling up in SF and are not lost.
  • a long line stops the overflow. while the line has debt, nothing sweeps. what was already pushed stays yours.

how stakers are paid ​

staking uses an accumulator. a push adds pool × 10^18 / total_staked to a global counter. each wallet's pending reward grows by staked × (counter − its snapshot) / 10^18, and the snapshot is refreshed before any change to the stake.

  • stake and unstake are instant and have no lockup.
  • a wallet that stakes after a push gets nothing from it.
  • each wallet's pending reward is the floor of the true amount, so the sum of pending rewards never exceeds what was pushed. a rounding crumb stays in SP.
  • claim moves the pending reward into the wallet's balance. withdraw is a separate step.

example: stakers hold 1000 and 3000 $DUST. SF is $100.50 and the overflow is 1,000,123 micro USDC. the pool is 101,500,123. the first claims 25,375,030 and the second 76,125,092.

on devnet ​

the devnet genesis used a D0 of 360.05 USDC. both the flat zone and the cap sit on their floors: F = $100,000 and C = $250,000. mainnet values: set at launch.

what the app shows ​

house cash, line depth, and how far underwater the house is. a keeper reads the same numbers from Exchange.ledger. see SDK.