Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: Sergio_Demian_Lerner on January 21, 2013, 11:58:32 PM

Title: Global Pool Mining Proposal and a new fast light tx verification system
Post by: Sergio_Demian_Lerner on January 21, 2013, 11:58:32 PM
Global Pool Mining Proposal and a fast light tx verification system

Pooled mining is a mining approach where multiple generating clients contribute to the generation of a block, and then split the block reward according the contributed processing power. Pooled mining effectively reduces the granularity of the block generation reward, spreading it out more smoothly over time.

A share is awarded by the mining pool to the clients who present a valid proof of work of the same type as the proof of work that is used for creating blocks, but of lesser difficulty, so that it requires less time on average to generate.  []

I'm thinking of the idea of a protocol change to allow the possibility (and encourage it via incentives) that all Bitcoin miners form a Global Pool, without requesting additional trust:

1. Each share contains a PoW and a coinbase (to be sent a partial block reward)
2. Shares are included in a block as transactions (but they must go at the end of the list).
3. Shares contribute to the PoW of the block. For example, 10 shares, each containing 5% of the difficulty target contribute as 50% of the requested PoW of the block. (for the sake of simplicity I may be overlooking the correct way account for partial PoWs taking account probabilities)
4. Each share miner is also payed proportionally to the contributed work.
5. Shares are constructed as blocks and the only difference is the target difficulty. Normally, each miner tries to solve the block and during this process, a number of shares may be produced and transmitted.
6. Each share (like a block) includes a root of a Merkle tree of transactions.
7. The share lists the first 10% of the transactions specified on the merkle tree (the rest of the tree is supplied by terminal hashes). Miners can never surpass this limit. The partial list cannot include references to other shares.
8. Each share PoW is no less than 10% of the total PoW required.
9. A miner has the obligation to include in the block the transactions listed in the share in order to use the share.
10. Whenever a share is transmitted, it's split in two parts: header and partial transaction list specified by the merkle root. If the destination node already has the transaction list, only the header is transmitted. The transaction list is defined by the merkle root hash. This allows miners to send many shares using the same transaction list, without incurring on the network overhead of seeding the same list multiple times.
11. A miner should never produce two shares with conflicting transactions (it goes against his own interest)
12. A miner may include his own shares in a block.

Using these properties we can make a system where transactions are “lightly verified” by the network 10 times faster, without reducing the block interval and so avoiding rising parallel chains competition probability. This light verification system emerges because miners have an incentive to include in the block whatever share they see.

So a merchant may accept a payment of low value if:

1. It is confirmed OR
2. It sees it listed in the merkle tree of a share and 10 seconds have elapsed (time for the share to arrive to every miner)

The drawback is that network bandwidth consumption is doubled. The PoW target of a share does not affect the protocol much, since only partial merkle root lists are sent (in the same proportion). E.g. Share with 1% target PoW would only send 1% of the transaction list.

One possible alternative is that the share gets paid not by the PoW percentage but for the fees contained in the transactions specified by its partial list. Nevertheless I see this alternative lees attractive.

Note than work each miner has to do remains equal to the work done by a normal Bitcoin miner.
Also note that since shares do not contain other shares in the partial transaction list, there is no share-chain competition.
Note that the minimum percentage chosen for each share is unimportant: it could be as low as 1%. The network bandwidth use is always doubles with respect to a normal Bitcoin node, and does not depend much on the share percentage chosen.(with the exception of the small header overhead, and the hash operation to verify the PoW).

Best regards, Sergio.