> For the complete documentation index, see [llms.txt](https://docs.hypertensor.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hypertensor.org/network/subnet-node/staking.md).

# Staking

All staking functionality must be called by the coldkey of the subnet node.

## Add To Stake

```rust
pub fn add_to_stake(
    origin: OriginFor<T>, 
    subnet_id: u32,
    subnet_node_id: u32,
    hotkey: T::AccountId,
    stake_to_be_added: u128,
)
```

## Remove Stake

When removing stake, the balance removed is put into the unbonding ledger for the length of the stake cooldown epochs. After the balance can then be claimed by calling `claim_unbondings`.

Nodes can remove their stake balance up to the minimum required stake balance for the subnet. If the caller is no longer a node in the subnet, it can remove the full balance.

```rust
pub fn remove_stake(
    origin: OriginFor<T>, 
    subnet_id: u32, 
    hotkey: T::AccountId,
    stake_to_be_removed: u128
)
```
