Token Staking Process
This document suggests a process for submitting a staking request through coordination between a node operator and an independent custody provider.
- The node operator generates the following private keys that the staked node will use to authenticate and identify itself within the Flow network:
- Staking Key
- Networking Key
- Custody provider creates a new Flow account that will hold the initial tokens to be staked and (optionally) receive future reward payments.
- The custody provider and their client(s) are the only parties authorized to transfer tokens out of this account.
- The node operator deploys a
StakingHelpercontract initialized with the following parameters:
- Staking Public Key
- Staking Key Signature
- Networking Public Key
- Networking Key Signature
- Staking Account Address
- Rewards Account Address (can be the same as Staking Account Address)
StakingHelperis an auditable contract that is only authorized to initiate a staking request to the system-level
FlowStakingcontract. This contract will temporarily hold the staking deposit (tokens to be staked held by custody provider) in escrow before submitting a staking request, and these funds cannot be moved out of the contract for any other purpose. The only exception to this restriction is the
abortmethod, which returns the escrowed funds to the initial depositor.
- The custody provider transfers
Xtokens from the staking account to the address of the
- The node operator submits a transaction that calls the
StakingHelper.submitmethod, which sends the staking public keys, signatures, rewards address and token deposit to the system-level