Running a Node
Anyone can become a validator or nominator by depositing BFC into the BIFROST Network. Validators generate new blocks and verify blocks generated by other validators in the set. Active validators receive rewards at the end of each round for performing these tasks correctly. In every round of block generation, validator candidates are ranked based on the sum of their self-bonded stake and delegated deposits from their nominators. The top n candidates in the ranking become active validators that can participate in the consensus process in the next round to earn rewards.
Nodes of the BIFROST Network are similar to typical Substrate-based nodes, but the interoperability nature of the network also requires some additional features. Thus, the BIFROST Network consists of two-tier nodes:
Basic node of the first tier plays the role of block producing and acts as an archive node. Basic nodes are typical Substrate-based nodes.
Full-node of the second tier has the features of the basic node and additionally plays the role of a relayer that interconnects blockchains.
Two types of accounts are required to run a validator (both full node and basic node), as well as to become a nominator – "Controller" and "Stash" accounts. They are distinguished by their intended use, not by an underlying cryptographic difference.
The controller key is a semi-online key that will be in the direct control of a user and used to submit manual extrinsics. For validators or nominators, this means that the controller key will be used to start or stop validating or nominating. Controller keys should hold some BFC to pay for fees, but they should not be used to hold huge amounts or life savings. Since they will be exposed to the internet with relative frequency, they should be treated carefully and occasionally replaced with new ones.
The stash key is a key that will, in most cases, be a cold wallet, existing on a piece of paper in a safe or protected by layers of hardware security. It should rarely, if ever, be exposed to the internet or used to submit extrinsics. The stash key is intended to hold large amounts of funds. It should be thought of as a savings account at a bank, which is ideally only ever touched in urgent conditions. Or, perhaps a more apt metaphor is to think of it as buried treasure, hidden on some random island and only known by the pirate who originally hid it.
Since the stash key is kept offline, it must be set to have its funds bonded to a particular controller. For non-spending actions, the controller has the funds of the stash behind it. For example, in nominating, staking, or voting, the controller can indicate its preference with the weight of the stash. It will never be able to actually move or claim the funds in the stash key. However, if someone does obtain your controller key, they could use it for slashable behavior, so you should still protect it and change it regularly.