I'm curious about algorithmic speed-ups to Bitcoin mining instead of hardware improvements.
I know to collect a mining reward you have to calculate a SHA256 hash of a block of transactions (or a block header -- I can't remember which) combined with a nonce. This hash must be below a certain value, and this value becomes smaller over time so that there's a lower chance of finding a nonce that satisfies the inequality.
I know mathematically, it's essentially impossible to find collisions or figure out some data that produces a particular hash, but what I wonder is whether it is possible to figure out some technique to speed up the hash calculation.
For instance, you have SHA256(nonce1 + block data). That doesn't work, so you try a new nonce: SHA256(nonce2 + block data). It seems to me that because there is a lot of redundant initial data used within the calculation (same block data every time) that there might be a way to exploit this and speed up the calculation of all future attempts. If this was this case, you'd have a huge advantage over all the people starting each new calculation from scratch.
Another option would be to figure out a way to compute SHA256 more quickly than is currently done. I know there's incremental speed-up techniques that are figured out from time to time, but what are the chances of discovering a vast speed-up?
Any cryptographers here? What is the feasibility of either of these options?
The obvious improvements have been done a long time ago (there are tens of millions of dollars to be gained here), and the current state of the art continues to spend tremendous effort pushing out every incremental gain they can. Most of the innovation is done in hardware implementations at the moment, because if you're running a software algorithm to find the hash you've already lost.
Solving a SHA256 hash for a particular value would require breaking the hash in some currently unknown way. However, looking at how past hash algorithms have fared, it seems likely this will eventually happen.
To my knowledge, all the possible algorithmic optimizations have been developed and implemented since 2010 or 2011. Once you have as minimal a SHA256 implementation as possible, combined with retaining parts of the state for further calculation (as you describe), you can't really make it much faster in terms of software.
I believe the only optimization efforts possible beyond this point will be better utilization of GPU drivers (or maybe custom GPU drivers?), as well as designing new hardware.
Comments
I'm curious about algorithmic speed-ups to Bitcoin mining instead of hardware improvements.
I know to collect a mining reward you have to calculate a SHA256 hash of a block of transactions (or a block header -- I can't remember which) combined with a nonce. This hash must be below a certain value, and this value becomes smaller over time so that there's a lower chance of finding a nonce that satisfies the inequality.
I know mathematically, it's essentially impossible to find collisions or figure out some data that produces a particular hash, but what I wonder is whether it is possible to figure out some technique to speed up the hash calculation.
For instance, you have SHA256(nonce1 + block data). That doesn't work, so you try a new nonce: SHA256(nonce2 + block data). It seems to me that because there is a lot of redundant initial data used within the calculation (same block data every time) that there might be a way to exploit this and speed up the calculation of all future attempts. If this was this case, you'd have a huge advantage over all the people starting each new calculation from scratch.
Another option would be to figure out a way to compute SHA256 more quickly than is currently done. I know there's incremental speed-up techniques that are figured out from time to time, but what are the chances of discovering a vast speed-up?
Any cryptographers here? What is the feasibility of either of these options?
The obvious improvements have been done a long time ago (there are tens of millions of dollars to be gained here), and the current state of the art continues to spend tremendous effort pushing out every incremental gain they can. Most of the innovation is done in hardware implementations at the moment, because if you're running a software algorithm to find the hash you've already lost.
Solving a SHA256 hash for a particular value would require breaking the hash in some currently unknown way. However, looking at how past hash algorithms have fared, it seems likely this will eventually happen.
Already done, pretty much from day one (It's called 'midstate' if you want to google it).
To my knowledge, all the possible algorithmic optimizations have been developed and implemented since 2010 or 2011. Once you have as minimal a SHA256 implementation as possible, combined with retaining parts of the state for further calculation (as you describe), you can't really make it much faster in terms of software.
I believe the only optimization efforts possible beyond this point will be better utilization of GPU drivers (or maybe custom GPU drivers?), as well as designing new hardware.