While discussing alternative uses for FPGAs now that ASICS will (or so I believe) make things a little less interesting for non-ASIC miners (
https://bitcointalk.org/index.php?topic=138183.0) I posted about supporting multiple hashing algos, not really thinking it thoroughly, but now that I've entertained the idea a little longer it sounds like something we could, in fact, integrate in the bitcoin protocol. It might seem a bit out there, but there are two major points in favor of this idea as far as I can see:
- Makes it a lot harder for someone (read company or government) to just throw money at hardware and overtake the network
- Prevents a potential flaw in sha256 or quantum computing from killing the blockchain (even if temporarily, I understand that we can always address that as needed by just changing the algo, but still)
So the very simplistic view I have of this is that instead of block hashing having to be done exclusively by sha256(sha256()) there would be a flag indicating which hashing algo was being user per block, with, for example, scrypt or sha3 added. Of course the list would have to be definitive per client version and the majority of the miners would have to agree, as always.
A separate difficulty would be kept per hashing algo, so with ASICS taking sha256(sha256()) by storm, GPU users could use litecoin's approach of scrypt. Difficulty per algo would be calculated prorated between the hash counts, so the algos that have the larger work force would have the higher diff.
It seems to me this isn't too complex to implement, bar the fact there would have to be an agreement between miners, and those invested in ASICS would be hard to convince to allow scrypt or whatever, but in the long run this would also protect them, as it would make the network as a whole much more hardened.
What do you think? Should I start sleeping more or is this something that could be done?