Lucky Mining is a new mining incentive designed to encourage solo-mining by gamblers. With traditional mining there is a fixed average reward per hash that adjusts according to the difficulty to regulate the rate at which blocks are found. Under this model there is statistically equal expectation for rewards over time whether solo-mining or pool mining. As the difficulty increases to the point that the expected time for an individual to find a block approaches months, most users prefer to mine in pools at a slight fee rather than mine solo. For these users there is no meaningful difference between finding one block per year and finding one block per century. The rewards are small enough and infrequent enough that they might as well be the same.
Lucky Mining allows an individual to optionally mine at a much higher difficulty for a much higher reward. So a miner may chose to solo-mine at 1000x the default difficulty, if they win they get 900x the default block reward. If they find a block above the default difficulty but below the lottery difficulty get the 1/1000 the default reward for submitting the block.
If this were Bitcoin then a Lucky Miner would be playing the Loto in the hopes of hitting a $17 million dollar jackpot. This changes the economics of mining due to the irrational belief in luck and the intangible value placed on hope. If enough people decide to buy hope rather than predictable low-margin mining rewards, then their combined hash power will increase the difficulty beyond the point where centralized for-profit miners can make money. This will truly decentralize mining.Implementation Details
Add a 16 bit field (odds) to the block header that represents the difficulty multiplier. Traditional mining this value should be set to 1.
For Lotto Mining this value can be set between 100 and 2^16
The value of the coinbase transaction depends upon the hash of the block:
if( calc_difficulty( hash(blockheader) ) > odds * current_target_difficuty )
output of coinbase is valued at BaseReward * odds * 0.9
if( calc_difficulty( hash(blockheader) ) > odds/2 * current_target_difficuty )
output of coinbase is valued at BaseReward * odds * 0.9^2
if( calc_difficulty( hash(blockheader) ) > odds/N * current_target_difficuty )
output of coinbase is valued at BaseReward * odds * 0.9^N
output of coinbase is valued at BaseReward / (2*odds)
This coinbase transaction will introduce an ‘external dependency’ on the block header to transactions that wish to spend this output.
The coinbase transaction may only have 2 outputs: 1 for block rewards and 1 for fees.
There should be a new Mining Tab added to the LuckyShares user interface that allows the user to select one of 3 mining options: Traditional 50 Shares, 50,000 Shares Lotto, and 500,000 Shares Lotto Mining. The underlying protocol will support any number, but the user interface will be kept simple.
I am looking for someone to submit bids on what it would cost to add this feature to ProtoShares. We intend to fund the development of this with who ever is most qualified. I am also looking for feedback on the system.