A mining pool is a way of sharing the work needed to find a block. Miners are rewarded in proportion to the amount of computing power they contribute to the problem, with various ways of calculating returns. Use this tag when specifically asking about operating a mining pool or about pooled mining but not other forms of mining.

A mining pool is a way of sharing the work needed to find a block. Miners are rewarded in proportion to the amount of computing power they contribute to the problem, with various ways of calculating returns. Nearly all mining happens in mining pools to help reduce the variance of solo mining as the difficulty has increased.

There are various ways of calculating return based on computing power. Some pools offer a fixed and guaranteed rate based on the amount of MHashes you are contributing (with the mining pool absorbing the overall variance, and taking a fee for doing so) while others are strictly based on actual blocks found by the pool.

A list of current pools can be seen at:

https://en.bitcoin.it/wiki/Comparison_of_mining_pools

Miners wishing to mine with a mining pool can connect to one using two protocols: stratum and getblocktemplate. The stratum protocol is a centralized protocol where the pool operator has full control over the contents of the block. The miners are only there to perform the Proof of Work computation required. Getblocktemplate is a different protocol which allows for decentralized mining. It allows for the individual miner to choose what goes in the block with the mining pool only returning the information necessary for a miner to build the block. Most mining pools either use stratum exclusively or both stratum and getblocktemplate.