3

What is the minimum energy (or CPU operations) required for someone to confirm one block on their own, to launch a double-spend attack?

How can I calculate this from the current difficulty or hashrate?

1
  • 1
    What do you mean by "confirm"? You mean confirm that it's valid given the block? And what does that have to do with the difficulty or hashrate? Do you mean create a block in the first place? In which case, what do you mean by "on one's own"? Mar 18, 2015 at 20:59

2 Answers 2

3

There is no minimum. In theory, you could find a valid block on your very first attempt. The best we can do is an average.

Here's the average energy required to find one valid block using CPU mining:

average energy required = difficulty * 232 / 2*10^6 * joules

Or, at current difficulty, 1.018×10^14 joules.

Explanation:

difficulty * 232

The average number of hashes to find a block.

2*10^6 * joules

According to the Bitcoin wiki, the typical mining efficiency for CPUs is 2 Mhash/J.

1
  • 2
    As this is roughly 2.8 million USD worth of electricity at typical prices, this should give some indication as to why CPU mining is not considered feasible these days. Mar 19, 2015 at 4:40
3

Here is how to compute this in general. I am intentionally not going to give an example using current numbers, since (a) it will instantly be obsolete, and (b) it will encourage people to ask for an updated answer, rather than learning to work it out for themselves.

  • Determine the current network difficulty. Google "bitcoin difficulty" for the current figure. Call it D.

  • Multiply D by 2^32, which is about 4.3e9. Call this new number H. This represents the average number of hashes needed to mine one block.

  • Look up the hashes per unit energy for current mining hardware. Check https://en.bitcoin.it/wiki/Mining_hardware_comparison for the device with the highest number in the Mhash/J column. Multiply this Mhash/J number by 1 million (1e6) to determine the number of hashes per joule performed by this hardware. Call this number E.

  • Divide H by E. This gives you the number of joules of energy needed to mine one block.

  • If you would prefer to measure energy in kilowatt-hours (a typical billing unit for electric utilities), then divide the previous number by 3.6e6.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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