Ключевые выводы
- Блок — это просто пакет транзакций плюс отпечаток предыдущего блока; именно это и создаёт цепочку.
- Хеширование делает подделку обнаружимой: измените один байт — и все последующие отпечатки перестанут совпадать.
- Консенсус решает, какую версию истории принимают все; в Proof of Work это решение привязано к реальной энергии, затраченной майнерами.
- Безопасность здесь экономическая, а не магическая. Переписать историю в принципе возможно, но это намеренно сделано дорогим.
Большинство объяснений блокчейна начинаются с метафоры и на ней же и застревают. Цепочка блоков, цифровой реестр, машина без доверия. Ничто из этого не говорит, что на самом деле происходит при совершении транзакции. Этот материал разбирает механику по порядку: что содержит блок, что делает хеш, как сеть договаривается об одной истории и почему изменить эту историю дорого, а не невозможно.
Блок — это пакет транзакций со ссылкой назад
Блокчейн не записывает транзакции по одной. Он группирует их в блоки, и каждый блок публикуется как единое целое. Внутри типичного блока вы найдёте набор транзакций, метку времени, служебные данные протокола и одно поле, которое важнее остальных: ссылку на блок, который был до него.
Эта ссылка назад — не порядковый номер. Это криптографический хеш заголовка предыдущего блока. Поскольку хеш зависит от всего содержимого того более раннего блока, ссылка одновременно служит отпечатком. Если в раннем блоке что-то меняется, меняется и отпечаток, и связь перестаёт совпадать.
Свяжите такие ссылки в цепочку — и получите структуру, в которой каждый блок неявно фиксирует всю предшествующую историю. Именно это здесь и означает слово «цепочка». Это не метафора про звенья. Это конкретная структура данных, где каждый элемент несёт проверяемую сводку всего, что было до него.
Хеширование: то, что делает подделку заметной
Криптографическая хеш-функция принимает данные любого размера и выдаёт результат фиксированной длины. Полезными здесь её делают три свойства. Одни и те же входные данные всегда дают один и тот же результат. Малейшее изменение входных данных даёт совершенно другой результат, ничем не похожий на исходный. И движение в обратную сторону — от результата к входным данным, которые его порождают, — вычислительно нереализуемо.
Вместе эти свойства дают пломбу, по которой видно факт вскрытия. Нельзя подделать хеш так, чтобы он совпал с изменёнными данными, и нельзя изменить данные достаточно незаметно, чтобы их хеш остался прежним. Любой, у кого есть копия цепочки, может сам пересчитать хеши и сразу увидеть, внутренне ли непротиворечива полученная им история.
Большинство блокчейнов также используют хеш-дерево, часто называемое деревом Меркла, чтобы свести транзакции внутри блока к одному значению. Транзакции хешируются попарно, затем полученные хеши снова хешируются попарно — и так далее, пока не останется единственный корневой хеш. Этот корень помещается в заголовок блока. Практическая польза в том, что лёгкий клиент может доказать наличие конкретной транзакции в блоке, не скачивая блок целиком, — именно это делает возможными мобильные кошельки. Подробнее о терминологии — в нашем глоссарии.
Консенсус: выбор того, какая история считается настоящей
Хеширование говорит, непротиворечива ли цепочка внутри себя. Оно не говорит, какая из двух непротиворечивых цепочек настоящая. Это и есть задача консенсуса, и она сложнее.
В Proof of Work (доказательство работы) право опубликовать следующий блок зарабатывается нахождением хеша ниже целевого значения. Поскольку выходные значения хеш-функции по сути непредсказуемы, единственный способ найти нужное — перебрать огромное число кандидатов. Именно этим перебором и занимается майнинговое оборудование, и он потребляет электроэнергию. Когда майнер находит верное решение, он рассылает блок по сети, и все остальные могут мгновенно проверить его, вычислив хеш один раз.
Эта асимметрия — ядро всей конструкции: дорого произвести, тривиально проверить. Дальше узлы следуют простому правилу. Если существуют две валидные цепочки, принимается та, у которой накоплено больше работы. Поскольку накопленная работа соответствует реально затраченной энергии, правило по сути гласит: верь той истории, которую было дороже всего построить.
Сложность со временем подстраивается так, чтобы блоки появлялись примерно с целевым интервалом независимо от того, сколько оборудования направлено на сеть. Если майнеров становится больше, сложность обычно растёт, и каждая машина зарабатывает меньшую долю. Именно поэтому хешрейт и сложность несут информацию для тех, кто следит за сетью, а не только за ценой, и поэтому мы публикуем их на панели майнинга.
Proof of Stake (доказательство доли) достигает той же цели иными средствами, привязывая право создавать блоки к капиталу, размещённому в протоколе, а не к энергии, потраченной вне его. Ни один из подходов не является безусловно лучшим во всех условиях, и компромиссы каждого стоит понимать по существу. Мы сравниваем их в материале Proof of Work против Proof of Stake.
Почему переписывание истории стоит денег
Допустим, кто-то хочет стереть платёж, совершённый несколько блоков назад. Ему придётся создать блок-замену, не содержащий этот платёж, что изменит хеш блока и разорвёт все последующие связи. Значит, придётся перестроить и каждый следующий блок. А тем временем честная сеть продолжает наращивать настоящую цепочку.
Чтобы победить, атакующий должен строить быстрее, чем все остальные вместе взятые, и достаточно долго, чтобы обогнать их. В устоявшейся цепочке на Proof of Work это означает приобрести и запустить большинство оборудования, оплатить электроэнергию и смириться с тем, что успех, скорее всего, обесценит тот самый актив, на который направлена атака. Защита не в том, что атака запрещена. Она в том, что атака — невыгодная сделка.
Отсюда важное следствие, которое рекламные материалы обычно опускают: безопасность масштабируется вместе со стоимостью атаки. Небольшую цепочку со скромным хешрейтом реорганизовать заметно проще, чем крупную. Считать все блокчейны одинаково неизменяемыми — ошибка.
Чего блокчейны не гарантируют
Блокчейн гарантирует, что записанные данные не были незаметно изменены и что участники согласны в отношении их порядка. Он не гарантирует, что данные были правдивы в момент записи. Если кто-то записывает, что в морском контейнере находится определённый груз, цепочка добросовестно сохранит это утверждение — в том числе если оно было ложным. Это проблема оракула, и она ограничивает многие сценарии применения в цепочках поставок, которые продвигают с большим энтузиазмом.
Блокчейн также не делает программное обеспечение корректным. В коде, развёрнутом в сети, могут быть ошибки, и та же неизменяемость, которая защищает реестр, способна сделать эти ошибки постоянными. Это отдельная и важная тема.
Читать сеть, а не нарратив
Когда механика становится понятной, некоторые наблюдаемые величины начинают что-то значить. Интервал между блоками и сложность описывают, насколько высока конкуренция за создание блоков. Хешрейт показывает, сколько оборудования задействовано. Глубина мемпула описывает загруженность сети и, следовательно, давление на комиссии. Ничто из этого не предсказывает цену, и любой, кто утверждает обратное, преувеличивает. Но эти величины описывают состояние системы так, как заголовки обычно не делают.
Если хотите копнуть глубже, наш обучающий раздел разбирает смежные понятия, а страница методологии объясняет, откуда берутся наши данные и чего мы не претендуем знать. Ничто здесь не является инвестиционным советом; это рассказ о том, как устроен механизм.
Часто задаваемые вопросы
Что на самом деле мешает кому-то изменить старую транзакцию?
Ничто не мешает изменить собственную копию. Распространению правки мешает то, что каждый другой участник может её проверить. Каждый блок несёт хеш предыдущего блока, поэтому изменение старой транзакции меняет хеш этого блока, что делает недействительной связь, хранящуюся в следующем блоке, и так далее вплоть до вершины цепочки. Чтобы правка закрепилась, атакующему пришлось бы заново выполнить работу для каждого блока после изменённого — быстрее, чем честная сеть наращивает цепочку, — а затем убедить остальных принять его версию. Это проблема стоимости, а не криптографии, и именно в стоимости весь смысл.
Блокчейн — это то же самое, что база данных?
Внутри него есть база данных, но интересное — это правила о том, кто может писать и как разрешаются разногласия. У обычной базы данных есть администратор, который решает, что считать истиной. Публичный блокчейн заменяет этого администратора протоколом, благодаря чему участники, не доверяющие друг другу, всё же могут сойтись на одной истории. Это настоящая возможность, но она стоит пропускной способности, места для хранения и энергии. Если у вас уже есть администратор, которому доверяют, обычная база данных обычно оказывается более удачным инженерным решением.
Почему говорят о подтверждениях, а не о том, что транзакция окончательна?
Потому что расчёт в цепочке на Proof of Work вероятностный, а не мгновенный. Когда ваша транзакция впервые попадает в блок, сохраняется небольшая вероятность, что победит конкурирующий блок и транзакция вернётся в пул ожидания. Каждый следующий построенный сверху блок делает отмену экспоненциально более дорогой, поэтому отменить транзакцию становится всё труднее. Ожидание большего числа подтверждений — это просто выбор более низкой вероятности отмены. Сколько их достаточно, зависит от суммы на кону и от защищённости конкретной цепочки.
Exploring blockchain, crypto, and DeFi innovation. Ex-fintech analyst turned journalist, spotlighting real-world use cases of blockchain. Writer at Cryptocurrency Miners.