Validator Account Management
Last updated
Last updated
In the Bifrost Network, there are several parameters related to time with which node operators need to be familiar. You must familiarize yourself with these parameters prior to account management.
Parameter | Value |
---|---|
Round duration | 6 hours |
Session duration | 15 minutes |
Bond less delay | 2 rounds (Approx. 12 hours) |
Leave candidates delay | 2 rounds (Approx. 12 hours) |
Validator node operators must deposit self-bonds through their stash accounts to operate the nodes. In some cases, the deposited BFC may be withdrawn, and additional deposits may need to be made. To perform these actions, node operators must utilize the administrator page provided by Polkadot which can be accessed via the following link.
Testnet | Mainnet |
---|---|
Upon accessing the link, a page similar to the image below will show up.
Upon successful access, you must register your stash and controller account that is currently being used for your validator node activities on the page. First, click on the "Add account" button located near the center of the page.
If the "Add account" button does not show up or as disabled, then access the "Settings" tab and set the "in-browser account creation" option to "Allow local in-browser account storage". This option will allow to store your accounts to your local web browser.
Click on the button to switch to the next page. Then, enter the secret key or mnemonic seed of the account in the input box, check the check box at the bottom, and click on the "Next" button to continue.
On the next page, you must enter the name and password of the account you wish to register. As the name of the account does not affect the system in any way and is visible only in your local environment, set it to a name that is easily recognizable. Also, as the password must be entered once for verification before transaction transmission through the polkadot.js app page, make sure to store it safely. Once you have entered all the information, click on the "Next" button to proceed to the next step.
On the next page, you can create a backup file for the account you wish to register. The backup file is in JSON format, and with this, you can restore your account if necessary by clicking on the "Restore JSON" button located in the center of the "Accounts" page. Clicking on the "Next" button closes the window and the backup file will be downloaded. Once all processes have been completed, you will be able to check that the registered account has been added to the "accounts" list.
All processes specified above must be performed once each for the stash account and controller account.
Validator node operators can access and manage their own self-bonds. This means that if you completely own the stash and controller accounts in use, you can make additional deposits or withdrawals.
In order to proceed with the additional deposit, your stash account must be registered on the polkadot.js app page in advance, and the account must hold enough BFC for the additional deposit you wish to make.
First, click on the "Developer" tab at the top and access the "Extrinsic" page.
When you move to the link, you will see the following page. Proceed with the following steps in order.
Select your own stash account.
Select the "bfcStaking" pallet.
Select the "candidateBondMore" extrinsic.
Enter the amount of BFC you want to deposit in Wei units. If you want to deposit 100 BFC, you must add 18 zeros to 100.
Click on the "Submit Transaction" button.
If you enter the account password and click on the "Sign and Submit" button at the bottom, the transaction will be sent and the additional deposit result will be immediately reflected.
The reflected result can be found on the next page.
To proceed with partial withdrawal, both your stash account and controller account must be registered on the polkadot.js app page in advance. The entire withdrawal process consists of two stages. First, you must perform the "Schedule Withdrawal" process with the controller account. At this time, even if the request is successfully processed, the withdrawal cannot be executed immediately. You must wait for a certain number of rounds. ("Bond less delay") If you have finished waiting, you must finally execute the "Execute withdrawal" process with your stash account to complete the actual withdrawal. All actions are performed on the "Extrinsic" page under the "Developer" tab.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "scheduleCandidateBondLess" extrinsic.
Enter the amount of BFC to be partially withdrawn in Wei units. If you want to withdraw 100 BFCs, you must add 18 zeros to 100.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
You can also cancel the withdrawal request made in advance. In the case of cancellation, calls can be made regardless of delays.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "cancelCandidateBondLess" extrinsic.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
Select your own stash account.
Select the "bfcStaking" pallet.
Select the "executeCandidateBondLess" extrinsic.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
If you wish to quit your validator activity and leave, your stash account and controller account must be registered on the polkadot.js app page in advance. If you choose to leave, all deposited self-bond will be returned to your stash account, and all nominations will also be returned to the nominators.
The entire process of exit consists of two steps, as with partial withdrawal. You must first perform the "Schedule Leave" process with the controller account. At this time, even if the request is successfully processed, exit cannot be immediately executed. You must wait for a certain number of rounds. ("Leave candidates delay") If you have finished waiting, you must finally perform the "Execute Leave" process with your stash account to complete the actual exit.
If a validator node operation is terminated without proceeding to exit, a penalty may be applied and some of your assets may be deducted. Therefore, be aware of this process to exit and guard your assets safely.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "scheduleLeaveCandidates" extrinsic.
Enter the current number of validators. If the value is greater than or equal to the current number of validators, it will operate normally.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
You can also cancel the request for leave in advance. In the case of cancellation, calls can be made regardless of the delay.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "cancelLeaveCandidates" extrinsic.
Enter the current number of validators. If the value is greater than or equal to the current number of validators, it will operate normally.
Click on the "Submit Transaction" button and send the transaction through password entry and signature.
Select your own stash account.
Select the "bfcStaking" pallet.
Select the "executeLeaveCandidates" extrinsic.
Enter the number of nominators nominated for yourself. If the value is greater than or equal to the current number of nominators, it operates normally.
Click on the "Submit Transaction" button and send the transaction through password entry and signature.
If you have finished executing the exit, you may completely shut down the validator node that was in operation.
The Bifrost Network provides Auto-Compounding functionality. This optional feature allows both validators and nominators to decide whether to receive their round rewards in their wallets ("Account") or to immediately add them to their stakes ("Staked").
The “Account” option receives round rewards paid in each round to the wallet you deposited. In this case, there is no change in one's self-bond, and the token paid can be used immediately in the wallet without a special lock.
The “Staked” option automatically makes an additional deposit immediately to your self-bond for the round reward you receive for each round. It is set to the default value of all network participants (validators + nominators).
Proceed with the following steps in order.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "setCandidateRewardDst" extrinsic.
Select the "Staked" or "Account" option.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
All validators are able to set a commission rate according to their tier.
Tier | Rate Range |
---|---|
Full Node | 0% ~ 100% (default: 50%) |
Basic Node | 0% ~ 20% (default: 10%) |
Proceed with the following steps in order.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "setValidatorCommission" extrinsic.
Enter the rate you want to change. For example, if you wish to change it to 60%, you must add 7 zeros to 60.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
If you wish to pause your validator activity for a certain period of time without unbonding your self-bonds, you can change your node status to offline. When switching to offline status, you should be familiar with the following.
Self-bonds and nominations are not withdrawn and will remain.
Additional deposits and partial withdrawals of your self-bond, and nominations will be possible.
You can leave the validator set only after switching back to online status.
You cannot be selected as an active validator during the round update.
When you change your status to offline while operating as an active validator, you will still be paid for your active share.
As the offline request is reflected after one session, at least one session must be kept online to prevent any penalties.
Proceed with the following steps in order.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "goOffline()" extrinsic.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
If a node in operation has switched to offline status, or has been removed from the round due to continuous inactivity without an offline request, the node must be switched back to online status to proceed with normal validator activity. If not, the validator will not be selected as an active validator.
Proceed with the following steps in order.
Select your own controller account.
Select the "bfcStaking" pallet.
Select the "goOnline()" extrinsic.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
It is possible to change the tier of the node in operation. When changing from the basic node to the full node, the following conditions must be satisfied.
Additional deposits must be made if the minimum required amount of self-bonds is not met.
A new Ethereum account is required for relayer operation.
A relayer must be operated after changing the tier.
Proceed with the following steps in order.
Select your own stash account.
Select the "bfcStaking" pallet.
Select the "setValidatorTier()" extrinsic.
If an additional deposit of self-bonds is required, enter the BFC amount in wei units in the more
parameter. Otherwise, enter 0.
Select the tier of the node to which you wish to change. (Select Full
or Basic
)
Select the relayer account when changing to a full node. If not, toggle the "include option" button located on the right to disabled.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
If the modification has successfully been processed, your tier will be updated as the one you have selected. But your node will still be operating as the previous tier until the current round ends.
Since controller accounts for each validator is public to the network due to validator activities, there could be a chance that an attacker exploits or takeover your account. Although, since validator accounts are divided to multiple accounts, the attacker won't be able to withdraw your self-bonds. But for future safety we suggest to let exposed controller accounts to be replaced. To do so, the following conditions must be satisfied.
A new controller account must be prepared contained with some funds for transaction payments. This new account will later be replaced from your previous account.
Double check if your previous account has any leftover funds. If so transfer to any other safe account.
Now to (re-)set your controller account, proceed with the following steps in order.
First, access to your tools
directory that was used to setup your validator node.
Execute the set_session_keys
CLI command to register a new set of on-chain session keys. At this point, the controllerPrivate
option must be your new accounts private key.
Now, access the polkadot.js web page and move on to the extrinsics tab. In prior, your new account must be registered to polkadot.js
Select your own stash account.
Select the "bfcStaking" pallet.
Select the "setController()" extrinsic.
Set the new
parameter to your new account.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
After the transaction has been successfully executed, the actual account replacement (state change) will be applied at the beginning of the next round.
In case of full node operators, your relayer account can be replaced. To do so, the following conditions must be satisfied.
A new relayer account must be prepared contained with enough funds for cross-chain actions. This new account will later be replaced from your previous account.
Double check if your previous account has any leftover funds. If so transfer to any other safe account.
Now to (re-)set your relayer account, proceed with the following steps in order.
First, access the polkadot.js web page and move on to the extrinsics tab. In prior, your new account must be registered to polkadot.js
Select your own controller account.
Select the "relayManager" pallet.
Select the "setRelayer()" extrinsic.
Set the new
parameter to your new account.
Click on the "Submit Transaction" button and send the transaction by entering your password and signing.
After the transaction has been successfully executed, the actual account replacement (state change) will be immediately applied. Due to the replacement, your running relayer program's account setup must be modified as well.