parameters
three kinds of numbers live here.
- constants. compiled into the program. only an upgrade changes them.
- bounds. the range an authority can move a value inside. never past it.
- listed values. what an instrument or the exchange is set to on devnet today. an authority can change them inside the bounds.
mainnet values that are not fixed yet say set at launch. the list is at the bottom.
units
| name | value | meaning | defined in |
|---|---|---|---|
USDC | 1,000,000 | micro USDC per USDC | math.rs |
PX | 1,000,000,000 | price unit, 1e-9 USD | math.rs |
DUST | 1,000,000 | ledger units per $DUST, 6 decimals | math.rs |
FP | 1,000,000,000,000 | a fraction of 1. 1 bp is 100,000,000 | math.rs |
BPS | 10,000 | basis points in 1 | math.rs |
ACC | 10^18 | staking accumulator scale | math.rs |
trading
| name | value | unit | defined in |
|---|---|---|---|
MAX_LEVERAGE_CORE | 1000 | × leverage | state.rs, DUST-SPEC §3.1 |
DUST_LEVERAGES | 5000, 10000 | × leverage | state.rs, DUST-SPEC §3.1 |
DUST_HORIZONS_MS | 5000, 15000, 60000 | ms | state.rs, DUST-SPEC §3.1 |
| minimum margin, launch | 5,000,000 | micro USDC, $5 | ix_admin.rs |
| minimum margin, bound | 1,000,000 to 100,000,000 | micro USDC | state.rs |
| max notional, launch | 1,000,000,000,000 | micro USDC, $1,000,000 | ix_admin.rs |
| max notional, hard | 10,000,000,000,000 | micro USDC, $10,000,000 | state.rs |
| max DUST MODE margin, launch | 500,000,000 | micro USDC, $500 | ix_admin.rs |
| max DUST MODE margin, hard | 10,000,000,000 | micro USDC, $10,000 | state.rs |
MIN_ORDER_TTL_MS | 5,000 | ms | state.rs |
MAX_ORDER_TTL_MS | 86,400,000 | ms, 24 h | state.rs |
CANCEL_SOFT_MS | 30,000 | ms | state.rs, DUST-SPEC §3.2 |
OPEN_STALE_GATE_MS | 10,000 | ms | state.rs, DUST-SPEC §3.2 |
QUEUE_CAP | 4096 | entries | state.rs |
HARVEST_MAX | 32 | entries per call | state.rs |
| session key life | 2,592,000 | seconds, 30 days | ix_user.rs |
agent key life, AGENT_MAX_EXPIRY_S | 2,592,000 | seconds, 30 days | state.rs |
MAX_AGENT_LEVERAGE | 10,000 | × leverage | state.rs |
fees and shares
| name | value | unit | defined in |
|---|---|---|---|
win_fee_bps, launch | 200 | bps of the trimmed gain | ix_admin.rs, DUST-SPEC §3.1 |
MAX_WIN_FEE_BPS | 500 | bps | state.rs |
loss_fee_bps, launch | 200 | bps of the loss, house side | ix_admin.rs, DUST-SPEC §3.1 |
MAX_LOSS_FEE_BPS | 500 | bps | state.rs |
bounty_bps | 10 | bps of margin, 0.1%. no setter | ix_admin.rs, DUST-SPEC §3.1 |
bounty_min | 10,000 | micro USDC, $0.01. no setter | ix_admin.rs, DUST-SPEC §3.1 |
STAKER_SHARE_BPS | 5000 | bps of a fee, rounded down | math.rs, DUST-SPEC §3.1 |
REF_BPS | 2000, 4000 | bps of the dev cut, tier 0 and tier 1 | math.rs, DUST-SPEC §3.1 |
REF_DUST_BPS | 1000 | bps of the referee's mint | math.rs, DUST-SPEC §3.1 |
ACTIVATION_FEE | 1,000,000 | micro USDC, on the first deposit | state.rs, DUST-SPEC §3.3 |
MIN_DEPOSIT | 10,000,000 | micro USDC, counted after the activation fee. a withdraw must also be at least this, or the whole balance | state.rs, DUST-SPEC §3.3 |
impact and bust
compiled bounds and the devnet listed values.
| name | BTC | ETH | SOL | bound | unit | defined in |
|---|---|---|---|---|---|---|
impact_b_bps | 1000 | 1000 | 1000 | up to 2000 | bps | state.rs, DUST-SPEC §3.1 |
impact_r | 15000 | 15000 | 15000 | 1000 to 1,000,000 | state.rs, DUST-SPEC §3.1 | |
impact_nref_uu | 100,000,000,000 | 100,000,000,000 | 100,000,000,000 | 1,000,000,000 to 10,000,000,000,000 | micro USDC | state.rs, DUST-SPEC §3.1 |
impact_p_milli | 814,598 | 483,979 | 483,979, a placeholder | 10,000 to 10,000,000 | p × 1000 | state.rs, DUST-SPEC §3.1 |
derived c_fp | 189,426,606 | 273,287,203 | placeholder | 10^7 to 10^10 | FP | math.rs |
db_fp, Core deadband | 20,000,000 | 20,000,000 | 20,000,000 | up to 200,000,000 | FP, 0.2 bp | state.rs, DUST-SPEC §3.1 |
beta_fp, bust buffer | 500,000,000 | 500,000,000 | 500,000,000 | 100,000,000 to 900,000,000 | FP, 5 bp | state.rs, DUST-SPEC §3.1 |
SOL impact_p_milli is ETH's value, a placeholder. no SOL calibration exists yet. mainnet impact values: set at launch.
DUST MODE bounds
per cell, for each of the six leverage and horizon pairs.
| name | bound | unit | defined in |
|---|---|---|---|
deadband db_fp | up to 100,000,000 | FP, 1 bp | state.rs |
haircut b_bps | up to 2000 | bps | state.rs |
curve c_fp | up to 50,000,000 | FP, 0.5 bp | state.rs |
dm_basis_bps | 0 to 10,000 for each leverage, launch 10,000 and 10,000 | bps | ix_admin.rs, DUST-SPEC §3.1 |
DUST MODE cells, devnet
which rounds are open on each coin. on means the cell's bit is set in the instrument's mask (BTC 52, ETH 54, SOL 62). the per cell pricing values are set on chain by the owner and can change inside the bounds above.
| asset | 5000×, 5 s | 5000×, 15 s | 5000×, 60 s | 10000×, 5 s | 10000×, 15 s | 10000×, 60 s |
|---|---|---|---|---|---|---|
| BTC | off | off | on | off | on | on |
| ETH | off | on | on | off | on | on |
| SOL | off | on | on | on | on | on |
oracle and timing
| name | shipped default | devnet listed | bound | unit | defined in |
|---|---|---|---|---|---|
cadence_ms, P | 50 | 50 | 50, 100, 200, 400 or 1000 | ms | state.rs, DUST-SPEC §3.2 |
channel_id | 2 | 2 | 2, 3 or 4, equal to the cadence | state.rs | |
delay_ms, D | 1000 | 1000 | 1000 to 5000 | ms | state.rs, DUST-SPEC §3.2 |
guard_ms, G | 1000 | 1000 | 0 to 3000 | ms | state.rs, DUST-SPEC §3.2 |
G + D | 2000 | 2000 | at least 2000 | ms | state.rs, DUST-SPEC §3.2 |
max_future_ms | 5000 | 1000 to 10,000 | ms | state.rs, DUST-SPEC §3.2 | |
fallback_after_ms | 2000 | cadence to 10,000 | ms | state.rs, DUST-SPEC §3.2 | |
cancel_hard_ms | 600,000 | 60,000 to 3,600,000 | ms | state.rs, DUST-SPEC §3.2 | |
max_hwm_slots | 3 | 3 | 1 to 10 | slots | state.rs, DUST-SPEC §3.2 |
exec_lookback_ms | 500 | 1000 | 200 to 3000 | ms | state.rs, DUST-SPEC §3.2 |
max_leverage | 1000 | 1 to 1000 | × leverage | ix_admin.rs | |
| feed id | BTC 1, ETH 2, SOL 6 | fixed at listing | ix_admin.rs |
the listed values come from the devnet verify output. the mainnet G, D and exec_lookback_ms: set at launch, from measurements.
the oracle quality gate
| name | shipped default | devnet listed | bound | unit | defined in |
|---|---|---|---|---|---|
min_publishers | BTC 21, ETH 19, SOL 10 | 1 to 64 | publishers | state.rs, DUST-SPEC §3.2 | |
conf_k_x10 | 30, which is k = 3.0 | 15 to 100 | tenths | state.rs, DUST-SPEC §3.2 | |
max_conf_cbp | 3000, which is 30 bp | 500 to 5000 | centi bp | state.rs, DUST-SPEC §3.2 | |
CONF_FLOOR_CBP | 300 | fixed | centi bp, 3 bp | state.rs, DUST-SPEC §3.2 | |
CONF_RING | 16 | fixed | samples | state.rs, DUST-SPEC §3.2 | |
CONF_MIN_SAMPLES | 5 | fixed | samples | state.rs, DUST-SPEC §3.2 |
mainnet min_publishers: BTC 21 and ETH 19 are the launch rule ceil(0.75 × median). SOL: set at launch.
Pyth Pro accounts and limits
| name | value | defined in |
|---|---|---|
PYTH_LAZER_PROGRAM | pytd2yyk641x7ak7mkaasSJVXh6YYZnC7wTmtgAyxPt | oracle.rs |
PYTH_LAZER_STORAGE | 3rdJbqfnagQ4yx9HXJViD4zc4xpiSqmFsKpPuSCQVyQL | oracle.rs |
ED25519_IX_INDEX | 0 | oracle.rs |
MAX_UPDATE_LEN | 512 bytes | oracle.rs |
MAX_PRICE | 10^15, which is $1,000,000 per unit | oracle.rs |
genesis and emission
| name | value | unit | defined in |
|---|---|---|---|
GEN_WINDOW_S, production | 3,600 | seconds, the minimum deposit window | math.rs, DUST-SPEC §3.3 |
GEN_WINDOW_S, devnet build | 600 | seconds | math.rs |
D0 | time weighted average balance over the window | micro USDC | math.rs, DUST-SPEC §9.1 |
F | max(2% × D0, 100,000,000,000) | micro USDC | math.rs, DUST-SPEC §9.1 |
C | max(4% × D0, 250,000,000,000) | micro USDC | math.rs, DUST-SPEC §9.1 |
S | max(D0, 5,000,000,000,000) | micro USDC | math.rs, DUST-SPEC §9.1 |
R0 | min(1000, 15,000,000,000 × 10^6 / (S + 8F)) | $DUST per $1 | math.rs, DUST-SPEC §9.1 |
SUPPLY_BUDGET_DUST | 15,000,000,000 | $DUST, a projection input | math.rs, DUST-SPEC §3.3 |
MIN_DISTRIBUTE_STAKE | 1,000,000 | ledger units, 1 $DUST | math.rs, DUST-SPEC §3.3 |
| reward cap bound | 250,000,000,000 to 100,000,000,000,000 | micro USDC | ix_admin.rs |
| default OI cap | max(10 × D0, 100,000,000,000) | micro USDC | ix_admin.rs, DUST-SPEC §3.1 |
| default DUST MODE exposure cap | D0 / 4 | micro USDC | ix_admin.rs, DUST-SPEC §3.1 |
OI_CAP_D0_MULT, OI_CAP_FLOOR | 20, 100,000,000,000 | cap bound max(20 × D0, floor) | state.rs |
| DUST MODE cap bound | max(2 × D0, 1) | micro USDC | ix_admin.rs |
devnet genesis: D0 = 360,054,794, so F = 100,000,000,000, C = 250,000,000,000, S = 5,000,000,000,000 and R0 = 1000. mainnet D0, F, C, S and R0: set at launch.
per wallet limits and DUST MODE rate
| name | value | unit | defined in |
|---|---|---|---|
DM_RATE_WINDOW_MS | 60,000 | ms, a fixed window | state.rs |
DEFAULT_DM_ROUNDS_WINDOW | 12 | rounds per window | state.rs |
| rounds per window, bound | 1 to 600 | rounds | state.rs |
DEFAULT_DM_LIVE_MARGIN_MULT | 4, times the max DUST MODE margin. $2,000 at launch | × | state.rs |
| live DUST MODE margin, bound | the minimum margin to 100,000,000,000 | micro USDC | state.rs |
DEFAULT_WALLET_NOTIONAL_MULT | 3, times the max notional. $3,000,000 at launch | × | state.rs |
| concurrent Core notional, bound | the max notional to 100,000,000,000,000 | micro USDC | state.rs |
DM_CELL_MASK_ALL | 0b111111 | six cells | state.rs |
| cell bit number | leverage index × 3 + horizon index | bit 0 to 5. leverage index 0 is 5000×, 1 is 10000×. horizon index 0, 1, 2 is 5 s, 15 s, 60 s | limits.rs |
devnet exchange state
| field | value | defined in |
|---|---|---|
dm_basis_bps | 10,000 and 10,000 | devnet verify output |
dust_mode_enabled | true | devnet verify output |
transfers_enabled | false, and there is no setter | devnet verify output, state.rs |
opens_enabled | true | devnet verify output |
min_margin | 5,000,000 | devnet verify output |
max_notional | 1,000,000,000,000 | devnet verify output |
max_dm_margin | 500,000,000 | devnet verify output |
max_dm_live_margin_wallet | 2,000,000,000 | devnet verify output |
max_dm_rounds_window | 12 | devnet verify output |
max_wallet_notional | 3,000,000,000,000 | devnet verify output |
default_oi_cap | 100,000,000,000 | devnet verify output |
| DUST MODE cap, each side | 720,109,588, which is 2 × D0 | devnet verify output |
from the devnet verify output.
event keys
| name | values | defined in |
|---|---|---|
ParamsChanged.key | 1 fees, 2 reward cap, 3 roles, 4 impact, 5 timing, 6 DUST MODE basis, 7 DUST MODE parameter grid, 8 oracle gate | events.rs |
RiskParamChanged.key | 1 min margin, 2 DUST MODE switch, 3 limits, 4 open interest caps, 5 DUST MODE caps, 6 delay | events.rs |
RiskParamChanged.inst | 255 for an exchange level value | events.rs |
set at launch
these mainnet values are not fixed yet:
- the program build hash and the mainnet addresses
- the mainnet keys: owner, pause guardian, risk keeper, dev recipient and the upgrade authority
D0,F,C,SandR0, which come from the deposit window- the mainnet
G,Dandexec_lookback_ms, which come from measurements min_publishersfor SOL- the impact values for SOL
- the DUST MODE cell values and the cell masks
- the referral tier thresholds. they are off chain. the owner sets each wallet's tier
