Week 7: Hash Pools
Hello everybody, and welcome back to my blog!
This past week has been spent implementing my proof of work history consensus mechanism that I initially proposed last week.
While this went well and turned out to be a complex but manageable addition. The one thing that I did not see coming for this implementation was that a proof of work history algorithm works best in tandem with the concept of a hash pool. Hash pools, in the crypto world, are a collection of mining nodes that combine all of their computer power into a single pool to approve new blocks due to the mathematically low chance of a single node ever finding a block. By combining significant amounts of processing power in a single pool it can help bring more regular profits to miners since they are rewarded for simply contributing to a hash pool and not only when their node finds a valid block hash and can append a block to the chain. For networks like Bitcoin, nearly all mining occurs across various mining pools. There are three primary ways these pools operate. One approach is the method described earlier in which nodes mine within the pool and then are paid a proportional fee once a node in the pool finds a block. Another approach is that in exchange for performing proof of work calculations, nodes are rewarded shares which can be exchanged for the currency at any time requested. The third is a unique, peer-to-peer mining protocol. This resolves the concern many have with the prior pooling techniques that introduce a centralized aspect to the decentralized network.
In my programming project I have been implementing the first version of hashing pools. This was done primarily in order to provide a method for multiple wallets to work simultaneously on a single block’s mining. This mining method integrates into my proof of work history algorithm through two distinct trust score systems. One trust score is associated with a wallet signature (which in a real chain would be replaced with mining node id) and another associated with the id and trustworthiness of the pool. The wallet’s score is adjusted when that wallet finds a block and the pool’s score is adjusted when the pool finds a block. This method allows me to verify which nodes in specific systems might be bad actors and incidentally solves some issues with centralization.