X
Нажмите Нравится

Биткоин для «чайников»: Майнинг

3 июля 2017, 10:30 |
«Майнинг» — второе слово после «блокчейна», с которым у многих ассоциируется Биткоин.
Биткоин для «чайников»: Майнинг

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

Для большинства майнинг — это какой-то фантастически непонятный процесс в ходе которого при помощи компьютерного оборудования (видеокарт и asic-процессоров) идет добыча денег — монет биткоина.

Действительно, слово «майнинг» (mining) в переводе с английского означает добычу полезных ископаемых. А майнеры (miners) — это шахтеры.

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

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

Собственно, процесс денежных переводов в типичной финансовой среде описывается серией из четырех последовательных шагов:

  1. Submission — отправитель посылает в систему платежное сообщение (поручение) о переводе некоторой суммы денег получателю;
  2. Validation — сообщение проходит процедуру проверки отправителя и целостности сообщения;
  3. Conditionality — проверяется наличие достаточного баланса для перевода на счету отправителя;
  4. Settlement — проведение транзакции, перевод денежных средств на счет получателя.

В современной экономике эти процессы обычно поддерживаются финансовыми посредниками, такими как банки.

Отправитель (клиент банка) посылает платежное сообщение или поручение (submission) в платежную систему банка. Это сообщение должно пройти процедуру подтверждения (идентификации) клиента и целостности сообщения (validation). После успешной валидации сообщения банковская система проверяет необходимые условия для платежа (conditionality), а именно — достаточность средств на балансе клиента или наличие кредита. Если все проверки пройдены, банк окончательно (безусловно и безотзывно) проводит платеж (settlement)— пополнение счета получателя и уменьшение баланса счета отправителя.

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

Криптовалюты, в частности Биткоин, являются полностью децентрализованными системами, в которых вопросы доверия решаются криптографическими методами.

Поэтому, процесс денежных переводов в них присходит несколько по-другому, а именно:

  1. Submission — отправитель перевода при помощи программного приложения «биткоин-кошелек» направляет в сеть Биткоина сообщение, в котором указываются биткоин-адреса отправителя и получателя, а также сумма перевода и сумма комиссии за перевод (опционально).
    Это сообщение автоматически подписывается электронной цифровой подписью (ЭЦП) отправителя, которая формируется при помощи закрытого (приватного) ключа отправителя и криптографически связана с его биткоин-адресом. Подробнее см. статью «Электронная цифровая подпись: Просто и наглядно».
  2. Validation — это сообщение проходит проверку в сети по ЭЦП. Тем самым, происходит идентификация отправителя. Для проверки используется биткоин-адрес, поскольку он связан с приватным ключом отправителя при помощи которого он подписал сообщение.
    На самом деле личность отправителя не имеет значения, она остается анонимной. Под идентификацией отправителя понимается соответствие биткоин-адреса отправителя и сообщения (платежного поручения) криптографической подписи (ЭЦП). Тем самым подтверждается, что указанная сумма денег (монет биткоина) должна быть отправлена с конкретного биткоин-адреса.
  3. Conditionality — проверяется наличие достаточного баланса для перевода на счету отправителя. Для этого, согласно протоколу Биткоина, происходит подсчет всех непотраченных Выходов (т.н. UTXOunspent transaction output) этого адреса. Подробнее см. статью «Биткоин за 5 минут: Блок».
  4. Если все проверки прошли, сформированная транзакция ждет добавления в блок и записи в блокчейн.

И вот тут, собственно, и начинается процесс, который получил название «майнинг».

Что же это такое? Попробуем разобраться…

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

Но, во-первых, мы знаем, что данные (транзакции) в блокчейн записываются в виде блоков (транзакций). Следовательно, надо предварительно сформировать блок. Если блок будет маленьким, например, из нескольких транзакций, то блоки формировались бы с большой скоростью — сотни блоков в минуту.

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

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

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

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

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

Поэтому протоколом Биткоина предусмотрено, что каждые 10 минут в блокчейн может быть записан только один сформированный блок.

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

Автор Биткоина, некий Сатоши Накамото, предложил в протоколе использовать для определения такого узла алгоритм, который получил название Proof of Work (PoW) — доказательство сделанной работы.

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

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

Такой криптографической задачей в протоколе Биткоина является задача по подбору параметра, называемого nonce, который, будучи добавлен к заголовку сформированного блока, давал хэш-код (см.статью «Хэширование: Просто и наглядно»), начинающийся с заданного количества нулевых битов (bits), что равносильно получению хэша, менее и равного заданного большого числа.

Другими словами, надо добавить такую короткую строку данных (nonce) в сформированный блок, чтобы получившийся хэш-код блока начинался с нескольких нолей.

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

С другой стороны, проверка правильности решения этой криптографической задачи очень проста — надо просто добавить nonсе в сформированный блок и вычислить его хэш-код при помощи хэш-функции SHA-256.

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

Таким образом, PoW нужен для того, чтобы определить единственный узел (единственного майнера), который запишет сформированный им блок в блокчейн. Собственно в этом и состоит консенсус всей сети — она должна определить единственного, которому временно делегируются полномочия записи в блокчейн.

Весь этот процесс по «цифроперемалыванию» — подставил новый параметр nonce, вычислил хэш, проверил результат и т.д. до нахождения нужного хэша с нолями в его начале, — и есть пресловутый «майнинг»!

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

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

Но вернемся к майнигу… А где же добытые «шахтерами» (майнерами) деньги (биткоины)?

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

Собственно, новые монеты могут попасть в сеть Биткоина только в результате майнинга. Тем самым осуществляется эмиссия биткоина.

Первоначально (в 2009 году) за каждый новый блок (т.е. каждые 10 минут) манеры, которые добавили его в блокчейн, получали 50 монет BTC. Но, опять же, протоколом Биткоина установлено, что через каждые 210 000 блоков (примерно 4 года) вознаграждение за новый блок уменьшается в 2 раза. Поэтому сейчас (2017 год) майнеры получают за добавленный блок 12,5 BTC. А суммарное количество биткоинов (эмиссия) не может превышать 21 млн монет. Почему это так, я рассказал в статье «Почему количество биткоинов ограничено».

Помимо платы за блок майнеры, добавившие блок в блокчейн Биткоина, получают комиссионное вознаграждение (transaction fee) с каждой транзакции. При этом майнеры стараются наполнить блок в первую очередь транзакциями с максимальной комиссией. Поэтому, если отправитель указал небольшую комиссию, его платежное поручение откладывается в исполнении. В результате некоторые платежи могут идти часами, а то и вовсе не пройти.

Подведем итоги:

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

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

Ранее по теме «Биткоин за 5 минут»:

 

Читайте также:
© 2009-2019 «20 хвилин». Все права защищены.
Правила использования содержания сайта.
Реклама
Киев выступает за международный статус для Керченского пролива

Киев выступает за международный статус для Керченского пролива

Признание Керченского пролива международным поможет избежать спекуляций со стороны Москвы, заявила заместитель министра иностранных дел Украины Елена Зеркаль.
Реклама на сайте Лучшая книга о биткоине: Биткоин для всех
Реклама на сайте
загрузка...
Реклама на сайте

Яндекс.Метрика