Several things going on in Cryptocurrency and Bitcoin in particular have been bothering me. First, mining is becoming increasingly centralized into industrial operations. Second, there is no incentive for people to operate a full node with blockchain history. Third, specialized hardware (ASIC) is causing a runaway in difficulty and removing any possible RoI for small miners.
I have an idea which could address all three issues to at least some degree.
Most coins out there today use proof of work (PoW), proof of stake (PoS), or a combination of the two. Proof of work has led to the runaway difficulty out there as the only way to make more is to add more hashing power. We are far beyond the amount of hashing power needed simply to keep the network secure. Some of the estimates of power useage for mining claim enough wattage to run a city. Proof of stake has its own issue. Sitting on a stake means that there is a counter incentive to using the currency for transactions. This leads to hoarding rather than economic activity.
What if we tried a proof of blockchain (PoBC) model? In order to generate a valid hash you need access to the entire blockchain or at least information from every block in the blockchain.
Currently, in Bitcoin, a hash is generated as follows:
sha256(sha256(block_header))
I’d like to see a hash generation done this way instead:
sha256(sha256(block_header)+history_block_hash))
1. Start with the header of the block being worked.
2. Generate the first sha256 checksum.
3. Use the last 32 bits of that checksum as an index into the blockchain history which could return anywhere from the first block up to the last block generated before the one being worked.
4. Use the selected history block to generate another hash (more on that later).
5. Append the history hash to the first header hash.
6. Generate the outer hash over the header and history hashes.
As for how to generate the history hash I can see three methods of doing it. Each requires a different amount of information to be available and the technique selected can be determined if you want to give the miner a chance of keeping the entire working set in memory or if you want to ensure frequent trips back to disk (unless the miner has terabytes of RAM).
1. Use the hash of the selected block (smallest amount with only 32 bytes per block needed).
2. Use the header of the selected block with the current block inner hash appended and then generate a hash on this (80 bytes per block needed).
3. (my favorite) Take the entire selected block with the current block inner hash appended and then generate a hash on this (requires the entire blockchain to be available).
So, why would we want to do this?
First, it should stop the ASIC miners in their tracks. For even the smallest history dataset above you would need to have 16MB of working data per year of blockchain if the block generation time is set at one minute. The ASIC can’t store this much information internally so it will be going back to an external store for every computation.
Next, it promotes having more copies of the entire blockchain on more computers. If you want to mine, you will have to dedicate more hardware and storage. This will make it much harder for the industrial size miners to scale up as they can’t just add racks of ASIC chips. There are ways of scaling but they will require high speed networks or lots of storage per mining node. I’m not even sure a GPU miner will work under this model. It may be better to go back to the old days of CPU mining.
I’m curious if anyone has explored a concept like this for an altcoin. I see this as being a way to force a coin to scale out since anyone wanting to mine will need to operate a full node containing the entire blockchain.
I’d also like to come up with a way to prevent too much hashing power from being concentrated on one copy of the history. If anyone has an idea for how this could be achieved I’d really like to hear it. This would be another way of preventing the industrial miners from sucking all the air out of the room. I’d much rather see 100,000 small miners (and full network nodes) than 10 giants.
Hope this can spark some discussion. I decided to post it under the altcoin area since I don't think the existing Bitcoin could be modified to incorporate such a concept. Plus, it would be so disruptive to the status quo in Bitcoin that it would never be accepted if it could be done.
StuffOfInterest (hobby miner, programmer, and what if idea speculator)
Make a coin out of your idea instead of discussing it any further.