Hyperparameters
collateral_drain_ratio
Alpha of locked miner collateral released per alpha of miner incentive earned.
collateral_drain_ratio (call it k) sets how fast a miner earns back the
collateral locked at registration when the subnet uses a nonzero
collateral_lock_share.
Miners care because lock / k is the total incentive they must earn before
their collateral is fully withdrawable; owners tune it to control how long
miners stay collateralized — the security parameter for subnets whose scoring
can be gamed on short horizons.
How it works
Each tempo, when miner incentive is credited
(distribute_dividends_and_incentives
in pallets/subtensor/src/coinbase/run_coinbase.rs),
settle_miner_collateral
releases
released = min(locked − min_locked, k × incentive)from the hotkey's lock back to withdrawable stake, where min_locked is the
miner's optional self-maintained floor (zero unless set via
set_min_collateral; while the lock is under the floor, incentive is
captured into the lock instead). The release is keyed to
the registered hotkey even when the emission itself is redirected by
auto-stake. At k = 1 (the default) collateral releases one-for-one with
earned incentive; at k = 0.5 a miner must earn two alpha per alpha
released; at k = 2 half the lock's worth of work releases all of it.
The subnet value is stored in
CollateralDrainRatio as a
U64F64 fixed-point number, but each miner's effective ratio is snapshot
into their collateral entry at registration
(MinerCollateralState):
owner changes apply to future registrations only and can never slow (or
speed) the drain of standing collateral. The owner-set extrinsic
(sudo_set_collateral_drain_ratio
in pallets/admin-utils/src/lib.rs) requires 0 < k ≤ 10
(MaxCollateralDrainRatio);
out-of-range values fail with
CollateralDrainRatioOutOfBounds.
Zero is excluded by design: with no exit path for collateral, k = 0 would
make the lock permanently unrecoverable — a burn with extra steps.
The deterrence math, briefly: an adversary who plans to farm emissions and
abandon the hotkey must collect roughly T / (1 + k) (T = registration
price) before validators stop scoring them, just to break even. Lower k
raises that bar; see the
worked example.
Reading and setting
btcli sudo get --netuid N --name collateral_drain_ratioFixed-point decimal; owner or root, rate-limited, outside the weights window:
btcli sudo set --netuid N --name collateral_drain_ratio --value 0.5Common settings: 1.0 (default, earn-back at par), 0.2–0.5 (slow release for long-horizon or gameable-score subnets), 2.0 (fast release where the entry gate matters more than ongoing lockup).
Related
collateral_lock_share,
burn_half_life,
Registration collateral guide