Вы здесь

Майнинг криптовалют – что это? (простое и профессиональное объяснение)

что такое майнинг

Начнем с простого определения, а потом углубимся в саму суть и принцип работы технологии с живыми примерами.

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

Майнеры используют дорогостоящее оборудование для проверки транзакций и предотвращения мошенничества в сети. Они проверяют новые транзакции и записывают их в глобальную книгу (блокчейн).

Иначе говоря, майнинг – это процесс разгадывания блоков в технологии блокчейн. За разгадывание блоков майнер (человек, занимающийся майнингом) получает вознаграждение в той криптовалюте, блоки которой разгадывал.

Майнинг не создает новые монеты (биткойны). Mining - это механизм, который позволяет блочной цепи криптовалюты быть децентрализованной.

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

Что такое блок и как его разгадать?

Представьте, что для выигрыша в конкурсе, Вам нужно собрать определенное количество «счастливых» билетиков (в шестизначном номере билета сумма первых трех цифр равна последним трем) из автобуса №23, причем необходимо, чтобы первая и последняя цифра в номере билетика совпадали.

Сложная задача, не правда ли? Вы долго будете ездить на этом автобусе, и проверять все билетики кондуктора, но в итоге соберете нужное количество и выиграете конкурс, получив награду. Так и в майнинге: оборудование решает сложные криптографические задачи — часть процесса шифрования, защищающего транзакции от киберпреступников и доступа третьих лиц. Итог верного решения задачи – формирование нового блока. Награду за создание блока майнер получает в той криптовалюте, блок которой разгадывал.

блокчейн

Процесс майнинга важен еще и тем, что во время него происходит эмиссия криптовалюты (выпуск криптовалюты в обращение). Дело в том, что каждая криптовалюта создается в ограниченном количестве на основе технологии блокчейн. Разгадав блок и получив за это вознаграждение, майнер вводит в обращение новую монету.

Майнинг бывает нескольких видов:

  1. Майнинг с использованием оборудования. Он происходит по технологии PoW (Proof-of-Work), что в переводе означает доказательство работой.
  2. Майнинг по технологии PoS (Proof-of-Stake), что в переводе означает доказательство ставкой, вложением. Для такого майнинга необходим кошелек с наличием некоторого количества криптовалюты и подключенный к сети обычный ПК.
  3. Облачный майнинг, то есть аренда мощностей оборудования для майнинга в сети (компания закупает, устанавливает и настраивает оборудование, а Вы пользуетесь определенным количеством его мощности за определенную плату).

Теперь попробуем объяснить это на конкретных примерах: Как появляются новые монеты, и как работает майнинг изнутри.

Профессиональное объяснение

Поначалу, цель майнинга немного сбивает с толку. Мы будем иметь ввиду блокчейн Биткойна в качестве примера на протяжении всей этой статьи.

Майнинг – это не создание новых биткойнов. Майнинг - это механизм, который позволяет цепочке блоков быть децентрализованной и безопасной. Он защищает сеть Биткойна и позволяет использовать систему без централизованного управления.

Не путайте вознаграждение, которое получают майнеры (создавая новые монеты) с самим процессом.

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

Майнеры проверяют новые транзакции и записывают их в глобальную книгу (блокчейн). В среднем блок (структура, содержащая сделки) добывается каждые 10 минут.

Майнеры соревнуются в решении сложной математической задачи на основе криптографического алгоритма хеширования. Найденное решение называется Proof-Of-Work. Это «доказательство работы» подтверждает, что майнер действительно потратил много времени и ресурсов для решения проблемы.

Когда блок «решен», содержащиеся в нем транзакции считаются подтвержденными, и Биткойн, связанный с решенным блоком может быть потрачен.  

Таким образом, если вы получите Биткойн на свой кошелек, то подтверждение транзакции займет около 10 минут.

Майнеры получают награду, когда решают сложную математическую задачу.

Есть два типа вознаграждения:

  1. новые биткойны
  2. комиссии за транзакции

Количество создаваемых биткойнов уменьшается каждые 4 года (если быть точным, каждые 210 000 блоков). Сегодня решенный блок генерирует 12,5 биткойнов. Это число будет уменьшаться до тех пор, пока не завершится эмиссия монеты. Это произойдет примерно в 2140 году, когда будет создано около 21 миллиона биткойнов. После этой даты больше не будет выпущено монет.

Майнеры также могут получать вознаграждения в виде комиссии за транзакции. Первый майнер, нашедший блок, может «сохранить сдачу» от транзакций блока.

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

После 2140 года майнеры получат только комиссию за транзакции в качестве вознаграждения.

Количество биткойнов, выпущенных с каждым блоком, делится на 2 каждые 210 000 блоков. Таким образом, мы можем рассчитать максимальное количество биткойнов с применением некоторого кода.

// First 210 000 blocks reward
const start_reward = 50

// The reward is modified every 210000 blocks
const reward_interval = 210000

const max_btc = () => {
  // 50 BTC = 5000000000 Satoshis
  // Satoshis are the smallest denomination in bitcoin
  let current_reward = 50 * 10 ** 8
  let total_btc = 0
  while( current_reward > 0 ){
    total_btc += reward_interval * current_reward
    current_reward = current_reward / 2
  }

  return total_btc
}

console.log(`The maximum amount of BTC created will be ${max_btc()} Satoshis, or ${max_btc() / 10**8} BTC`)
// The maximum amount of BTC created will be 2100000000000000 Satoshis, or 21000000 BTC

Итак, да, 21 миллион будет максимальным количеством биткойнов.

Как это работает?

Вопрос в том, как все участники сети могут договориться об универсальной «правде» о владении биткойнами, не доверяя никому в этой сети?

Блокчейн не создается и не управляется каким-либо центральным органом. Каждый узел имеет доступ к общедоступной книге транзакций, которая действует как авторитетная запись.

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

Давайте попробуем разобраться, как это работает.

Мы возьмем пример из реальной жизни. Встречайте блок №502426. Мы будем следить за жизненным циклом этого блока от его построения до его окончательной проверки.

Допустим, майнера, нашедшего блок, звали Петр.

Предыдущий блок

В мире биткойна для проверки нового блока требуется примерно 10 минут. Наш майнер Петр конкурировал, чтобы проверить блок 502425 (предыдущий). К сожалению, кто-то еще решил проблему до него.

Но конец построения одного блока означает начало нового. Как только блок 502425 был добыт, Петр обновил свою локальную копию блокчейна и начал создавать новый блок - «блок-кандидат» -  блок 502426.

В то время как компьютер Петра (узел) искал «доказательство работы» для предыдущего блока, он также аудировал и новые транзакции.

Эти новые транзакции добавляются в пул памяти или пул транзакций. Здесь они ожидают, пока они не будут включены в новый блок и проверены.

Создание блока-кандидата

Когда майнинг ферма Петра получает уведомление о том, что текущий блок имеет действительное «доказательство работы», он начинает создавать блок-кандидат, собирая транзакции в пуле транзакций.

Он удаляет уже присутствующие в предыдущем блоке транзакции, если они есть. Блок называется блоком-кандидатом, потому что у него еще нет действительного доказательства работы.

Итак, мы видим, что блок №502426 содержит 3189 транзакций. Это количество транзакций, присутствующих в пуле транзакций Петра, когда он создавал свой блок-кандидат.

майнинг-блока

Транзакция на бирже

Первое, что делает Петр - формирует транзакцию на биржу Binance. Говоря упрощенно, это его награда за майнинг блока. Эта транзакция гласит:

=> Оплатите на адрес кошелька Петра xxx BTC, чтобы вознаградить его за поиск действительного блока.

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

Награда Петра = Награда за блок майнинга + комиссии за транзакции

В этом случае мы видим, что вознаграждение за блок составляет 12,5 BTC (вознаграждение за блок в левом столбце), а комиссия за транзакции равна 4,86507997 BTC (плата за транзакцию в левом столбце).

12,5 + 4,86507997 = 17,36507997 BTC

Вы можете увидеть детали этой транзакции в списке ниже.

транзакция в блокчейне

Как вы можете видеть, здесь нет входов (вновь сгенерированных монет). Как мы уже сказали, транзакции с монетами не происходят с чьего-либо кошелька, поэтому они не могут иметь никаких входных данных. У вас здесь есть только адрес кошелька майнера нашедшего блок.

Построение заголовка блока

Ферма для майнинга Петра отвечает за создание правильного заголовка блока для блока, который он добывает. В заголовке блока есть три разных набора данных: предыдущий хеш блока, корень хеш дерева меркла и данные для конкурса в майнинге. В последнем мы копнем глубже.

Поля данных (Version, Timestamp, Target и Nonce)

В наборе метаданных содержится:

  • The Version: Это номер версии для отслеживания обновлений программного обеспечения и / или протокола.
  • Timestamp: секунды от эпохи Unix. Когда был создан блок.
  • Target: цель алгоритма Proof of Work для этого блока
  • Nonce: Счетчик, используемый для алгоритма Proof of Work

Когда был добыт блок №502426, номер версии был 2. Он становится 0x20000000 при преобразовании в формат с прямым порядком байтов в 4 байта. (Версия в левом столбце)

Далее мы получаем 4-байтовую метку времени (Timestamp). Это определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг); (этот момент называют «эпохой Unix»). Мы видим, что отметка времени для этого блока - 2019-01-03 21:12:39 (отметка времени в левом столбце). Если мы преобразуем это в секунды, мы получим 1546549959 секунд.

Поле Target определяет Proof of Work, чтобы сделать этот блок допустимым.

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

Если хэш выше целевого значения, то он недействителен. Это то, что используется для расчета сложности. В нашем блоке, сложность составляет 1,931,136,454,487.72.

Взгляните на хэш блока:

00000000000000000020c60222099aaebc6e7795784f74628ec640b223d3d339

18 ведущих нулей. Это наша сложность. Каждый хеш с менее чем 18 ведущими нулями недействителен (потому что каждый хеш с 17 ведущими нулями и меньше будет меньше требуемой цели – «Target»).

Последнее поле – это nonce. Оно инициализируется до нуля.

Теперь все готово для майнинга чтобы добыть блок. Цель состоит в том, чтобы найти значение nonce (однократно используемое число), которое приведет к хэшу ниже, чем target.

Таким образом, майнер попытается использовать миллиарды или триллионы значений nonce, прежде чем он получит действительный хеш. Это и есть процесс майнинга.

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

На картинке майнинг это:

схема работы майнинга

Как видите, майнинг похож на лотерею. Нет никакого способа предсказать, какой nonce (одноразовое число) решит проблему.

В случае Биткойна используемая хеш-функция называется SHA256. Алгоритм хеширования всегда выдает одинаковые данные произвольной длины при одинаковых входных данных:

  • Невозможно вычислить один и тот же хеш с двумя разными входами (будет противоречие).
  • Также невозможно предсказать вывод любых данных заранее.

SHA256 всегда выдает на выходе 256 бит. Майнер находит одноразовый номер (nonce), единственный вход, который изменяется каждый раз, когда мы запускаем хеш-функцию.

Очень легко доказать, что найденный одноразовый номер (nonce) в самом деле создает действительный хеш. Вся информация доступна, каждый может запустить хеш-функцию и подтвердить, является ли хеш действительным или нет.

Поскольку также невозможно предсказать, каким будет одноразовый номер (nonce), это также служит доказательством того, что майнер работал, чтобы получить действительный хеш (следовательно, перед нами алгоритм консенсуса Proof-of-Work).

Регулировка сложности

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

Чтобы этого не произошло, цель Proof of Work является динамическим параметром.

В мире биткойна цель корректируется каждые 2016 блоков. Затем мы проверяем количество времени, которое потребовалось для добычи этих 2016 блоков. Это должно было занять 20160 минут (2016 * 10 минут). Сложность увеличивается или уменьшается в зависимости от времени, необходимого для добычи этих блоков. Соответственно, чем больше майнеров в сети разгадывают блок, тем сложнее его разгадать и тем меньше награда.

Успех!

Майнер (асик-оборудование) Петра начинает работать и хэшировать заголовок блока. Примерно через 10 минут он обнаруживает действительный хэш. Мы видим, что использованный одноразовый номер (nonce) был 2469953656 (Nonce в левом столбце).

Майнер Петра немедленно передает блок всем пирам (остальным участникам сети). Они должны проверить новый блок, прежде чем распространять его среди своих коллег. Это та часть, где можно найти нечестного майнера. Если данные неверны, майнер потратил бы впустую свое время и вычислительные мощности. Действительные данные включают в себя:

  • Block header - Хеш заголовка блока должен быть меньше цели
  • Block size - Размер блока должен быть в допустимых пределах
  • Block timestamp - Временная метка блока будет менее двух часов в будущем.
  • The first transaction - Первая транзакция –это транзакция на биржу Binance (и только первая)
  • The Binance transaction - транзакция на биржу Binance имеет действительное вознаграждение.
  • All transactions - Все транзакции внутри блоков действительны (также имеют собственный контрольный список)

Каждый майнер (узел сети) независимо проверяет новые блоки, следуя тем же правилам. Это гарантирует, что майнеры не cмогут обмануть друг друга. Это ключевой компонент децентрализованного консенсуса.

Если блок действителен, то все другие майнеры обновят свою собственную копию блокчейна с новым блоком №502246.

Далее весь механизм поиска нового блока повторяется по кругу и хэш блока Петра №502246 теперь используется всеми майнерами уже для майнинга блока №502247.

Добавьте комментарий