Как в результате майнинга осуществляются криптовалютные транзакции в блокчейне?

Когда-нибудь задумывались, как работает майнинг в блокчейне, или как транзакции подтверждаются и добавляются в блокчейн? И я тоже. Но из-за того, что мне так и не попалось чёткое и доступное пошаговое объяснение этого процесса, я решил написать его сам. Итак, представляем вам результат исследования на тему, как обрабатываются транзакции в блокчейне. Всего семь шагов:Майнинг, также известный как хэширование (алгоритм консенсуса «доказательство выполнения работы»/Proof of Work). Математическая задача, которую приходится решать каждому майнеру при попытке добавления блока в блокчейн, заключается в нахождении хэш-суммы (также называемой цифровой подписью) для данных в этом блоке. Причём подпись должна начинаться с определённого количества идущих подряд нулей. Выглядит весьма трудной задачей, не так ли? На самом деле всё не так сложно. Позвольте мне попытаться объяснить это в упрощённом виде. Прежде чем мы продолжим, важно знать, что такое хэш-функция. Говоря простым языком, хэш-функция представляет из себя математическую задачу, которую очень сложно решить, но при этом полученный ответ очень просто проверить. Хэш-функция берёт строку входных данных, состоящую из цифр и букв (любую, в прямом смысле этого слова, строку случайных букв, чисел и/или символов) и преобразовывает её в новую 32-символьную строку, состоящую из случайных букв и цифр. Эта 32-символьная строка и есть хэш-сумма. Если изменяется любая цифра или буква во входящей строке, то хэш-сумма также изменится случайным образом. Однако, одна и та же строка входных данных всегда на выходе будет иметь одну и ту же хэш-сумму. Теперь примите во внимание, что данные внутри блока – это входные данные для хэширования (та самая строка данных). В результате обработки этих входных данных хэш-функцией мы получаем хэш-сумму (32-символьную строку). Правилами блокчейна Биткойна оговаривается, что только те блоки могут быть добавлены в блокчейн, чьи подписи (хэш-сумма) начинаются с определённого количества нулей. Однако, сгенерированная выходная строка является всегда случайной для разных строк данных на входе. А что если строка данных блока в результате обработки хэш-функцией не даёт на выходе подпись (хэш-сумму), начинающуюся с того определённого количества идущих подряд нулей? Так это и является причиной того, что майнерам приходится многократно изменять некий фрагмент данных своего блока, называемый «нонс» (англ. nonce). Каждый раз, когда майнер изменяет нонс, это влечёт за собой незначительное изменение компоновки данных блока. А когда меняется структура данных внутри блока (то есть, его входные данные), также изменяется и его подпись (или его выходные данные). Итак, каждый раз, когда меняется нонс блока, этот блок получает новую случайную подпись. Такая процедура изменения нонса повторяется майнерами бесконечное число раз, пока в конечном итоге они случайно не наткнутся на выходную строку, удовлетворяющую требованиям к подписи блока (определённое количество нулей в самом её начале). Ниже приведён пример, иллюстрирующий этот процесс. В примере используется семь нулей, но количество нулей на самом деле зависит от сложности блока в блокчейне. Сложность блока – это несколько более продвинутая тема, поэтому предлагаю вам ознакомиться с ней в отдельном материале. Именно таким образом майнерам приходится искать подходящую подпись для своего блока, и это также является причиной, по которой требуются так много вычислительных мощностей для решения этой математической проблемы. Перебор настолько огромного количества нонсов в попытке угадать правильный занимает много времени и больших вычислительных мощностей. Также следует учитывать то, что с ростом мощности хэширования (количества майнеров) в блокчейне увеличится и сложность математической задачи, что повлечёт за собой увеличение средних расходов на электричество, требуемого для решения блока. Вы большие молодцы, если дочитали до этого момента! Давайте продолжим и перейдём к шагу 5. Примечание: На самом деле этот процесс не определяется как математическая задача, но скорее является чем-то детерминированным – компьютеры выполняют предопределённые операции над числом, чтобы выяснить, является ли результат именно тем, что требуется. 16. 01. 2020

Интересное по теме