Как работает биткоин. Часть 5.1

ПРОВЕРКА КОРРЕКТНОСТИ НОВОГО БЛОКА

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

Когда узел получает новый блок, он начинает процедуру его валидации, проверяя длинный список критериев, которым непременно должен соответствовать новый блок. При любых несоответствиях блок отвергается. Эти критерии можно найти в программном коде клиента Bitcoin Core в функциях CheckBlock и CheckBlockHeader, а их краткие описания приведены ниже:

структура данных блока должна быть синтаксически корректной;

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

метка времени блока не должна превышать будущее время более чем на два часа (это допущение сделано с учетом возможных ошибок при вычислении текущего локального времени);

размер блока не должен превышать установленного предела;

первая транзакция (и только первая транзакция) должна представлять собой coinbase-транзакцию;

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