Cold Staking is the process of staking using a key that does not have spending rights, thus allowing the participation in the staking with cold stored coins. Users can refer to The Ultimate Guide to Staking for a guide on how to setup a node together with NavCash and optionally the Ledger Hardware wallet. If you are a SaaS (Staking as a Service) provider, please read this page.
Setting up a staking node
The first step is to run a staking node. Please refer to How to get NavCoin Core for detailed instructions on how to set up a node. A staking node is no other than a NavCoin Core node with the flag
staking set to
1. This is the default setting if none is specified. See Passing launch options to the node to learn how to pass a setting to the daemon. This node has to stay online to participate in staking.
Once this node is running, you need to get a public address
PK_Staking whose private key is owned by the node. This is possible using the RPC command
getnewaddress or in the
Receive tab of the GUI wallet.
Generating the spending key
Second step is to generate a spending key
PK_Spending. It is recommended to generate this key using an off-line enviroment for maximum security. This key will only come online whenever the coins are going to be spent, namely, sent out of the Cold Staking.
Recommended methods for generating an offline key is running an instance of NavCoin Core or using NavPaper in an airgapped device.
Sending coins to Cold Staking (v1)
Using Cold Staking v1,
PK_Staking will hold both the staking and voting rights of the coins. If you are running a staking node as a SaaS (Staking as a Service), because you are a staking pool or exchange, and you won’t participate in the DAO votings or allow your delegators to set up individual votes or allow your delegators to specify their own voting address, you need to set the
excludevote flag to
1, in order to exclude your blocks from the DAO quorum.
To obtain a Cold Staking v1 address, you can use the following RPC command:
getcoldstakingaddress <PK_Staking> <PK_Spending>
The output will be the Cold Staking address, where you will able to send the coins to cold stake. If you do not use RPC commands or a compatible library for the transfer of coins, please refer to Pay To Cold Staking (P2CS) to learn how to build the standard script for P2CS.
Sending coins to Cold Staking (v2)
This is the preferred mode for SaaS (Staking as a Service) providers, or if you are an user and want to be able to vote from a light wallet like NavCash.
For setting Cold Staking v2, you will need a third address
PK_Voting. If you are a SaaS provider, you must get this address from your delegator. If you use NavCash, you can get this address creating a
To obtain a Cold Staking v2 address, you can use the following RPC command:
getcoldstakingaddress <PK_Staking> <PK_Spending> <PK_Voting>
The output will be the Cold Staking address, where you will able to send the coins to cold stake while having the voting rights delegated to
PK_Voting. If you do not use RPC commands or a compatible library for the transfer of coins, please refer to Pay To Cold Staking v2 (P2CS2) to learn how to build the standard script for P2CS2.
Withdrawing coins from Cold Staking
You can normally withdraw coins from a Cold Staking address using the normal methods in a wallet which holds the private key of
PK_Spending. Please consider additional security measures when bringing online the
PK_Spending private key.