Майнинг Биткойна | Bitcoin School
Bitcoin School

Майнинг Биткойна

8-го июня 2019

Майнинг (mining, добыча) – деятельность по созданию новых структур (блоков в блокчейне) для обеспечения функционирования криптовалютной платформы. За успешное создание очередной структурной единицы обычно предусмотрено вознаграждение в виде новых единиц криптовалюты и/или комиссионных сборов от транзакций, включённых в этот блок.

Блокчейн – выстроенная по определённым правилам непрерывная последовательная цепочка криптографически связанных блоков с информацией. Заголовок каждого следующего блока основывается на предыдущем, что делает невозможным незаметное изменение записанной ранее информации. Самый первый блок в цепочке – первичный блок (genesis block) – является исключением, так как у него отсутствует "родительский" блок.

Под информацией здесь понимается набор транзакций (переводов между адресами данной сети).

Процесс майнинга

После того, как вы подписали своим приватным ключом и зашифровали транзакцию с помощью кошелька, она отправляется в мемпул – место для транзакций, ожидающих подтверждения. Дальше майнер выбирает из пула неподтверждённых транзакций переводы, обычно с максимальной комиссией, проверяет каждый на правильность подписи отправителя и формирует из них блок.

Чтобы включить этот блок в общую цепочку, майнер должен первым подобрать такое значение специального дополнительного параметра Nonce, которое позволит получить хеш (результат хеширования заголовка блока), числовое значение которого будет не более некоторого заданного числа Difficulty TARGET ( – целевого значения при данном уровне сложности), простыми словами: будет начинаться с определённого количества нулей.

  • Кстати: сложность в сети Биткойн пересчитывается каждые 2016 блоков (~14 дней), чтобы среднее время появления нового блока оставалось около 10 минут, несмотря на изменение хешрейта сети. Хешрейт – это параметр для измерения мощности майнингового оборудования, который определяется количеством вычисленных хешей за единицу времени. Чтобы узнать, какая сейчас сложность в сети Биткойн стоит сравнить данные из нескольких источников, например, с сайтов BlockchainBitcoinity, Bitinfocharts.

После этого блок-кандидат рассылается случайным узлам сети. Те его проверяют, приходят к соглашению о его валидности, добавляют в свои копии блокчейна и отправляют блок другим узлам .

 

Hash&Nonce

Хеш – это результат хеширования, а хеширование — это такой математический алгоритм, который используется в криптографии и кодирует любую информацию. При этом, вне зависимости от размера исходной информации, в результате всегда будет получаться текст одного размера.

Результат хеширования для одних и тех же входных данных всегда будет одинаковым. Однако, стоит изменить хотя бы один символ в исходном тексте, и хеш изменится полностью.

Хеширование является односторонней функцией: из конечного хеша нельзя получить исходную информацию.

Важно заметить, что предугадать результат хеширования невозможно, особенно, когда в процесс добавляется Nonce (случайный параметр аналогичный соли). Существует множество различных алгоритмов хеширования. В Биткойне используется криптографический алгоритм, который называется SHA-256. 

В результате этого процесса получается зашифрованный заголовок блока, который включает в себя хеш предыдущего блока, подобранный nonce и сумму контрольных чисел всех транзакций в блоке.

Роль майнеров

Биткойн является одним из первых успешных практических решений так называемой "задачи о византийских генералах". Кратко она формулируется так: как установить доверие между сторонами, связанными только по каналу связи, которому нельзя доверять? Одним из ключевых моментов в решении служит криптографический метод Proof-of-work (доказательство работы) – те самые «бесполезные» вычисления, которые заведомо должны проводиться долго, но доказательство того, что они достигли правильного решения (нашли nonce), должно проверяться моментально. Это даёт возможность каждому узлу проверить новый блок, а не доверять кому-то этот процесс. После прохождения проверки, блок добавляется в блокчейн в памяти каждого полного узла.

Чтобы найти Nonce, в комбинации с которым получается хеш, подходящий по параметрам сложности , требуется решить трудную вычислительную задачу методом перебора. Этим заняты миллионы машин по всему миру, и часто несколько майнеров одновременно находят правильный ответ и продлевают цепочку. Это приводит к появлению ответвлений. Продолжением главной цепи становится тот блок, хеш которого раньше войдет в следующий блок, распространённый по сети. В редких случаях подряд появляется несколько параллельных блоков. В итоге истинной остаётся самая длинная цепь, а "тупиковые" блоки отсекаются. Они называются блоки-сироты (orphan blocks). Это позволяет системе оставаться стабильной, избегая разделения, а майнерам не тратить много ресурсов на поиск невалидных блоков.

Согласно протоколу Биткойна, награда за включенный в цепочку блок может быть потрачена только после появления 120 последующих блоков. Соответственно максимально допустимая длина временно раздвоенной цепочки – 120 блоков. На практике длина временного раздвоения цепочки редко достигает даже трех блоков, так что вероятность, что она достигнет 120, стремится к нулю. Поэтому полностью необратимой обычно считается транзакция с тремя подтверждениями. 
 

За создание валидного блока майнер получает Награду за блок – определённое количество Биткойнов. Всё началось в 2009 году с награды в 50 BTC за каждый блок. С тех пор каждые 210000 блоков (~4 года) это количество уменьшается вдвое согласно запрограммированному алгоритму. Этот процесс замедления эмиссии Биткойна называется халвинг (halfing).  Стабильность появления новых монет и известное их конечное количество (менее 21млн) сделали Биткойн уникальной валютой с минимальной предсказуемой инфляцией.

 

Варианты майнинга:

1. Индивидуальный (соло) майнинг.

Суть – использование собственного оборудования. Для эффективной добычи требуется большая мощность оборудования, поэтому создаются фермы. Ферма – самодельное устройство, состоящее из мощных компьютерных элементов, объединённых между собой для получения максимальной производительности.

Начинался майнинг с процессоров (CPU) и видеокарт (GPU) (это актуально и сейчас, однако менее прибыльно). Современный майнинг опирается на мощные «асики» – ASIC-процессоры, узко специализированные устройства для хеширования по определенному алгоритму.

2. Майнинг в пуле.
Пул – это программное решение для объединения мощности оборудования сразу многих майнеров для повышения вероятности нахождения блока. Награда за блок, добытый пулом, распределяется среди всех участников в зависимости от их вклада.

3. Облачный майнинг.
Для начала работы не нужно покупать дорогостоящее оборудование и программное обеспечение. Нужно лишь найти приличный сервис в интернете, который продает контракты на использование его мощностей. Вы их арендуете и используете по своему усмотрению. Это дает возможность майнить криптовалюту людям, которые живут в странах с высокой стоимостью электричества, а также тем, чьи технические знания недостаточны, чтобы самому собрать оборудование и настроить программное обеспечение.

4. Скрытый майнинг. 
Это добыча криптовалюты с использованием мощностей чужого оборудования через распространение специальной программы (вируса). Скрытый майнер маскируют под обычный файл и защищают от антивирусов. Лучшие сборки подобных вирусов практически невозможно удалить из памяти компьютера или обнаружить антивирусным ПО. Для этого варианта майнинга используют не только ПК других людей, но и любое оборудование с процессором. Этот способ является неэтичным и, как следствие, незаконным.

5. Неэффективный майнинг.

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

 

Заключение

Майнинг – это одна из основополагающих особенностей Биткойна и большинства криптовалют. В результате деятельности майнеров решаются следующие задачи:

  • Формирование новых блоков транзакций и добавление их в блокчейн;
  • Эмиссия новых монет;
  • Вознаграждение узлам за обработку транзакций и поддержание стабильности сети;
  • Сохранение большого количества копий блокчейна в распределенной системе.

    Все это позволяет построить надежную распределенную саморегулирующуюся систему, первой из которых стал Биткойн.

Чтобы лучше понять более глубинные аспекты, заложенные алгоритмом PoW майнинга, прочитайте переводы статей из серии "постепенно, затем внезапно":
- Моделирование ценности Биткойна с учетом дефицита
- Биткойн не тратит энергию зря
- Биткойн не слишком медленный