Lock & Conviction

Staking

Time-locked stake builds conviction weight that drives subnet ownership and owner-cut allocation.

Click items to navigate to their reference pages.

The Big Picture

Lock & Conviction is how Bittensor turns time-committed alpha into governance weight. Where liquid stake captures current preference, conviction captures sustained commitment. The longer someone holds alpha locked on a subnet, the more weight they accrue toward subnet ownership and toward the owner's cut of subnet emissions. Move_lock keeps the commitment intact while switching validators; set_perpetual_lock opts out of decay for maximum sustained weight.

Use Cases

  • Subnet owners build OwnerLock to protect ownership against challengers
  • Stakers signal long-term alignment with a validator on a specific subnet
  • Validators attract conviction-bearing stake to grow their share of owner-cut allocation
  • Indexers compute conviction tallies for the next ownership boundary

Locking commits alpha stake on a (coldkey, subnet, hotkey) tuple for time. Locked alpha cannot be unstaked until it decays via UnlockRate. While locked, the stake accrues conviction at the MaturityRate. Conviction is the time-weighted measure of commitment; it feeds two outcomes: subnet ownership (whoever accumulates the most owner-side conviction can take ownership) and subnet owner-cut allocation (a share of the subnet emission routes to the owner hotkey based on conviction weight). Locks default to decaying, but a coldkey can flip its own lock to perpetual via set_perpetual_lock so it never erodes through time.

Triggers

  • lock_stake call (new lock or top-up)
  • move_lock call (switch destination hotkey)
  • set_perpetual_lock call (toggle decay)
  • Continuous decay every block via UnlockRate

Inputs (11)

ItemTypeRole
lock_stake SubtensorModulecallCreate or top up a lock on (coldkey, subnet, hotkey)
move_lock SubtensorModulecallReattribute an existing lock to a different hotkey
set_perpetual_lock SubtensorModulecallFlip a lock between decaying and perpetual
Lock SubtensorModulestoragePer-coldkey per-subnet per-hotkey lock state
HotkeyLock SubtensorModulestorageAggregate locked alpha per hotkey per subnet
OwnerLock SubtensorModulestorageTotal owner-side lock per subnet
DecayingLock SubtensorModulestoragePer-coldkey perpetual-lock flag per subnet
DecayingHotkeyLock SubtensorModulestorageDecaying portion of HotkeyLock
DecayingOwnerLock SubtensorModulestorageDecaying portion of OwnerLock
MaturityRate SubtensorModulestorageConviction accrual timescale
UnlockRate SubtensorModulestorageLocked-mass decay timescale

Outputs (5)

ItemTypeRole
StakeLocked SubtensorModuleeventLock created or topped up
StakeUnlocked SubtensorModuleeventLocked alpha decayed back to liquid stake
LockMoved SubtensorModuleeventLock reattributed to a new hotkey
PerpetualLockUpdated SubtensorModuleeventPerpetual-lock flag toggled
SubnetOwnerChanged SubtensorModuleeventConviction shift transferred subnet ownership

Source Files

pallets/subtensor/src/macros/dispatches.rs
lock_stake()move_lock()set_perpetual_lock()

Version History

v411 Lock / Conviction system introduced