 |
January 04, 2017, 11:54:28 PM Last edit: January 05, 2017, 12:44:23 AM by ohad |
|
today i had a thought about how to solve the mining pools centralization tendency problem. will be glad for your thoughts:
On Bitcoin as it is now, there is an inherent incentive to miners to mine in pools, while it virtually doesn't matter how much mining power they have. The reason is that even though the expected income is theoretically the same if mining with pool or solo, at least for a certain period (due to the halving of the block reward), still the variance of the income is quite high, frequently up to impractical extent. Mining in a pool on the other hand dramatically decreases the variance. So if a rational player has to choose between two options, both have same expected return but one has a significantly higher risk (volatility/variance), the player will prefer the safer option. Especially for miners who take a financial risk by buying mining hardware and electricity, they would prefer to minimize the risk of loss to the minimum possible. That's why everyone mine in pools, and for good reason.
But this situation made many Bitcoin's community member concerned about the centralization of the mining, which implies centralization of other aspects of Bitcoin as well. The tendency is to have bigger and fewer pools, just because it pays for the miners, but is in contrast to the philosophy of decentralization.
Having a slightly closer look, mining is the process of hashing a block's header while incrementing a certain field in it called the nonce. The block header contains also the Merkle root of the transactions hash tree, which in turn contains the address of the pool to receive the mining reward, and share it with the miners afterwards. This way the pool knows that if the miners find a block, they cannot fool the pool by publishing the block themselves and avoiding all other miners in the pool to get their share, since the hash matches only the block header that contains a Merkle root that hashes the transaction of the block reward.
Imagine that miners could indeed steal from everyone a block they found and not share it with the pool members. Then what? Then mining in a pool would turn a bad business, and we wouldn't have the mining centralization tendency problem we began with.
But how can we achieve that?
The point is to require the miner to sign on the block with the private key that corresponds to the miner's reward address. Consider a pool that wants to receive the reward into address X. Then every miner will have to sign the block header with the private key that corresponds to X. We then require the hash of this signature to meet the difficulty level.
This way, in order to verify that a block is valid we don't need the private key of the miner's reward, we just need to be able to verify the signature from the public key which is the address itself. On the other hand, to mine with pools, the reward address' private key must be shared with the miners, which will turn it highly unsecure and eliminate the incentive to mine in pools, since they will be able to take the reward from that address immediately.
|