5

As far I understand correctly, the objective is to find a nonce which creates a hash with the specified difficulty. The current difficulty being around 1.4 trillion. If that is so, why doesn't a machine which runs at 14 TH/s calculate the nonce in under a second?

  • 1
    The "difficulty" number of 1.4 trillion does not directly correspond to "number of hashes per second". – Greg Hewgill Nov 7 '17 at 3:09
4

As explained here in the Bitcoin Wiki, the formula for using the Difficulty to determine the expected time to solve a block is:

time = difficulty * 2**32 / hashrate

Currently, the difficulty is 1,452,839,779,146 so a 14TH/s ASIC miner would be expected to, on average, solve a block with

time = 1,452,839,779,146 * 4,294,967,296 / 14,000,000,000,000

which gives a result of 445707095 seconds, which is about 14 yrs, if I've done my calculations correctly.

To double check that the technique works:

Using the current approx network hashrate (according to blockchain.info) of 10,183,000TH/s, and the same difficulty as indicated above, the formula gives a result of 612s to solve a block, which is the expected result of approx 10 mins.

  • If it's such a massive number, shouldn't the average nonce be higher? I just took a look at the last block and the nonce was 2075812744. At 14TH/s, that would have been found almost immediately? – Daniel Gee Nov 7 '17 at 3:49
  • 1
    The nonce is a 32 bit unsigned integer so the maximum value a nonce can be is 4294967296. However miners do not just increment the nonce; they also do things to transactions within the block to change the merkle root in addition to incrementing the nonce. So there are way more things than just the nonces that they can hash to find a valid block hash. – Andrew Chow Nov 7 '17 at 5:04
  • 1
    @DanielGee The person who actually found that block no doubt found the nonce less than a second after they started searching for a nonce to complete that particular block. But miners try very, very large numbers of blocks before they find one that works. Until you find a nonce that works for a block, you have no way to know whether or not one exists. That's why you try every nonce, then start over trying nonces with a different block. – David Schwartz Nov 7 '17 at 21:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for?Browse other questions tagged or ask your own question.