Progress pill
The Bitcoin Community

The Digital Gold Rush

  • The First GPU Farm
  • Mining Specialization
  • The First Mining Pools
  • The Great Leap Forward in Mining
In the previous part, we studied the effect that the publication of the Bitcoin presentation on Slashdot (slashdotting) had and how Satoshi and his aides managed the initial technical troubles. By the end of the summer, the project had weathered the storm and was ready to welcome an increasing number of people. The fall of 2010 thus marked a period of success for Bitcoin. This period was particularly a golden era for mining, which saw significant improvements with the emergence of the first GPU farms and the first cooperative. The resources deployed were increasing, and the performance of dedicated algorithms was improving. It was somewhat a "digital gold rush," as a blogger of the time (using the pseudonym jimbobway) wrote, noting that "thousands of internet users" were mining bitcoins "in hopes of fortune" and that many of them were attempting "to develop software and hardware tools to mine bitcoins more efficiently" in hopes of becoming filthy rich. (original: "Bitcoins: A New Digital Gold Rush (...) Thousands of users on the Internet are now mining for bitcoins in hopes of fortune. Many are trying to develop software and hardware tools to mine for bitcoins more efficiently in hopes of becoming filthy rich.")

The First GPU Farm

After Bitcoin was slashdotted in July 2010, the high financial reward from the price increase and the possibility of future growth encouraged individuals to dedicate themselves to generating bitcoin more intensively. That's why the hash rate of the network, which was at 0.22 GH/s on July 11, went up to 2.78 GH/s on the 17th, then to 5.79 GH/s on August 15, to eventually reach 9.94 GH/s on September 19 and finally 12.58 GH/s on September 29.
Total network hash rate from July 11 to October 5, 2010 (source: CoinWarz)
The biggest miner of this period was a German developer who went by the name ArtForz. After learning about Bitcoin through Slashdot, he quickly got involved in software development and spent much time on the IRC channel #bitcoin-dev. In particular, he developed his own GPU mining algorithm with OpenCL, which he ran with his computer's graphics card. He started generating bitcoins on July 19. On July 25, in a thread surveying users about their bitcoin holdings, ArtForz stated he had generated 1,700 bitcoins in 6 days, which corresponds to 4% of the hash rate, or 80 MH/s. Gradually, he built a large mining farm, which would be known as "ArtFarm." In August, his farm included 6 ATI Radeon HD 5770s, allowing him to increase from 76 MH/s on August 9 to about 450 MH/s on the 13th.
ArtForz's mining production between August and October 2010 (source: Blackburn et al., "Cooperation among an anonymous group protected Bitcoin during failures of decentralization")
Over the weeks, ArtForz came to control a significant portion of the network's computing power. On September 2, the miner puddinpop stated that he has "about 12 5770s using his OpenCL client" and that he has "more than 1 Ghash/s," giving him "20% of the network's hash capacity." (original: "ArtForz, on IRC, has like 12 or so 5770s running his own OpenCL client. The entire network is doing something around 5-6Ghash/s, and he alone has stated that he has over 1Ghash/s.") On September 23, ArtForz declared to hold a hash rate of nearly 2 GH/s, still representing 20% of the hashing. On October 3, theymos stated that ArtForz "has 20 to 30% of the network's computing power." (original: "he has 20-30% of the network's CPU power") However, other individuals who updated their systems during the fall quickly challenged this position. Subsequently, ArtForz gradually moved away from mining activities to focus on software development. In August 2011, he stated that he had less than 1% of the network's computing power.

Mining Specialization

By the end of summer 2010, ArtForz's example inspired other miners who rushed to develop their methods to generate bitcoins with their graphics processors. To do this, miners used programming environments like CUDA or OpenCL. This allowed them to achieve computing power measured in MH/s and to represent a significant portion of the total power.
On September 2, the miner puddinpop shared the executable of his mining client, exploiting an algorithm using CUDA. He included a 10% fee for anyone using it. This approach was not particularly well-received by forum members who were free software proponents.
On September 6, following a suggestion from a forum member, he stated that he would be "perhaps willing to make the code open source" if he received "a significant donation." On the 15th, Jeff Garzik made an offer in this regard, proposing to give puddinpop 10,000 bitcoins, which was about $600 at that time. Puddinpop accepted: the transaction took place on the 18th, and the algorithm was published under a free license by puddinpop shortly after. Other algorithms are made public at the same time. On September 9, a forum member calling himself nelisky shares his own mining algorithm using CUDA. On October 1, a certain Momchil Georgiev, who arrived on the forum in February and uses the pseudonym m0mchil, publishes his algorithm (POCLBM) calling it “OpenCL miner for the masses.”
This improvement allowed the most technically skilled individuals to generate a lot of bitcoins. Besides ArtForz, Nils Schneider (tcatm) notably became one of the main miners of this period. On October 3, 2010, he claimed to have a hashing rate of 983 MH/s produced by three graphics processors. This number had an effect, even astonishing Satoshi himself.

The First Mining Pools

The massive increase in the hash rate due to mining specialization made generating bitcoins with a central processor difficult, which became increasingly infeasible. Indeed, the possibility of generating bitcoins became more dependent on variance, with some individuals never managing to produce a block. The solution to this problem is cooperative mining.
On October 1, Momchil publishes an API modification that allows client nodes to retrieve a candidate block via a new function called getwork and return the proof-of-work if a solution is found. He writes that this fix “opens the way for external bitcoin miners” and “allows multiple miners to be mounted for one client.” On the same day, the idea of "pooled mining" was mentioned for the first time by a forum member in a thread titled "How to overthrow the GPU Oligarchs". On October 13, puddinpop proposed a model of this type. The miner's computing power is measured using a meta-hash, which is the imprint of a buffer including the first byte of each block hash. The server can then periodically verify that the client performs the defined calculation. This model is complex and does not allow for error.
However, partial proof of work is a much simpler way to measure a client's hash rate. This method was proposed by ribuck, Nils Schneider, and Gavin Andresen following puddinpop's description. It involves retrieving partial proofs of work of a lower degree than the network difficulty produced from the same candidate block. The collected partial proofs allow for a probabilistic estimation of the expended power.
On November 23, a modified version of the getwork function was added to the code, and on the 25th, it was included in the new version of the main software (v0.3.17). On the same day, Jeff Garzik (who advocated for the idea of separating chain management and mining within the software) shared his CPU mining software that leverages this function.
On November 27, a young Czech developer named Marek Palatinus, using the pseudonym slush, published a description of "cooperative mining" on the forum, a model that exploits getwork and Jeff Garzik's logic. This model is based on the partial proofs of work produced by the miners (pay-per-share). The next day, Satoshi Nakamoto [approved] the concept (https://bitcointalk.org/index.php?topic=1976.msg25119#msg25119).
Marek Palatinus (slush) at the Z-DAY conference in Prague on May 11, 2013
The two estimation models are implemented in December. First, the puddinpop concept is applied on December 1 by the user doublec who invites people to connect to his grouped mining server. The grouping thus formed produces its first block (95,420) on December 4. After producing an additional block a few days later, doublec's server is shut down on the 15th. The service permanently closes its doors on the 17th, due to the emergence of a much more efficient cooperative: BitcoinCZ Mining.
After surveying the forum, Marek Palatinus decides to implement his mining cooperative model and notably performs tests on the test network. He also ensures that the server can be accessible to both CPU miners (who use Jeff Garzik's software) and GPU miners (who use Momchil's and puddinpop's clients).
During the night of December 15th to 16th, the cooperative was finally launched by Marek Palatinus on the main network. The first block was found (97,834) in the morning of the 16th. Subsequently, many other blocks were produced. The mining group met with success initially: in a few days, its hash rate reached 4 GH/s, 3.5% of the total network power.
The cooperative will become a reference in terms of Bitcoin mining. It will bear several names over the years: Bitcoin Pooled Mining (BPM), BitcoinCZ Mining, and finally Slush Pool, in reference to its creator. It will become Braiins Pool in September 2022.
Logo of Slush's cooperative in September 2011 (source: archive of the site)

The Great Leap Forward in Mining

Thus, the second half of 2010 represented significant growth for mining. It specialized in the adoption of GPU (Graphics Processing Unit) generation. Several individuals focused and built real mining farms, like ArtForz and his "ArtFarm". This boom eventually led to the emergence of cooperatives, allowing small miners to pool their computing power to reduce the variance of rewards.
However, fall was not only a success for mining. It was also a success for the community and the economic ecosystem, which we will discuss in the next chapter.
Quiz
Quiz1/5
Which function, designed in October 2010 by the miner m0mchil, allowed client nodes to retrieve a candidate block and return the proof of work if a solution was found?