Mining on the Züs Blockchain
We first review some key terms related to mining. A round is the process of producing a single block, divided into one or more subrounds. In general, a block is produced in a single subround for all of the miners. However, if the process times out for a miner, the process restarts and a new subround begins.
The two major entities involved are the miners and the sharders; the miners are responsible for the production and verification of blocks, whereas the sharders store the blocks. Miners that are currently taking part in block production are referred to as being in the active set. Periodically, there is a view change round1 , which produces a magic block defining the miners and sharders that will become the new active set for the following view change. The miners that have been selected to start at the next view change are referred to as the incoming miners or as the DKG miners, referring to the distributed key generation process outlined in View Change and Distributed Key Generation. Every round, certain miners are selected as the generators responsible for creating the block. There is a priority to the generators, so that the second generator’s block is only used if the first generator fails to produce a block. All miners serve as verifiers, who replay the generators’ blocks to ensure they are valid and then produce signed verification tickets as their guarantee that the block is valid. The miners then tally the votes from all verifiers; once the block has received sufficient votes, the miners send out a notarization including the verification tickets received from other miners. Miners are expected to store the state of the blockchain and a few recent blocks, but are not expected to store the full blockchain history. The state of the blockchain is stored as a Merkle-Patricia Trie (MPT). In contrast to miners, sharders do not participate in producing or voting for blocks, but are tasked with long-term storage of the blocks. Note that an individual sharder does not need to store all blocks, but only the subset of blocks assigned to them. Similarly, sharders may opt to write older, infrequently requested blocks to a hard disk. More recent blocks may be cached following an LRU scheme(However, for our initial launch, all sharders receive all the blocks and store the entire history). This design allows sharders to handle the large number of blocks produced for the blockchain.