Что такое майнинг? Как майнить Bitcoin?

Майнинг Bitcoin это прежде всего поддержка инфраструктуры, обеспечение работы всей сети, и конечно получение новых Bitcoin. По сути майнинг это добыча биткоинов в обен на поддержку работоспособности всей сети. Суть майнинга, это решение сложных математических задач на компьютерах пользователей и получение за это профита. Процесс получения биткоинов не контролируется единым центром, а распределенность сети обеспечивает высокую безопасность. Это довольно сложный и не понятный процесс с точки зрения пользователя. Заниматься майнингом битконов может любой желающий, но сейчас, делать это в домашних условиях уже не рентабельно с точки зрения получения прибыли.

История майнинга

Человек который добыл первые 50 Биткоинов был Сатоши Накомото. Когда сеть начала набрать популярность, пользователи сети майнили биткоины прямо на своих домашних компьютерах. Со временем сложность майнинга ростет, и добыча биткоина с помощью обычного CPU-майнинга стала сложной, долгой и не затратной. Тогда появился GPU-майнинг, так как чипы графических карт гораздо лучше справляются с поиском хеш-функций SHA256. Но спустя какое-то время этот метод так-же стал не рентабельным и затратным (расходы на электричество, дороговизна графических карт) тогда ушлые майнеры перешли на специальные устройства, которые и есть в обиходе по сей день, эти устройства называются ASIC. Все что они умеют, это вычислять хеш-функции SHA256. Вот так выглядит “ферма” по добычи биткоинов.

asic

Вообще отличная статья на тему майнинга написана на Lukomore. Я же хочу сосредоточится на технической стороне вопроса.

Майнинг биткоинов на Linux

Я забыл упомянуть, что соло-майнинг вообще гиблое дело, а вот майнинг в пулах дает кое-какие результаты. Я буду исходить из того факта, что вы уже сходили на Lukomore и прочли всю необходимую теорию про майнинг, так вот посмотреть какие пулы популярны можно например на Blockchain или на bitcoinchain.

pools

Я во всех примерах буду рассматривать популярный и наверное самый старый пул Slush’s pool. С чего начать? Необходимо присоединится к пулу и создать workers. Для этого идем на сайт https://mining.bitcoin.cz регистрируем там аккаунт, подтверждаем его и в строке Bitcoin address: вводим адрес вашего Bitcoin кошелька.

wallet

А так-же создаем пару тройку worker’ов, в зависимости от колличества кстройств на которых вы собираетесь майнить. Задаете им имена и пароли.
workers

CPU-mining на Linux

Мы не будем обсуждать выгодно это или нет. Наша цель – техническая сторона вопроса. Итак я беру для примера машину на Centos 6.5 Final 64bit. План такой, качаем программу для CPU-майнинга, компилируем, запускаем и сидим давольные.

Ставим необходимые пакеты для успешной компиляции:

yum install git automake gcc make curl-devel
yum install git automake gcc make curl-devel

Копируем репозитарий Git на сервер:

git clone https://github.com/pooler/cpuminer
cd cpuminer
git clone https://github.com/pooler/cpuminer
cd cpuminer

Компилируем:

./autogen.sh
./configure CFLAGS="-O3"
make
make install
./autogen.sh
./configure CFLAGS="-O3"
make
make install

Смотрим готовую версию:

/usr/local/bin/minerd --version
/usr/local/bin/minerd --version

Теперь когда все готов. Нужно понять сколько ядер у CPU:

cat /proc/cpuinfo | grep -i cores
cat /proc/cpuinfo | grep -i cores

Запускаем программу и начинаем майнить:

minerd --userpass=name.worker:mypassword --url=stratum+tcp://stratum.bitcoin.cz:3333 --algo=sha256d --threads 2
minerd --userpass=name.worker:mypassword --url=stratum+tcp://stratum.bitcoin.cz:3333 --algo=sha256d --threads 2

Тут есть два важных момента. Первый это параметр:

--algo=sha256d - именно этот алгоритм используется для генерации хэшей в Bitcoin.
--threads 2 - колличество ядер = колличству тредов
--algo=sha256d - именно этот алгоритм используется для генерации хэшей в Bitcoin.
--threads 2 - колличество ядер = колличству тредов

Вывод должен быть такой:

[2013-12-09 21:51:25] thread 0: 49985792 hashes, 832.61 khash/s
[2013-12-09 21:51:29] thread 1: 51072988 hashes, 841.16 khash/s
[2013-12-09 21:52:23] thread 0: 49956628 hashes, 864.18 khash/s
[2013-12-09 21:52:32] thread 1: 50469540 hashes, 808.16 khash/s
[2013-12-09 21:53:26] thread 0: 51850904 hashes, 833.58 khash/s
[2013-12-09 21:53:29] thread 1: 48489516 hashes, 855.40 khash/s
[2013-12-09 21:54:25] thread 1: 46821320 hashes, 834.33 khash/s
[2013-12-09 21:54:25] accepted: 1/1 (100.00%), 1668 khash/s (yay!!!)
[2013-12-09 21:54:25] thread 0: 50014552 hashes, 838.40 khash/s
[2013-12-09 21:54:41] thread 1: 13586032 hashes, 850.75 khash/s
[2013-12-09 21:54:41] accepted: 2/2 (100.00%), 1689 khash/s (yay!!!)
[2013-12-09 21:51:25] thread 0: 49985792 hashes, 832.61 khash/s
[2013-12-09 21:51:29] thread 1: 51072988 hashes, 841.16 khash/s
[2013-12-09 21:52:23] thread 0: 49956628 hashes, 864.18 khash/s
[2013-12-09 21:52:32] thread 1: 50469540 hashes, 808.16 khash/s
[2013-12-09 21:53:26] thread 0: 51850904 hashes, 833.58 khash/s
[2013-12-09 21:53:29] thread 1: 48489516 hashes, 855.40 khash/s
[2013-12-09 21:54:25] thread 1: 46821320 hashes, 834.33 khash/s
[2013-12-09 21:54:25] accepted: 1/1 (100.00%), 1668 khash/s (yay!!!)
[2013-12-09 21:54:25] thread 0: 50014552 hashes, 838.40 khash/s
[2013-12-09 21:54:41] thread 1: 13586032 hashes, 850.75 khash/s
[2013-12-09 21:54:41] accepted: 2/2 (100.00%), 1689 khash/s (yay!!!)

В результате вы увидите на сайте что worker работает.

BFGMiner для ASIC/FPGA майнинга на Linux

Популярная и серьезная программя для майнинга на устройствах ASIC/FPGA. Программа написана на С и имеет октрытый код на github. Если запустить таку программу просто помайнить, она будет ругаться на отсутсвие девайса в USB. Но в принципе ее можно заставить заниматься GPU-майнингом.

НА Ubuntu она ставится через PPA:

sudo add-apt-repository ppa:unit3/bfgminer
sudo apt-get update
sudo apt-get install bfgminer
sudo add-apt-repository ppa:unit3/bfgminer
sudo apt-get update
sudo apt-get install bfgminer

Программа обладает большим набором самых разных опций. Но принцип ее запуска тот же:

bfgminer -o stratum+tcp://stratum.bitcoin.cz:3333 -u mothes.workername -p password -S auto
bfgminer -o stratum+tcp://stratum.bitcoin.cz:3333 -u mothes.workername -p password -S auto

Здесь стоит обратить внимание на опцию -S auto, именно она говорит программе не искать ASIC/FPGA в системе, а довольствоваться тем что есть, т.е GPU. Скринот работы программы представлен ниже.
bfgminer

RPM пакеты для 64битной архитектуры можно найти тут.

Майнинг на Windows

Здесь существует великое множество программ. Приницип работы тот же. Выбираем пул, создаем воркер, запускаем программу, вводим имя воркера и пароль. Одна из наиболее популярных программ для майнинга на Windows – GUIMiner. Качаем, устанавливаем и запускаем.

GUIminer

Послесловие