# Delegations

Each chain has its own staking semantics and transactions required to get started. The sections below provide a reference for integrators.

{% hint style="info" %}
Don't see the chain you are interested in? It probably requires the [Node Provisioning API](https://staked.gitbook.io/staked/staking-api/node-provisioning-api)
{% endhint %}

## Tezos

**Staking Mechanics**

* No Lock-Up (delegated funds can always be reclaimed)
* Delegated funds start accruing rewards after 7 cycles (21 days)
* After the 7 cycles, rewards are issued every cycle (3 days), locked for 5 cycles (15 days), then paid to the baker (Staked), then paid to delegators

Staking on Tezos can be done through a single tz account. After the initial delegation, all funds associated with the tz account will be staked. This means a delegation transaction is only required once, since funds sent to the tz account in the future are automatically staked.

**Set delegate to Staked**

tezos-client commands: [reference documentation](http://tezos.gitlab.io/api/cli-commands.html)

`set delegate for src to mgr [--fee <amount>] [-D --dry-run] [--verbose-signing] [--minimal-fees <amount>] [--minimal-nanotez-per-byte <amount>] [--minimal-nanotez-per-gas-unit <amount>] [--force-low-fee] [--fee-cap <amount>] [--burn-cap <amount>]`

`src` **=** your tz address `mgr` = Staked baker address = tz1RCFbB9GpALpsZtu6J58sb74dm8qe6XBzv

## Tron

**Staking Mechanics**

* Delegated funds are frozen (locked-up) for 3 days after staking transactions

Staking on Tron requires two transactions, detailed below.&#x20;

**Freeze Balance**

On Tron, funds must be frozen before they can be staked. A freezing action moves tokens from the account balance into the frozen funds section of the account. Funds can be unfrozen 3 days after the latest freezing transaction.

Commands assume use of the Tron wallet-cli: [reference documentation](https://tronprotocol.github.io/documentation-en/clients/wallet-cli/).

`freezebalance freeze_balance days_to_freeze [ResourceCode:0 BANDWIDTH, 1 ENERGY]`

`freeze_balance` **=** amount of TRX to freeze, denominated in sun (1,000,000 sun = 1 TRX)                     `days_to_freeze` = 3  `ResourceCode` = 1

```
// Example Command
freezeBalance 10000000 3 1
```

**Stake Frozen Balance**

After freezing TRX, staking is accomplished by voting for a super representative (run by Staked).&#x20;

Commands assume use of the Tron wallet-cli: [reference documentation](https://tronprotocol.github.io/documentation-en/clients/wallet-cli/).

`votewitness staked_address amount_frozen`

`staked_address` **=** TBsyKdNsCKNXLgvneeUJ3rbXgWSgk6paTM                                                                         `amount_frozen` = amount of frozen TRX to stake, denominated in TRX

```
// Example Command (building on previous freeze command)
votewitness TBsyKdNsCKNXLgvneeUJ3rbXgWSgk6paTM 10
```

**Unfreeze Balance**

To convert frozen TRX back into the normal balance of an account, an unfreeze command must be run.

Commands assume use of the Tron wallet-cli: [reference documentation](https://tronprotocol.github.io/documentation-en/clients/wallet-cli/).

`unFreezeBalance`

## Polkadot

#### Staking Mechanics

* Bonded funds are locked up for 28 days

#### **Staking Definitions**

* [stash](https://wiki.polkadot.network/docs/learn-staking#accounts) account - intended to be a cold wallet
* [controller](https://wiki.polkadot.network/docs/learn-staking#accounts) account - intended to be a hot wallet for staking transactions
* [proxy](https://wiki.polkadot.network/docs/learn-proxies#staking-proxies) account - any account delegated proxy access to

**Bond to a Controller**

[Bonding](https://polkadot.js.org/docs/substrate/extrinsics/#bondcontroller-lookupsource-value-compactbalanceof-payee-rewarddestination) is a transaction that associates a number of DOTs with a controller address.

* sent & signed from a stash account &#x20;
* a stash account can also be used as the controller account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#bondcontroller-lookupsource-value-compactbalanceof-payee-rewarddestination>

**Nominate Validators**

[Nominating](https://polkadot.js.org/docs/substrate/extrinsics/#nominatetargets-veclookupsource) is a transaction that stakes a controller's bonded DOTs to targeted validators.

* sent & signed from a controller account
* the validators are a list of validators run by Staked

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics#nominatetargets-veclookupsource>

#### Bonding Additional Stake

After initially bonding to a controller, additional funds in the stash account may want to be staked. To add stake - after the initial bond transaction - requires a [bondExtra](https://polkadot.js.org/docs/substrate/extrinsics#bondextramax_additional-compactbalanceof) transaction sent & signed from the stash account.

* sent & signed from a stash account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#bondextramax_additional-compactbalanceof>

#### Kickoff Unbonding Period

[Unbonding](https://polkadot.js.org/docs/substrate/extrinsics/#unbondvalue-compactbalanceof) is a transaction that schedules a portion (or all) of the bonded amount to unbond, and kicks off the 28 day unbonding period.

* sent & signed from a controller account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#unbondvalue-compactbalanceof>

#### Withdraw Unbonded

[Withdrawing unbonded](https://polkadot.js.org/docs/substrate/extrinsics/#withdrawunbondednum_slashing_spans-u32) is a transaction that moves the unbonded amount (assuming it is after the unbonding period) into the freeBalance of a stash account.

* sent & signed from a controller account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#withdrawunbondednum_slashing_spans-u32>

## Kusama

#### Staking Mechanics

* Bonded funds are locked up for 8 days

#### **Staking Definitions**

* [stash](https://wiki.polkadot.network/docs/learn-staking#accounts) account - intended to be a cold wallet
* [controller](https://wiki.polkadot.network/docs/learn-staking#accounts) account - intended to be a hot wallet for staking transactions
* [proxy](https://wiki.polkadot.network/docs/learn-proxies#staking-proxies) account - any account delegated proxy access to

**Bond to a Controller**

[Bonding](https://polkadot.js.org/docs/substrate/extrinsics/#bondcontroller-lookupsource-value-compactbalanceof-payee-rewarddestination) is a transaction that associates a number of KSMs with a controller address.

* sent & signed from a stash account &#x20;
* a stash account can also be used as the controller account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#bondcontroller-lookupsource-value-compactbalanceof-payee-rewarddestination>

**Nominate Validators**

[Nominating](https://polkadot.js.org/docs/substrate/extrinsics/#nominatetargets-veclookupsource) is a transaction that stakes a controller's bonded KSMs to targeted validators.

* sent & signed from a controller account
* the validators are a list of validators run by Staked

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics#nominatetargets-veclookupsource>

#### Bonding Additional Stake

After initially bonding to a controller, additional funds in the stash account may want to be staked. To add stake - after the initial bond transaction - requires a [bondExtra](https://polkadot.js.org/docs/substrate/extrinsics#bondextramax_additional-compactbalanceof) transaction sent & signed from the stash account.

* sent & signed from a stash account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#bondextramax_additional-compactbalanceof>

#### Kickoff Unbonding Period

[Unbonding](https://polkadot.js.org/docs/substrate/extrinsics/#unbondvalue-compactbalanceof) is a transaction that schedules a portion (or all) of the bonded amount to unbond, and kicks off the 8 day unbonding period.

* sent & signed from a controller account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#unbondvalue-compactbalanceof>

#### Withdraw Unbonded

[Withdrawing unbonded](https://polkadot.js.org/docs/substrate/extrinsics/#withdrawunbondednum_slashing_spans-u32) is a transaction that moves the unbonded amount (assuming it is after the unbonding period) into the freeBalance of a stash account.

* sent & signed from a controller account

Reference Documentation: <https://polkadot.js.org/docs/substrate/extrinsics/#withdrawunbondednum_slashing_spans-u32>
