|
April 12, 2013, 10:44:45 PM |
|
Except for p2pool, pool mining is centralized - meaning they connect to a pool server (which usually gets work from bitcoind) and get work from that server. They find shares and submit it to the pool server.
In the case of p2pool, there's software you run in addition to bitcoind. p2pool gets work from bitcoind, messes with the coinbase, and then gives work to miners. Miners submit shares and if it's above the p2pool difficulty, it goes into the sharechain. The sharechain is very much like the blockchain, except average time between shares is 10 seconds. This is used to determine how much each miner should get paid out. It also makes pool mining decentralized.
As for as protocols between mining software and the servers (whether centralized or a p2pool daemon), there are a few. There is getblocktemplate, Stratum, getwork, BlkPrep, and UBBP. GBT and Stratum are becoming the most popular, while getwork is being phased out (lots of bandwidth, less flexible, and very hard on bitcoind). BlkPrep and UBBP are niche protocols - I'm not sure if any pools still use them.
Except for p2pool, miners do not communicate peer to peer like you thought. Even with p2pool, it's only the p2pool software that is communicating with other p2pool nodes (like bitcoind does), the mining software itself is practically oblivious.
|