Блокчейн — это общая учетная книга, которую синхронно ведут многие компьютеры и у которой нет единого владельца. В статье простыми словами и на реальных примерах объясняется, как он устроен, почему его историю очень трудно изменить и что такое смарт-контракт.
Идею можно наблюдать в действии, пока вы читаете. Откройте страницу Ethereum в реальном времени или страницу Bitcoin в реальном времени, и вы увидите, как один за другим появляются новые блоки.
Основная идея: учетная книга, которую ведут многие
Представьте тетрадь, в которой перечислен каждый платеж, когда-либо совершенный в сети. Теперь представьте, что тысячи людей хранят одинаковые копии, а новые страницы добавляются только тогда, когда большинство из них согласно. Это и есть суть блокчейна.
Запись публична. Любой может ее прочитать и проверить. Не нужно доверять банку или компании, чтобы вести учет: эту работу выполняют правила сети и копии, которые хранят многие участники.
Блоки: страницы с транзакциями
Транзакция (transaction) — это одна инструкция, например «отправить 20 USDC от Алисы Бобу». Транзакции собираются в группы, называемые блоками (blocks). Блок — как одна страница в учетной книге.
У каждого блока есть высота (block height) — его положение в цепочке. У первого блока высота 0, у следующего 1 и так далее. Блоки создаются в регулярном ритме, зависящем от сети:
- Bitcoin создает блок примерно раз в 10 минут.
- Ethereum создает блок каждые 12 секунд.
- Solana производит новый слот примерно каждые 400 миллисекунд.
На ChainMonitor каждый блок показан плиткой, которая говорит, насколько он заполнен и какие комиссии были уплачены. Нажмите на плитку, чтобы увидеть транзакции внутри. Что вы там найдете, объясняет руководство по чтению транзакции.
Цепочки хешей: почему цепочка — это цепочка
Хеш (hash) — это короткий отпечаток каких-либо данных. Хеш-функция превращает любой вход в строку символов фиксированной длины. Один и тот же вход всегда дает один и тот же хеш. Измените одну букву на входе, и хеш будет выглядеть совершенно иначе. По хешу данные восстановить нельзя.
Каждый блок содержит хеш предыдущего блока. Эта связь и делает его цепочкой.
- Блок 100 содержит свои транзакции и хеш блока 99.
- Блок 101 содержит свои транзакции и хеш блока 100.
- Блок 102 содержит хеш блока 101 и так далее.
Если кто-то изменит одну транзакцию в блоке 100, хеш блока 100 изменится. Тогда блок 101 будет указывать на хеш, который больше не совпадает. Несоответствие обнаружится сразу, и все следующие блоки тоже окажутся нарушенными.
Узлы: те, кто хранит копии
Узел (node) — это компьютер, который запускает ПО сети, хранит блокчейн и проверяет правила. Когда приходит новый блок, каждый узел проверяет его самостоятельно. Если блок нарушает правило, например тратит несуществующие монеты, честные узлы его отвергают.
Некоторые узлы также помогают создавать блоки. Другие только читают и проверяют. Когда вы пользуетесь кошельком, он обычно общается с узлом через точку доступа RPC — веб-адрес, отвечающий на вопросы вроде «каков мой баланс?». Публичные точки доступа можно сравнить на странице состояния RPC.
Консенсус: как все договариваются
При тысячах копий сети нужен способ договориться, какой блок следующий. Этот процесс согласования называется консенсусом (consensus). Есть два основных вида.
Proof of work
При proof of work (PoW, доказательство работы) участники, называемые майнерами, соревнуются в решении трудной задачи. Ее можно решить, только перебрав огромное число вариантов, что стоит электричества и компьютерного времени. Победитель добавляет следующий блок и получает награду. Bitcoin использует proof of work.
Мошенничество обходится дорого. Чтобы переписать историю, злоумышленнику пришлось бы повторить работу для старого блока и всех блоков после него, причем быстрее, чем вся остальная сеть вместе взятая.
Proof of stake
При proof of stake (PoS, доказательство доли) участники, называемые валидаторами, блокируют монеты в качестве залога — стейка. Сеть выбирает валидаторов, чтобы они предлагали и одобряли блоки. Валидаторы, следующие правилам, получают награды. Нарушившие их могут потерять часть стейка. Ethereum и Solana используют proof of stake.
Мошенничество и здесь обходится дорого, но цена — залог, а не электричество.
Почему никто не может тихо изменить историю
Работают вместе три вещи:
- Связи хешей. Изменение старого блока ломает все последующие.
- Много копий. Тому, кто хочет внести правку, пришлось бы изменить большинство копий, а не одну.
- Стоимость. При proof of work злоумышленнику нужна огромная вычислительная мощность. При proof of stake — огромный стейк, который может быть уничтожен.
Это не значит, что система волшебная. Это значит, что историю тем труднее изменить, чем больше блоков добавлено поверх. Поэтому биржи и приложения ждут нескольких подтверждений, прежде чем считать платеж окончательным. Подробности — в статье финальность и подтверждения.
Два способа вести балансы: аккаунты и UTXO
Сети отслеживают, «кто чем владеет», одним из двух способов.
Модель аккаунтов. Ethereum, Arbitrum, Base, Optimism, Polygon и Solana работают как банковский реестр. У каждого адреса есть баланс, а транзакция вычитает из одного баланса и прибавляет к другому.
Модель UTXO. Bitcoin больше похож на наличные. UTXO (unspent transaction output, непотраченный выход транзакции) — это монетоподобный фрагмент, который можно потратить только один раз. Платеж использует один или несколько UTXO в качестве входов и создает новые в качестве выходов, обычно включая «сдачу», возвращающуюся отправителю. Ваш баланс Bitcoin — это сумма UTXO, которые вы можете потратить.
Ни одна модель не лучше во всем. Это разные схемы с разными компромиссами.
Что такое смарт-контракт
Смарт-контракт (smart contract) — это небольшая программа, хранящаяся в блокчейне. Она выполняется точно так, как написана, когда ей отправляют транзакцию. Она может хранить токены, следовать правилам и отправлять результаты другим контрактам. Никто не может изменить код развернутого контракта, если сам код не допускает обновлений.
Примеры: контракт, обменивающий один токен на другой, контракт, выдающий деньги в долг под залог, или контракт, определяющий токен USDC. Ethereum и сети на его основе исполняют контракты с помощью EVM (Ethereum Virtual Machine). У Solana собственная система контрактов, где программы работают по другой схеме. Bitcoin поддерживает только простые скрипты.
Исполнение контракта стоит комиссии, называемой газом (gas). Как она считается, см. в статье газ и комиссии.
Смарт-контракт хорош настолько, насколько хорош его код. Ошибка в контракте может привести к потере средств, а транзакцию нельзя отменить после того, как она стала окончательной.
Что читать дальше
Чтобы понять, как разные сети соотносятся друг с другом, прочитайте layer 1, layer 2 и layer 3 простыми словами. Чтобы узнать, как хранить собственные средства, прочитайте кошельки и ключи. Краткие определения — в глоссарии.
Часто задаваемые вопросы
Блокчейн — это то же самое, что Bitcoin?
Нет. Bitcoin — это один из блокчейнов, первый из получивших широкое распространение. Блокчейн — это лежащая в основе технология. Ethereum, Solana и многие другие — отдельные блокчейны со своими правилами.
Можно ли взломать или изменить блокчейн?
Переписывание старых блоков крупной сети чрезвычайно затратно, и в крупнейших сетях этого не случалось. Большинство потерь происходит в других местах: украденные ключи, мошенничество или ошибки в смарт-контрактах и приложениях поверх.
Кто управляет блокчейном?
Публичным блокчейном не управляет единый владелец. Правила задает ПО, которое запускают узлы, а изменения требуют широкого согласия разработчиков, валидаторов или майнеров и пользователей. Это намеренно медленнее решения компании.
В чем разница между блоком и транзакцией?
Транзакция — это одно действие, например платеж. Блок — это набор многих транзакций, добавляемых в цепочку вместе.
Почему за транзакции в блокчейне нужно платить комиссию?
Комиссии оплачивают труд тех, кто поддерживает сеть, и защищают от спама. Место в блоках ограничено, поэтому комиссии также определяют, чьи транзакции попадут первыми, когда сеть загружена.