Продолжаем знакомство с тем, как устроена и как работает децентрализованная электронная денежная система Биткоин. Начало смотрите здесь: Введение в Биткоин: Краткое техническое руководство
В предыдущей статье мы рассмотрели устройство и работу Биткоин-сети. Как вы уже знаете, каждый полный узел в сети Биткоина хранит блокчейн — полную базу данных транзакций. Каким же образом транзакции попадают в блокчейн? Для этого нужен процесс, который называется майнингом (mining).
Что такое майнинг?
Майнинг — это процесс добавления транзакций в блокчейн.
Как это работает?
Каждый узел в Биткоин-сети делится информацией о новых транзакциях. Узлы хранят эти транзакции в своем пуле памяти (memory pool или mempool).
Пул памяти является областью временного хранения данных новых транзакций.
Вы можете представить себе пул памяти как «плавающие» транзакции, а блокчейн — как «заархивированные» транзакции.
Каждый узел также имеет возможность попытаться добавить транзакции из своего пула памяти в специальную базу данных. Эта база данных является регистром (ledger) всех транзакций биткоинов и называется блокчейном (blockchain). Она подобна бухгалтерской книге, в которую записывают все денежные операции — кто, когда, кому и сколько денег перевел.
Однако, чтобы добавить транзакции из пула памяти в блокчейн, узел должен использовать много вычислительной мощности компьютера.
Эта вычислительная мощность обусловлена решением сложной задачи с пулом памяти.
Что это за сложная задача?
Представьте, что вы узел. В любой момент времени вы можете сжать транзакции в пуле памяти в одну «строку» цифр и букв. Этот процесс называется хэширование, а полученный результат — хэшем (hash).
Эта строка (хэш) представляет образ всех транзакций в пуле памяти.
Теперь ваша цель состоит в том, чтобы хэшировать эту строку с другим числом, называемым nonce, чтобы попытаться получить новую строку, которая начинается с определенного количества нулей.
В большинстве случаев вы получите результат, который даже не близок к этому:
Но если вы продолжите поиски nonce, вы можете наткнуться на число, которое cработает и вы получите требуемый результат:
Это звучит достаточно просто, но на самом деле это очень сложно. Этот процесс совершенно случаен, и вы можете надеяться на требуемый результат только путем перебора — совершения проб и ошибок. Это и есть майнинг — много операций хеширования (используя вычислительную мощность вашего компьютера) в надежде на удачу.
Но если вам посчастливилось найти успешный результат хэша (число nonce), вы можете добавить все транзакции из пула памяти в блокчейн, а каждый другой узел в сети обновляет блокчейн с добавленным вами блоком транзакций на своем компьютере.
Вы также получите вознаграждение в биткоинах (на момент написания этой статьи — 12,5 BTC) за свои усилия, а также комиссионные за все транзакции, которые вы только что добавили в блокчейн.
«Определенное количество нулей» означает ,что хэш менее определенного заданного числа (target), которое зависит от сложности (difficulty). Она устанавливается сетью и изменяется в зависимости от количества майнеров (точнее — от суммарной майнинговой мощности ) — чем больше людей занимается майнингом, чем выше суммарная мощность их компьютеров, тем больше сложность и чем больше нулей требуется в начале хэша. Это затрудняет поиск необходимого результата (nonce).
Примечание: Это немного упрощенная версия того, как блоки транзакций добавляются в блокчейн. Более подробно описано в главе «Блоки».
Почему необходим майнинг?
Хороший вопрос. Почему бы просто не добавить транзакции из пула памяти в блокчейн?
Во-первых, надо решить, какой именно узел в одноранговой сети будет добавлять блок новых транзакций в блокчейн.
Во-вторых, майнинг позволяет всей сети Bitcoin договориться о том, какие транзакции «архивируются», и именно так предотвращается мошенничество с цифровой валютой.
Когда вы совершаете биткоин-транзакцию, узлы в сети не получают информацию об этом сразу. Вместо этого новые транзакции проходят через всю Биткоин-сеть, передаваясь от одного узла к другому.
Однако на самом деле можно сделать другую транзакцию, используя те же биткоины, и отправить эту транзакцию в сеть. Например, вы можете купить пиво за биткоины, а затем быстро попытаться купить кусок пиццы за те же биткоины.
Другими словами, это известное всем мошенничество или проблема «двойных трат».
Некоторые узлы сначала получают транзакцию с пиццей (и игнорируют транзакцию с пивом), тогда как другие сначала получают транзакцию с пивом (и игнорируют транзакцию с пиццей).
Тем не менее, даже если вы делаете транзакцию пиццы после транзакции пива, вследствие того, каким образом транзакции перемещаются по Биткоин-сети, сеть придет в разногласие о том, что вы на самом деле купили за свои биткоины — пиво или пиццу.
Так как же сеть решает, какую транзакцию добавить в блокчейн?
Посредством майнинга, разумеется!
Если какой-то узел в сети решает задачу, то все транзакции в его пуле памяти добавляются в блокчейн.
Если узел с транзакцией пиццы успешно добывает блок, то эта транзакция добавляется в блокчейн, а транзакция с пивом удаляется из сети.
Разумеется, это немного необычный способ выбора транзакций, но это именно то решение, которое Биткоин-сеть использует для достижения консенсуса при работе с противоречивой информацией.
С другой стороны, для добавления каждого нового блока транзакций в блокчейн требуется около 10 минут, поэтому вам нужно только подождать 10 минут для подтверждения того, что биткоины «пришли» на новый адрес (и не были отправлены на альтернативный адрес).
Еще одно преимущество майнинга
Если вы хотите попытаться управлять (манипулировать) блоками (то есть транзакциями), которые добавляются в цепочку блоков, вы должны конкурировать, чтобы решать головоломки блоков, со всеми остальными майнинговыми узлами в Биткоин-сети.
Другими словами, вам нужен компьютер с достаточной вычислительной мощностью, способной превзойти совокупную вычислительную мощность всех остальных майнеров биткоинов.
Что вполне возможно — вам просто нужно потратить несколько миллиардов долларов на аппаратное обеспечение, и вы готовы к работе (хотя эта цифра увеличивается с каждым новым майнером, присоединяющимся к сети).
Таким образом Биткоин-сеть экономически защищена от манипуляций с транзакциями.
* * *
В следующей публикации будет рассмотрено, как работает Блокчейн.
Подписывайтесь на мой аккаунт @uanix и голосуйте за меня, как делегата Голоса: https://golos.id/~witnesses
Hello, @uanix. You received 100% upvote from UPRomo for burned GBG. Promoted this post in the queue: @ms-boss, @upromo.
Service added about 22.162 GBG to your post.
The instruction for burning, for promotion or a drop of posts.
Invest in UPRomo and promote increase in number of the burned GBG.
Agreement on the use of service UPRomo.
Здравствуйте, @uanix. Вы получили 100% апвот от UPRomo за сожженные GBG. Продвигали этот пост в очереди: @ms-boss, @upromo.
Сервис прибавил к вашему посту примерно 22.162 GBG.
Инструкция по сжиганию для продвижения или задвигания постов.
Инвестируйте в UPRomo и способствуйте увеличению количества сжигаемых GBG.
Соглашение об использовании UPRomo.