Skip to main content

Multistaking

Realio Network extends the standard Cosmos SDK staking module with multistaking: instead of a single native staking token, the network can be secured by bonding several different assets side by side.

The 3 stakeable assets

AssetTypeDenom / how it's identifiedDecimals
RIONative Cosmos coinario18
RSTNative Cosmos coinarst18
DSTRXERC-20 (Districts token)ERC-20 contract address on Realio Network18

Only governance can add, re-weight, or remove a stakeable asset — through an AddMultiStakingCoinProposal for a native coin, or an AddMultiStakingEVMCoinProposal for an ERC-20 token such as DSTRX. To see the exact live list of accepted assets and their current weights, run:

realio-networkd query multi-staking coin-infos

How it works

  • One asset per validator. Each validator commits to a single bondable asset when it's created — a validator created with RIO can only ever be delegated RIO. To stake RST or DSTRX you need to find (or run) a validator that was set up to accept that specific asset.
  • It wraps x/staking, it doesn't replace it. When you delegate a multistaking coin, the module locks it and mints an internal "bond coin" — using a governance-set bond weight — which is what actually gets delegated through the standard Cosmos SDK x/staking module. Undelegating reverses the process: the bond coin is burned and your original asset is released once the unbonding period completes.
  • Everything else is standard staking. Unbonding periods, redelegation, slashing, commissions and rewards all work exactly like regular Cosmos SDK staking — see the Validator FAQ and Delegator FAQ.

Staking a native coin (RIO / RST)

Native multistaking coins use the regular staking commands, e.g. to delegate RIO:

realio-networkd tx staking delegate <validator-addr> 1000000000000000000ario --from <key_name>

(Substitute arst to delegate RST instead.) This is exactly the flow already described in the validator setup guide.

Staking an ERC-20 (DSTRX)

ERC-20 multistaking coins go through the multi-staking module's -evm commands instead, since the token has to be locked and converted before it can be delegated through x/staking:

# Create a validator that accepts an ERC-20 asset (e.g. DSTRX)
realio-networkd tx multi-staking create-evm-validator <path/to/validator.json> --from <key_name>

# Delegate DSTRX to a validator
realio-networkd tx multi-staking delegate-evm <validator-addr> <dstrx-contract-address> <amount> --from <key_name>

# Redelegate
realio-networkd tx multi-staking redelegate-evm <src-validator-addr> <dst-validator-addr> <dstrx-contract-address> <amount> --from <key_name>

# Undelegate
realio-networkd tx multi-staking unbond-evm <validator-addr> <dstrx-contract-address> <amount> --from <key_name>

# Cancel an unbonding in progress
realio-networkd tx multi-staking cancel-unbond-evm <validator-addr> <dstrx-contract-address> <amount> <creation-height> --from <key_name>
tip

You can look up the DSTRX contract address registered on Realio Network with realio-networkd query multi-staking coin-infos, or on the block explorer.

The same operations are available to smart contracts through the Multistaking precompile (0x0000000000000000000000000000000000000900) — see Precompiled Contracts.

Further reading