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
    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"? – David Schwartz Mar 18 '15 at 20:59
  • Edited my question. – user1009013 Mar 18 '15 at 21:23

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.

  • 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. – Nate Eldredge Mar 19 '15 at 4:40

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 acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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