Блок биткойна содержит несколько тысяч транзакций и приближается к двум мегабайтам. То, что майнер действительно пытается решить, занимает восемьдесят байт и может быть написано от руки на одной строке бумаги. Все остальное представлено в этой строке.
Эти восемьдесят байт — это заголовок, и он состоит из шести полей. Четыре байта версии, указывающие, каким правилам следует блок. Тридцать два байта с хешем предыдущего заголовка, который делает цепочку цепочкой. Тридцать два байта с корнем Меркла, который резюмирует транзакции. Четыре байта даты и времени. Четыре байта с текущей целью сложности. И четыре байта для nonce, числа, которое майнер изменяет.
Корень Меркла заслуживает внимания, потому что именно он позволяет тысячам транзакций уместиться в тридцать два байта. Метод разработан Ральфом Мерклом, запатентован в 1979 году, и работает по принципу пар: вычисляется хеш каждой транзакции, хеши соединяются попарно и вычисляется хеш каждой пары, и так продолжается, пока не останется один. Этот последний и есть корень. Изменение одного сатоши в любой транзакции меняет её хеш, меняет хеш пары и поднимается, изменяя всё до корня.

Из этой структуры вытекает огромный бонус. Чтобы доказать, что транзакция находится внутри блока, не нужно иметь сам блок: достаточно пути хешей, который поднимается от этого листа до корня. В блоке с четырьмя тысячами транзакций это двенадцать хешей. Именно поэтому мобильный кошелек может подтвердить платеж, не загружая всю блокчейн.
Теперь о том, что делает майнер. Он собирает блок, вычисляет корень, заполняет заголовок и вычисляет хеш этих восьмидесяти байт. Если результат меньше цели, он выигрывает. Если нет, он меняет nonce и пробует снова. Каждая попытка — это независимая ставка, и нет никакого короткого пути — это та же односторонность функции хеширования, теперь используемая как лотерея.
Но четыре байта для nonce дают чуть больше четырех миллиардов возможностей, и современная машина исчерпывает их за долю секунды. Когда они заканчиваются, майнеру нужно изменить что-то еще в заголовке, чтобы получить новый розыгрыш. Он корректирует дату на несколько секунд и, прежде всего, изменяет первую транзакцию блока, ту, которая выплачивает вознаграждение ему самому: любое изменение там меняет её хеш, меняет корень Меркла и возвращает четыре миллиарда новых попыток.

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

Обратите внимание на баланс: нахождение nonce требует огромного количества энергии, а проверка результата требует всего одного вычисления. Любой узел на обычном компьютере пересчитывает хеш этих восьмидесяти байт за микросекунды и знает, была ли выполнена работа. Именно эта асимметрия — дорого производить, дешево проверять — поддерживает всю сеть.
Остается объяснить цель, то поле из четырех байт, которое определяет, насколько маленьким должен быть хеш. Она меняется автоматически каждые 2 016 блоков и поддерживает ритм сети каждые десять минут независимо от того, сколько машин подключено. В следующем уроке — сложность.