// Статьи · Основы · 5 мин ·

Как устроен блокчейн: хеши, блоки и консенсус

Из чего состоит блок, почему историю нельзя тихо переписать, чем Proof of Work отличается от Proof of Stake и чего блокчейн принципиально не умеет.

Реестр, которому не нужен хозяин

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

Ответ складывается из трёх частей: криптографических хешей, которые делают историю неизменяемой, цифровых подписей, которые доказывают право распоряжаться средствами, и механизма консенсуса, который позволяет тысячам независимых узлов согласиться, какая версия истории правильная.

Хеш: отпечаток данных

Криптографическая хеш-функция превращает данные любого размера в строку фиксированной длины. В биткоине используется SHA-256 (дважды подряд), результат — 256 бит. У хорошей хеш-функции три важных свойства:

  • Детерминированность — одни и те же данные всегда дают один и тот же хеш.
  • Лавинный эффект — изменение одного бита на входе меняет примерно половину битов на выходе. Похожие данные не дают похожих хешей.
  • Необратимость и стойкость к коллизиям — по хешу нельзя восстановить данные и практически невозможно подобрать два разных входа с одинаковым хешем.

Что лежит в блоке

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

Ссылка на предыдущий блок и делает цепочку цепочкой. Если кто-то изменит одну транзакцию в старом блоке, изменится корень Меркла, значит, изменится хеш этого блока, значит, следующий блок будет ссылаться на несуществующего предка — и так до конца цепи. Подделать одну запись незаметно нельзя: придётся пересобрать все последующие блоки.

Дерево Меркла даёт ещё одну полезную вещь: чтобы доказать, что транзакция входит в блок, достаточно предъявить логарифмическое число хешей (для блока в несколько тысяч транзакций — около дюжины), а не весь блок. На этом держатся «лёгкие» кошельки, которые не скачивают блокчейн целиком.

Подписи: кто вправе тратить

У каждого пользователя есть пара ключей. Закрытый ключ — это просто большое случайное число; открытый вычисляется из него, а адрес — из открытого. Транзакция подписывается закрытым ключом, и любой узел может проверить подпись открытым, не узнав при этом сам секрет. В биткоине и Ethereum используется эллиптическая кривая secp256k1; в биткоине с 2021 года (обновление Taproot) доступны также подписи Шнорра.

Отсюда главное практическое следствие: владеет монетами тот, у кого закрытый ключ. У сети нет службы поддержки, которая восстановит доступ по паспорту.

Консенсус: кто пишет следующий блок

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

Proof of Work (биткоин). Чтобы добавить блок, майнер перебирает nonce, пока хеш заголовка не окажется меньше целевого значения. Найти такое число можно только перебором, а проверить — одним вычислением. Сложность пересчитывается каждые 2016 блоков, чтобы блоки выходили в среднем раз в 10 минут. Если возникли две конкурирующие ветки, узлы выбирают ту, в которую вложено больше суммарной работы.

Proof of Stake (Ethereum с сентября 2022 года). Вместо электричества в залог ставятся монеты. Валидатор блокирует 32 ETH, протокол псевдослучайно выбирает, кто предлагает блок в очередном 12-секундном слоте, а остальные голосуют за него. За доказуемый обман — например, подпись двух конфликтующих блоков — часть залога сжигается (slashing).

Финальность В PoW финальность вероятностная: каждый новый блок сверху делает откат старого всё дороже. Отсюда правило «шести подтверждений» для крупных сумм в биткоине — это примерно час. В Ethereum блок становится окончательным (finalized) примерно через 13 минут, после двух эпох голосования; откатить его можно только ценой сжигания не менее трети всех застейканных ETH.

Атака 51% и её пределы

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

Для крупных сетей такая атака экономически бессмысленна: оборудование и электричество стоят огромных денег, а успешная атака обрушит цену той самой монеты, которую атакующий добывает. Для маленьких сетей на PoW это реальная угроза — атаки на Ethereum Classic в 2020 году переписали тысячи блоков.

Чего блокчейн не умеет

  • Гарантировать правдивость входных данных. Блокчейн надёжно хранит то, что в него записали. Если записали ложь — она тоже будет храниться надёжно. Данные из внешнего мира (курсы, погода, результаты матчей) приходят через оракулы, и это отдельное слабое место.
  • Быть быстрым и дешёвым одновременно с децентрализацией. Каждый полный узел проверяет каждую транзакцию. Поднять пропускную способность «в лоб» значит поднять требования к узлам и сократить их число. Поэтому масштабирование уходит на второй уровень — в каналы и роллапы.
  • Обеспечить приватность. Публичный блокчейн прозрачен: все транзакции видны всем. Адреса не подписаны именами, но аналитика связывает их с людьми через биржи и поведенческие паттерны.

Итог

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

Материал носит образовательный характер и не является инвестиционной рекомендацией. Операции с криптовалютами связаны с высоким риском потери средств.