Mining pool

In the context of cryptocurrency mining, a mining pool is the pooling of resources by miners, who share their processing power over a network, to split the reward equally, according to the amount of work they contributed to solving a block. A "share" is awarded to members of the mining pool who present a valid proof of work that their miner solved. Mining in pools began when the difficulty for mining increased to the point where it could take years for slower miners to generate a block. The solution to this problem was for miners to pool their resources so they could generate blocks more quickly and therefore receive a portion of the block reward on a consistent basis, rather than randomly once every few years.[1]

Mining pool methods

In all these schemes $B$ stands for a block reward minus pool fee and $p$ is a probability of finding a block in a share attempt ($p = 1/D$, where D is current block difficulty). A pool can support "variable share difficulty" feature, which means that a miner can select the share target (the lower bound of share difficulty) on his own and change $p$ accordingly.

Pay-per-Share

The Pay-per-Share (PPS) approach offers an instant, guaranteed payout for each share that is solved by a miner. Miners are paid out from the pools existing balance and can withdraw their payout immediately. This model allows for the least possible variance in payment for miners while also transferring much of the risk to the pool's operator.

Each share costs exactly the expected value of each hash attempt $R = B \cdot p$.

Proportional

Miners earn shares until the pool finds a block (the end of the mining round). After that each user gets reward $R = B \cdot \frac{n}{N}$, where $n$ is amount of his own shares, and $N$ is amount of all shares in this round. In other words, all shares are equal, but its cost is calculated only in the end of a round.

Bitcoin Pooled mining

Bitcoin Pooled mining (BPM), also known as "slush's system", due to its first use on a pool called "slush's pool', uses a system where older shares from the beginning of a block round are given less weight than more recent shares. This reduces the ability to cheat the mining pool system by switching pools during a round, to maximise profit,

Pay-per-last-N-shares

PPLNS method is similar to Proportional, but the miner's reward is calculated on a basis of N last shares, instead of all shares for the last round. Therefore, if the round was short enough all miners get more profit, and vice versa.

Geometric method

GM was invented by Meni Rosenfeld.[2] It is based on the same "score" idea, as Slush's method: the score granted for every new share, relatively to already existing score and the score of future shares, is always the same, thus there is no advantage to mining early or late in the round.

The method goes as follows:

• Choose parameters $f$ and $c$ (fixed and variable fee).
• At the start of every round, set $s = 1$. For every worker $k$, let $S_k$ be the worker’s score for this round, and set $S_k = 0$.
• Set $r=1-p+\frac{p}{c}$, where $p = 1/D$. If the difficulty changes during the round, $r$ needs to be updated.
• When worker $k$ submits a share, set $S_k = S_k + spB$, and then $s = sr$.
• If the share is a valid block, end the round. For every worker $k$ pay $\frac{(1-f)(r-1)S_k}{sp}$

Double Geometric method

Generalized version of Geometric and PPLNS methods.[2] It involves new parameter: $o$ ("cross-round leakage"). When $o = 0$ this becomes the Geometric method. When $o = 1$ this becomes a variant of PPLNS, with exponential decay instead of a step function.

• Choose parameters $f$, $c$, and $o$.
• When the pool first starts running, initialize $s = 1$. For every worker $k$, let $S_k$ be the worker’s score, and set $S_k=0$.
• Set $r = 1 + \frac{1}{c}p(1 - c)(1 - o)$. If at any point the difficulty or the parameters change, $r$ should be recalculated.
• When worker $k$ submits a share, set $S_k = S_k + (1 - f)(1 - c)spB$ (where $B$ is the block reward at the time it was submitted), and then $s = sr$.
• If the share is a valid block, then also do the following for each worker $k$: Give him a payout of $\frac{1}{c_s}(1 - o)S_k$, and then set $S_k = S_k \cdot o$.

Multipool mining

Multipools switch between different altcoins and constantly calculate which coin is at that moment the most profitable to mine. Two key factors are involved in the algorithm that calculates profitability, the blocktime and the price on the exchanges. To make sure you don’t need many different wallets for all possible minable coins, almost all multipools now automatically exchange the mined coin to a coin that is accepted in the mainstream (for example bitcoin).[3][4] Using this method, because the "most profitable" coins are being mined and then sold for the intended coin, you generally receive more coins in the intended currency than you would by mining that currency alone. This method also increases demand on the intended coin, which has the side effect of increasing or stabilizing the value of the intended coin.