THORChain

Time factors

Protocol timeHuman readable time

Protocol time 1

Block

6 seconds

Protocol time 2

Churn (= 43,200 blocks)

3 days

First reward delay

1 churn

3 days

Reward frequency

Every churn

3 days

Unbonding period

N/A

-

Lifecycle

Must know before staking

Minimum stake amount

Partial stake changes

Partial reward withdrawal

Compounding

Penalty

Slashing

Equivocation - 5% of stake Unauthorized transaction - 1.5x transaction value

  • Limited delegations. The protocol does not support unlimited delegations. Validators can receive delegations from up to 6 addresses. The protocol expects this to only occur between trusted relationships.

Advanced topics

General

  • Churn cycle. The validator set can only change at the end of each churn cycle. Up to 1/3 of the active validators can exit and up to 2 new validators can join.

  • Mimir governance. The protocol has preset genesis constants that can be overwritten through Mimir governance. Only validators are able to vote on these parameter changes.

Rewards

  • Rewards come from the reserve and liquidity fees.

    • Reserve. The protocol maintains a reserve created at genesis that is dedicated to incentivizing liquidity providers and stakers. The reserve also accrues all transaction fees, penalties and slashed amounts. A portion of the reserve is constantly paid as rewards to both

      • blockRewards=reserve/emissionCurveblockRewards = reserve / emissionCurve are paid to liquidity providers and stakers. emissionCurveemissionCurve at time of writing is 8.

    • Liquidity fees. Liquidity pools of the protocol accrue liquidity fees that are provided as rewards to liquidity providers and stakers.

    • Rewards coming from the reserve and liquidity fees get split between liquidity providers and stakers using the following formula.

      • stakerRewards=(1shareFactor)blockRewardsstakerRewards = (1 - shareFactor) * blockRewards are paid to stakers. The rest is paid to liquidity providers.

        • shareFactor=(totalStakedtotalProvidedLiqiudty)/(totalStaked+totalProvidedLiqiudty/incentiveCurve).shareFactor = (totalStaked - totalProvidedLiqiudty) / (totalStaked + totalProvidedLiqiudty/incentiveCurve). incentiveCurveincentiveCurve at time of writing is 100.

  • Block units. The protocol keeps track of the number of blocks that a validator has been active for. At the end of each churn, the reward amount is calculated by taking accrued block units into account and is added to a validator’s stake.

  • Factors that impact realized rewards.

    • Any penalties incurred will deduct block units and affect rewards received by a validator.

Risks

  • Penalty.

    • A validator that fails to observe transactions for all supported chains will have 2 block units deducted.

    • A validator that does not sign outbound transactions when requested will have 600 block units deducted.

  • Slashing.

    • A validator that signs two different blocks will be slashed. The slashed validator will lose 5% of their stake.

    • A validator that sends funds without authorization will be slashed. The offending validator will have 1.5x of the value of the funds sent deducted from their stake.

Validators

Total validator cap

120

Validator requirements

300,000 THOR

  • Validator cap and bond requirements have been overwritten by the Mimir governance process. The protocol targets to have 100 validators and a 1,000,000 THOR bond requirement in the long run.

  • Up to 2 new validators can join every churn period. If multiple validators are waiting to join, the protocol chooses 2 new validators with the most stake.

Resources

Last updated