Share Commitments
Each share is committed to in the bitcoin coinbase for the header embedded in the shareblock header. The goal is twofold:
-
Each bitcoin PoW can be used to build a single share.
-
Each shareblock coinbase is unique, even if it generates shares for the same bitcoin block template.
The diagram below shows the fields in share that are committed to in the bitcoin coinbase. The commitment is placed in the bitcoin coinbase, which is accumulated with the merkle root from bitcoin header to get the bitcoin block hash. This results in the shareblock header’s fields indirectly committing into the bitcoin header and the bitcoin blockhash. This guarantees that a bitcoin blockhash' PoW can not be represented by more than one shareblock, guaranteeing the first requirement - that each PoW can be used to build only a single share.
By committing to the the bitcoin blockhash in shareblock coinbase, we are then guaranteed that each shareblock coinbase is unique. Even if the shareblock is generated for the same bitcoin block template, each bitcoin blockhash results in a unique coinbase. The bitcoin blockhash will be unique as the nonce will be unique each time.
The share commitment is checked as part of the share validation scheme.