Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: Peter Todd on May 31, 2013, 04:51:12 PM



Title: Decentralizing mining with pooled-solo mining
Post by: Peter Todd on May 31, 2013, 04:51:12 PM
Right now between two to four running the largest pools control Bitcoin in the short term. That's a lot of hashing power in the hands of very, very few people. In addition pools have little incentive to run secure operations, and many pools have been hacked with their funds stolen. Those hacks could just have easily been used to attack the network itself.

This needs to change.

Pooled-solo mining is a concept Gregory Maxwell, Luke Dashjr and I were discussing at the conference two weeks ago. (credit goes to Greg and Luke; I was mostly just listening) Basically the idea is that miners with mining equipment run a local Bitcoin node and use that node to construct the blocks they mine - the same as if they were solo mining. The pools job is then to only track shares and organize payouts.

If the pool gets hacked the worst that can happen is miners are ripped off, rather than Bitcoin itself being attacked. With pooled-solo mining even a pool with a majority of hashing power wouldn't be able to do much harm to Bitcoin. (depending on the implementation they may be able to blacklist specific transactions - the pool needs to know what transactions are in the share to credit fees properly)

Tech-wise Luke created getblocktemplate (https://en.bitcoin.it/wiki/Getblocktemplate) last year as a means to audit mining pools. I'm sure Greg and Luke can explain the nitty gritty details better than I can, but essentially the plan is to take getblocktemplate and extend it as required for pooled-solo mining. This will include pool and miner software initially, and later improvements to GUIs and what not to make the whole process easier.


With the success of my recent video project (https://bitcointalk.org/index.php?topic=208200.0;topicseen) I also want to make this Keep Bitcoin Free (http://keepbitcoinfree.org)'s next project, specifically funding a developer (likely Luke) to make this happen. Additionally once software is written and easily usable a good follow-up would be a video and other media to promote the idea to miners. No guarantees we'll be able to come up with commercially competitive remuneration, but we can at least come up with a "Thank you" tip. But first lets discuss the technical requirements to get an idea of what the scope is.


Finally, for the record, a big part of the reason why myself and other Keep Bitcoin Free supporters are interested in doing this is very much to take power over the direction of the network from big pools and put it into the hands of thousands of individual miners. It's much easier to convince people that changes to Bitcoin, like increasing the blocksize, are directly impacting decentralization when individual miners are seeing that happen to themselves.


Title: Re: Decentralizing mining with pooled-solo mining
Post by: n8rwJeTt8TrrLKPa55eU on May 31, 2013, 05:01:40 PM
+1.

I'd donate.


Title: Re: Decentralizing mining with pooled-solo mining
Post by: Peter Todd on May 31, 2013, 05:05:04 PM
+1.

I'd donate.


Thank you!

re: funding, right now jdillon has said he'd like to see the 10BTC he donated to the developers a few months back go to this effort, and has also said he and his partners would consider further matching funds. But most important is to figure out the scope of the work - bounties are very hard to get right so I'd rather do this as a more traditional contract. The video project worked very well in that regard.

That said the technical details need to be discussed more thoroughly first.


Title: Re: Decentralizing mining with pooled-solo mining
Post by: Luke-Jr on May 31, 2013, 05:22:32 PM
The plan right now (but subject to revision as needed) is to use BIP 23's "transactions/add" mutation and Block Proposal support to allow fullnode miners to advertise their support for this.
The pool will then just skip sending the bulk transaction data, and expect the miner to send a proposal back with that supplied (fetched from a local bitcoind).
Then GBT mining can continue as normal.


Title: Re: Decentralizing mining with pooled-solo mining
Post by: doublec on May 31, 2013, 10:34:18 PM
Why does BIP 23 (https://en.bitcoin.it/wiki/BIP_0023) include the "Logical Services" section? This doesn't seem to have anything to do with the core part of BIP 23. I think it'd be better to trim the BIP to be specific to the task required to make it more understandable and easier to implement.


Title: Re: Decentralizing mining with pooled-solo mining
Post by: Luke-Jr on June 01, 2013, 12:03:37 AM
Why does BIP 23 (https://en.bitcoin.it/wiki/BIP_0023) include the "Logical Services" section? This doesn't seem to have anything to do with the core part of BIP 23. I think it'd be better to trim the BIP to be specific to the task required to make it more understandable and easier to implement.
BIP 23 is focussed on pooled mining. Logical services are an important feature for that.
I don't see how merely moving a section to another document helps...?


Title: Re: Decentralizing mining with pooled-solo mining
Post by: doublec on June 01, 2013, 12:19:10 AM
BIP 23 is focussed on pooled mining. Logical services are an important feature for that.
I don't see how merely moving a section to another document helps...?
Ok, I thought BIP 23 was for the feature discussed here.


Title: Re: Decentralizing mining with pooled-solo mining
Post by: Luke-Jr on June 01, 2013, 12:51:30 AM
BIP 23 is focussed on pooled mining. Logical services are an important feature for that.
I don't see how merely moving a section to another document helps...?
Ok, I thought BIP 23 was for the feature discussed here.
BIP 23 is a collection of optional extensions on top of the base GBT protocol.
Part of BIP 23 (transactions/remove and proposals) specifies how this can work.


Title: Re: Decentralizing mining with pooled-solo mining
Post by: tnkflx on June 01, 2013, 10:33:05 PM
So, are you going to try and have all pools switch to GetBlockTemplate after the biggest ones switched to Stratum?