Progress pill
Technical development

The rise of mining pools

Bitcoin's Pioneering Era

The rise of mining pools

  • Increasing the hash rate
  • Mining pools and how they are remunerated
  • Eligius, Luke-Jr's pool
  • Centralization of mining activity
  • P2Pool, the decentralized pool
  • Stratum mining protocol
  • FPGA and ASIC mining
The era of the American Wild West was characterized by the gold rush—that is, the large migration of adventurers hoping to make their fortune following the discovery of gold deposits in California in 1848—and it turned out that Bitcoin experienced a similar phenomenon between 2010 and 2013. Bitcoin was associated with the precious metal from the outset, the extraction of new bitcoins was called mining, and the software and hardware tools were referred to as miners, a designation that extended to the players in charge of adding the blocks to the chain. It's natural, then, that the early mining activity was subject to a kind of "digital gold rush", attracting passionate individuals who, through their financial interest, helped to make it more efficient over time.
In autumn 2010, the first influx of miners led to the widespread use of GPU (graphics processing unit) mining, which was far more profitable than CPU (central processing unit) mining. However, this technical advance increased the difficulty of the network to such an extent that small miners could no longer hope to find a block within a reasonable timeframe. This led to the creation of miners' groups, such as BitcoinCZ Mining, the Slush Pool. The momentum didn't stop there: as the price rose in 2011, the influx of miners continued, and pool mining quickly normalized.
In this chapter, we'll analyze the emergence of the various mining pools, which often had different modes of operation. We'll discuss how this rise led to a certain centralization of the network's computing power, which in turn led to the design of the decentralized P2Pool protocol, which made it possible to generate bitcoins without depending directly on an operator. Finally, we'll talk about the Stratum mining protocol, which replaced the rudimentary way of doing things that had existed since 2010.

Increasing the hash rate

With the widespread use of GPU mining and the record exchange rate growth between 2010 and 2011, the network's hash rate was rising exponentially. It increased by a factor of 1,000 in less than a year. From just 10 gigahashes per second (GH/s) in September 2010, it reached 100 GH/s in December, then 1 TH/s in May 2011 and exceeded 10 TH/s in June. It peaked at 15.8 TH/s before dropping sharply, following the bursting of the great bubble in 2011. After bottoming out at 7 GH/s in December, it stabilized between 10 and 15 GH/s in the first half of 2012.
Total hash rate of the Bitcoin network between April 2011 and July 2012 (source: CoinWarz)
This increase in network computing power meant that solo mining is no longer viable at all, as the variance was too great for most installations. This was the reason most miners were forced to form mining cooperatives, or mining pools, to smooth out their income. They rent their hashing power to an operator, who selected the block specifications and transactions to be included.
It was against this backdrop that, in December 2010, Marek Palatinus (better known as Slush) launched BitcoinCZ Mining, a "pool mining" service that collected 3.5% of the network's hash rate in just a few days. This success was soon emulated, and 2011 saw the standardization of pool mining, illustrated by the opening of a large number of competing pools.

Mining pools and how they are remunerated

Mining pools that emerged in 2011 adopted various remuneration methods. The calculation is always based on the "shares" provided by the participants, i.e. the partial proofs of work calculated for a given block. Each mining unit involved in the pool is referred to as a "worker".
Initially, the Slush Pool applied a simple proportional model: its users are rewarded for each block mined, in proportion to the shares they have found since the last block. A 2% commission was deducted from this reward, i.e. 1 BTC per block. This model was slightly flawed, however, as miners could "cheat" (and get around 28% more bitcoins) by disconnecting from the pool once a certain number of shares have been submitted in a cycle and redirecting their computing power to their own account or to another pool (a practice known as pool hopping). This was why Slush introduced, on February 4, 2011, a "cheat proof" scoring system that gave more weight to the most recent shares in the cycle than to the oldest shares.
The first competing pool to emerge in 2011 was BitPenny, which had the distinctive feature of applying a distinct and simple reward model: Pay Per Share (PPS). The idea was to pay workers immediately for each share provided, according to its degree of difficulty, from the pool's balance. Unlike the proportional model, the operator bore the entire variance, which was risky for him and justified higher commissions. The BitPenny pool was launched on February 8, but was forced to close on April 2, following heavy losses. It was nevertheless relaunched in August, using a more complex method, a variant of PPS (Capped Pay Per Share with Recent Backpay or CPPSRB).
On February 27, a new pool called Deepbit was opened by a Russian calling himself Tycho. This was a pool based in Europe, which offered its customers the choice of rewarding them according to the proportional model or according to the PPS model. Fees were 3% for the former and 10% for the latter.
Subsequently, dozens of pools were opened throughout the year. Among them was BTC Guild, a US-based pool that was created in May 2011. It was run by a Californian miner calling himself Eleuthria (a distortion of the Greek word ἐλευθερία, eleuthería, meaning "freedom"), and used a pure PPS model. The DeepBit and BTC Guild pools soon became serious competitors to BitcoinCZ.
However, the proportional model and the PPS were not the only ones being adopted. In addition to the Slush score, miners were conceptualizing more complex payout methods, such as the PPLNS, the geometric method or the SMPPS, which aim to correct the deficiencies of simple models. These methods were being tried out by various mining groups seeking to differentiate themselves from established organizations.
On June 15, a newcomer using the pseudonym Wuked launched a pool called Mineco.in. Wuked initially applied a proportional payment (like Deepbit), but innovated quickly by developing a method known as Pay Per Last N Shares (PPLNS). It involved rewarding workers for each block mined, in proportion to their shares among the N last shares supplied to the pool. It was therefore a variant of the proportional model, in which the evaluation period was not the block production cycle, but a window of N shares independent of the cycle.
Also in June (on the 13th), a certain Josh Zerlan (alias Inaba) opened the EclipseTM pool, which had the merit of experimenting with integrating the geometric method from mid-July. The latter was described a few months earlier by Israeli mathematician Meni Rosenfeld. The principle was to use a score (to make participants stay) and to decrease the reward per share geometrically. In September, EclipseTM adopted the "double geometric method", conceived once again by Meni Rosenfeld, which constituted a hybrid system between the PPLNS model and the geometric method. This complex system would also be adopted in December by Ozcoin, an Australian bulk mining service launched on June 9 by a certain Graeme Tee.
Other pools will be able to make the most of the situation. One example was the American mining group BitMinter, launched in June, which had the distinction of having its own mining software. Also worth mentioning was the Russian pool 50BTC.com, created in December, which would provide an activity monitoring tool for miners called Mining Explorer.
The Mining Explorer tool in May 2012 (source: archive from Miningexplorer.org)
Note also that the emergence of alternative cryptocurrencies (which we'll analyze in a later chapter), in turn, led to the creation of specialized pools from spring 2011 onwards. pools for Namecoin were thus born, such as Bitparking, opened by DoubleC in May 2011, or NMCBit, created by a certain Davinci Jeremie (aka DavinciJ15) in August. The addition of merged mining with Namecoin meant that, over time, all Bitcoin mining pools would be led to incorporate the mining of this cryptocurrency into their offerings.

Eligius, Luke-Jr's pool

An original mining co-op is Eligius, which was opened by developer Luke-Jr in April 2011. Luke-Jr (or Luke Dashjr, pronounced "dasher") is an atypical character in the Bitcoin history. A devout Roman Catholic sedevacantist, he is married and the father of a large family: he had two children in 2007 and will have three more by 2017. He is a free software programmer, having developed his own operating system, called Utopios and based on the Gentoo distribution.
Luke learned about Bitcoin on December 31, 2010 on IRC. In January 2011, he set up a hosting service, Lightfoot Hosting, which accepted bitcoin. He also contributed to the Spesmilo software client as mentioned in the previous chapter.
Avatar used by Luke-Jr from 2013 (source: Gravatar)
On April 27, Luke created a mining pool called Eligius, which he presented as a "New Experimental Pool". The name is the Latin name of Saint Éloi, 7th-century bishop of Noyon and finance minister to King Dagobert I of the Franks. The server-side software is called Eloipool. Among other things, Saint Éloi is considered the patron saint of miners.
Luke initially adopted a proportional payment model. However, concerns about pool hopping led him to implement his own hybrid system on June 13: the Maximum Pay Per Share (MPPS) model. This consisted of taking into account a balance linked to the shares found, in addition to the counter linked to the proportional system which acts as a buffer, in order to obtain a model which resembles payment per share without the associated risk for the pool. As this model was flawed, Luke was momentarily obliged to revert to the proportional model, then would design a similar system that relied on a collective buffer: the Shared Maximum Pay Per Share (SMPPS). The aim was never to distribute more than the pool actually owns. After a favorable survey, Eligius integrated this new model on June 27.
Eligius also innovated with the practice of "coinbase signing", which consists in writing the name of the pool (here Eligius) in the input field of the reward transaction of the mined block. This practice, which makes the operation of pools more transparent, was inaugurated on the day of the switch to the MPPS model, on the night of June 13-14, with block 130 635. This was the second entry to be made in this way, following the emblematic quote from the Times included by Satoshi Nakamoto in the genesis block in January 2009.
As of August 5, Luke-Jr used this specific field to add messages of a religious nature in the blocks generated by the pool. In keeping with the operator's traditionalist Catholic faith, these included prayers in Latin: the Divine Praises, the Hail Mary, the Salve Regina, the Our Father, the Prayer of the Heart, and so on. But there were also texts in English: the Acts of Contrition, Faith, Hope and Charity, the Confiteor, the prayer to the Guardian Angel, meditations from the Rosary of the Sacred Heart of Jesus, passages from the Gospel, commemorations of saints (such as that of Augustine of Hippo on August 28).
Divine praises present in the blocks mined by Eligius in August 2011 (source: Blockchair)
Two weeks later, these prayers were noticed by a member of the community, who wrote a message in a classic transaction. He accused Luke of being "A PEDOPHILE", claimed that "God isn't real" and told him to "Stop polluting the blockchain with your nonsense". This transaction was shared later in the day by Mark Karpelès, leading to a discussion on IRC and on the forum around these text entries. Ozcoin operator Graeme Tee was particularly critical of the practice, especially as Eligius members were unaware of it. He asked Luke if he didn’t think that "putting prayers in might alienate some ppl", considering that "btc is multidenominational", to which the sedevacantist bluntly replied that "Catholics don't believe in freedom of religion".
However, Luke took this into account and gave miners the option of requesting to include their own messages, subject to his approval. Several humorous entries were added, including a rickroll. Luke abandons the practice at the beginning of September.

Centralization of mining activity

As the number of pools increased in 2011, quickly raised the question of centralization. Block construction was delegated to an operator, who chose the parameters and selected the transactions to be confirmed, actions that could conflict with participants' preferences. What's more, larger pools were favored over smaller ones, as the variance in mining also applied to groups of miners, who needed to be large enough to avoid being affected. The resulting centralization of mining naturally worried community members, who saw it as a threat to the smooth running of Bitcoin.
The transparent activity of public pools (such as Deepbit, which published its found blocks every day) made it possible to estimate the proportion of their hash rate to the total power of the network. This made it possible to generate sector graphs illustrating the distribution of pools, such as Bitcoin Watch (then managed by Nils Schneider) or the block explorer Blockchain.info. This ensured that computing power was not centralized within a single pool.
Bitcoin hash rate distribution on July 6, 2011 (source: archive from Bitcoin Watch)
Even so, this was what happened at the beginning of July, when Tycho's pool Deepbit's share of the measured hash rate approached 50% (in the short term). This domination provoked a reaction from some people on the forum for whom "Bitcoin Security [is] nearly Breached". But this assertion was a little exaggerated: the more reasonable users, annoyed, point out that the operator had no economic interest in attacking the network, that the impact of such an attack would be limited and that participants are free to change service at any time, since "the pool operator does not control the hardware of the members of the pool". So there was a centralization problem, but it was not as serious as it seemed.
Percentage of block production, measured daily and weekly, between 2011 and 2014 (source: OrganOfCorti for the blog Neighbourhood Pool Watch)
Deepbit's dominance peaked in the summer, with a measured share of computing power reaching 52.86% on August 5, and was maintained throughout the rest of the year. This led to the signature of the reward transaction, initiated by Eligius in June, spreading from November onwards. Thus, the BitMinter, BTC Guild and EclipseTM pools adopted the practice in November, and were joined by smaller pools such as NMCBit or Ozcoin. The Slush pool began to do so in January, signing its /slush/ blocks. The coinbase signature became dominant in September 2012. Deepbit would refuse to do so, however.

P2Pool, the decentralized pool

One way to combat the centralization induced by the widespread use of pool mining was the decentralized P2Pool service. The latter was created on June 17, 2011 by Forrest Voight, an 18-year-old Floridian developer, who used the pseudonym ForrestV and had been frequenting IRC a lot since March. He presented P2Pool as a "Decentralized, DoS-resistant, Hop-Proof pool".
Forrest Voight circa 2011 (source: archive from his personal website)
The model relied on a "sharechain, which was maintained by participating miners connected peer-to-peer, similar to Bitcoin's blockchain. Each share contains the fingerprint of the previous share, which links the shares together and ensures the integrity of the whole. The difficulty (which is initially 600 times lower than the difficulty of the main network) is adjusted regularly to guarantee an average interval of 5 seconds. The remuneration method is payment according to the last N shares (PPLNS), made directly in the reward transaction, each time a block is found.
Sharechain visualization (source: Gregory Maxwell for Bitcoin Wiki)
On July 19, 2011, after a trial run on the test network, P2Pool was deployed on the main Bitcoin network. The decentralized pool found its first block on August 23, after several upgrades and more than a month of hashing! Other blocks followed, but activity remained anecdotal for months.
On August 24, Forrest proposed to add a RPC call to the Bitcoin communication protocol, in order to simplify P2Pool. This was the getmemorypool (GMP) command, which allowed a node to retrieve the transaction fingerprints of another node, in order to build its own reward transaction. It was integrated into the main software in version 0.5, released in November.
From December onwards, the system improved and attracted the attention of the technical community, including Mike Hearn, Gregory Maxwell and Charlie Lee. In addition, donations were made to encourage miners to go through the pool. As a result of this new attention, the hash rate managed by the pool took off at last: it rose from a few gigahashes per second in early 2012, to 100 GH/s in February and 350 GH/s by the end of March. By then, the system represented 3% of the network's total computing power! However, P2Pool would struggle to gain a foothold, as its operation was inherently more complex than the other pools.

Stratum mining protocol

The spread of pool mining was also driving the development of new communication protocols. In 2011, pools were based on the rudimentary getwork command, as well as long polling, a technique derived from network programming which allowed (among other things) the reduction of stale shares by rapidly announcing new blocks to miners. However, this operation was extremely bandwidth-intensive, both on the server and client sides, so that the situation became untenable as the number of connections exploded.
The year 2012 was thus dedicated to establishing a communication standard for pool mining. The first standard to emerge was the RPC getblocktemplate (GBT) call, whose main function was to return the block structure to the participant. This was an improvement on getmemorypool which was proposed by Luke-Jr on February 28, 2012. The GBT command is described in BIP 22 and 23. The method was used from May by the Eligius and EclipseMC pools within their own server software. It was integrated into Bitcoin's main software code in August and was present in version 0.7, released in September.
However, another standard appeared in parallel. Eleuthria (BTC Guild) and Slush (BitcoinCZ) were working on their own models, which they published on 10 and 11 September 2012 respectively. As Slush's proposal was more mature, Eleuthria withdrew its own.
The standard proposed by Slush is the Stratum mining protocol (or StratumMP). Its name means "layer" in Latin and was already used to refer to the BitcoinCZ's server software. Stratum allowed participants’ lightweight clients to connect to the pool’s node and communicate efficiently with it. The protocol was largely inspired by the one developed for Electrum.
This publication had prompted reactions from certain developers in the community, such as Luke-Jr and Gregory Maxwell. In particular, Stratum was criticized for having been "developed-behind-closed-doors", and for competing with a standard that had been openly discussed for months and was already being deployed, namely GMP/GBT. Marek Palatinus responded by writing that both solutions have their advantages and disadvantages, one being lighter and simpler than the other: he stated that "I see the difference between Stratum and GMP as Electrum client and Satoshi client".
"How standards multiply": humorous comic strip shared by Luke-Jr in reaction to the development of the new Stratum standard (source: XKCD)
Over the months, Stratum had established itself as the protocol used by most pools, starting with BitcoinCZ and BTC Guild. Hash rates using Stratum reached 24% in October, 45% in November, and 74% in December! The getwork function would be gradually discontinued over the course of 2013.

FPGA and ASIC mining

As a result, the organization of mining changed considerably in 2011 and 2012, becoming the business of pools rather than solo miners. There had been a veritable proliferation of mining groups, which were very diverse in terms of both their philosophy and their method of remuneration (proportional, PPS, etc.) This change had, however, led to a centralization of mining activity, which encouraged the creation of the P2Pool decentralized pool model in July 2011. Communication within the pools also improved, culminating in the appearance of the lightweight Stratum protocol in September 2012.
Obviously, the evolution of mining wasn't just about the organization of hashers; it was also about the hardware itself. While the switch from the central processing unit (CPU) to the graphics processing unit (GPU) had already been a breakthrough, it only foreshadowed the advent of specialized integrated circuits, or ASICs, which would take the network's computing power to another giant leap forward.
This final evolution, planned long ago by Satoshi Nakamoto, was gradually developed thanks to programmable logic circuits (FPGAs), which made it possible to virtually optimize the hardware for Bitcoin's hash function. The first open FPGA algorithm was published in May 2011, and ASIC applied FPGA optimizations to the chips themselves. The first ASIC pre-sale, by US company Butterfly Labs, took place in June 2012. Finally, the first working ASIC, the Avalon ASIC, was distributed to the general public in January 2013.
However, it's a story that deserves a little more attention, which we'll be doing in our next course on the rise of Bitcoin. Let's now return to the end of 2011, to focus on the major controversy that marked the protocol's development at the time: the battle over Pay to Script Hash.
Quiz
Quiz1/5
Besides his mining pool’s identifier, what did the majority of inscriptions made by Luke-Jr through Eligius contain in August 2011?