June 4, 2019

Майнинг в сети Биткойн

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

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

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

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

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

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

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

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

Hash&Nonce


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

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

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

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

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

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

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

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

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

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

*График эмиссии и награды за блок с сайта www.coinside.ru

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

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

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

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

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

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

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

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

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

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

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

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