Looking at how the ASIC market is moving and growing I started to think about these problems:
- Centralization of hashing on big pools.
- Decreasing chances for small pools to create blocks and attract more mining power to grow. With no reward on mid-size pools all miners should prefer to mine on big pools with better expectations for return on investment, rather than supporting new pools.
- Possibility for a big ASIC producer/miner to control the network.
- Not possible to confirm blocks in a very long period of time if the main pool(s) are disconnected from the network (consider a scenario with 2-3 pools/companies having 90% of the current difficulty hash power, if they drop by an attack it will take extremely long time for the next difficulty adjustment to correct this)
My idea is to encourage distribution of rewards and therefore encourage distribution of mining power.
General description: Create a list of known miners with history in mining(finding blocks), assign to them a reasonable target hash to achieve (instead of mining the main block hash) with a small reward and make the approval of the block depend on both the usual high difficulty hash and a random subset of the trusted miners.
Implementation details- Store on each block an ordered list with the bitcoin addresses that generated blocks in the past with the cumulative number of blocks created plus the time the miner took to find the last hash(record the hashing power).
- Use the Nonce plus Fibonacci series (for example) to select the next XX(e.g. 20) candidates with their public addresses from the ordered list included in the block.
- In addition to the usual hash to be found, half (10) of those XX(20) candidates have to find an adjusted SHA256 hash.
- The adjusted SHA256 hash uses a difficulty relative to the difficulty of the last block found by this miner (not the network difficulty!). So the required number is adjusted and different for each of the candidates.
- Half (10) of those XX(20) candidates have to sign (with their private key) the next block to be found including each of their adjusted SHA256 hashes.
-
The first block that includes the originally required main SHA256 hash plus half(10) of those XX(20) adjusted SHA256 hashes, each with their corresponding signatures, is considered a valid block.- The selected addresses that proved the last block by including their adjusted SHA256 hash receive a small part of the reward divided equally (e.g. half of current reward is divided equally among all selected candidates that proved the work and the other half of the reward goes to the miner that found the main SHA256 hash).
- When there are more than half(10) of the possible XX(20) addresses that submit a valid answer, the less powerful ones get the reward (this is the time it took to find the current adjusted hash). This reduces cheating.
- Original reward for miner that finds the main SHA256 hash still exists but the amount is decreased to fulfill the rewards of the candidates.
- The list of all candidates gets updated on each new block and arranged by amount of blocks found (even with adjusted SHA256 hashes* found).
- The list of selected candidates is published in the new block with their adjusted target SHA256 hash goal so all the network knows who is responsible for next block and which are the individual targets.
- Additionally, if the main SHA256 hash for the current block has not been found for 20 minutes and half (10) of the XX(20) candidates have already found and sign their corresponding adjusted SHA256 hashes, then the block is considered valid (as a recover mechanism in case of big mining network drop).
Definitions*Main SHA256 hash: hash to be found using the network difficulty in order to confirm a block in the current bitcoin implementation 0.8.x.
*Adjusted SHA256 hash: hash found by one of the candidates when randomly selected and included in the final confirmed block together with the rest of the candidates and the Main SHA256 hash.
Pros- Non massive mining pools get a change to continue profitable and grow.
- Massive mining corporations loose control of the network by requiring consensus from a small group of unrelated but famous miners, reducing the centralization risk.
- Recover mechanism in case of big drop of the mining network (if the massive pools are suddenly disconnected the rest of the mining network in current implementation can't confirm a block in up to two weeks).
Cons- Pool owners will have to manage pool jumpers that join/leave depending on pool address appearing in the 20 selected candidates
- How to enter the list of candidates without having the maximum hashing power to generate a block
Related projects I've researched:
P2Pool -
https://en.bitcoin.it/wiki/P2PoolDecentralized mining protocol standard: getblocktemplate -
https://bitcointalksearch.org/topic/decentralized-mining-protocol-standard-getblocktemplate-asic-ready-108854