Mining and blockchain - novacoin-project/novacoin GitHub Wiki

Mining is a term referring to the generation of new blocks for Novacoin blockchain. It's required to provide confirmations for transactions and to protect the history of operations.

How is it supposed to work?

All miners have a copy of every unconfirmed valid transaction in own transactions pool. Normally mining process is performed in the four stages:

  1. Get a set of transactions from transactions pool;
  2. Calculate a merkle tree hash for this set of transactions;
  3. Create block header template and link it with this set of transactions using its merkle tree hash;
  4. Try to find suitable proof hash for block header created before.

Getting a proof is quite a difficult operation, the difficulty depends on the current number of participants. Each block header is linked to previous block header, so we have linked list of block headers, and a list consistency is guaranteed by difficulty. This linked list is also known as blockchain.

What can be used as a proof?

The only required property of proof is that it's extremely difficult to obtain, but very easy to check. There are a lot of proof concepts in existance, such as proof-of-work, proof-of-stake or proof-of-burn. Novacoin supports usage of stake or work to provide suitable proof for block header.