Nonce values & network difficulty

What is a nonce? A nonce is a piece of information in each block. Here’s a peek into some of the information contained in each block:

{'block_size': 104,

'depth': 0,

'difficulty': 107604872,

'hash': 'd6fa3fb6a81366ceba5fee4418582e473a6260f2c760d03bc9ea73049ba030ab',

'height': 559391,

'major_version': 8,

'minor_version': 8,

'nonce': 9778760,

'num_txes': 0,

'orphan_status': False,

'prev_hash': 'c4addc8cc24a25791176d2afdb8eec003eded05d1c97ef5dd7e4d15c9c2897a5',

'reward': 7299486622799,

'timestamp': 1560405647,

'uncle_status': False,

'weight': 107604872}

Miner’s create new blocks by running a cryptographic hash function over: the previous block’s hash, hashes from unconfirmed transactions on the network (you can see these unconfirmed txes live here), a hash for the miner’s reward, and a few other pieces of information.

Together with this input information, an arbitrary number called a nonce is thrown in to increase mining difficulty. Multiple nonces may satisfy the hash function, but since they are scattered from 0 to ~4.3 billion, any one of them takes a while to find.

Although valid nonces are evenly distributed over the sample space, mining software does not have to search the sample space randomly. Because of this, we should see patterns in nonce values from block to block which are caused by the search algorithms used in mining software. When these patterns change, it is an indication of changes to popular mining software.

This is how we can potentially detect the presence of ASICs from nonce values.