Анатомия блока: что внутри
Блок — это страница в журнале блокчейна: список записей плюс «шапка», которая связывает её с предыдущей страницей.
«Один блок ничего не значит. Сила появляется, когда блоки сцепляются в цепь, где каждый защищает предыдущий.»
В прошлом разделе мы говорили о цепочке в целом. Теперь возьмём отдельное звено и разберём его на части. Что именно хранится в блоке?
Блок состоит из двух частей: заголовка (header) и тела (список транзакций). Заголовок — это компактная «шапка» с метаданными, а тело — собственно записи, например переводы монет.
Что лежит в заголовке
- Хеш предыдущего блока — ссылка-цепочка на родителя. Именно она сшивает блоки.
- Корень Меркла — один хеш, который сворачивает в себя все транзакции блока (об этом — отдельный урок).
- Метка времени — когда блок создан.
- Nonce — число, которое подбирают майнеры в proof-of-work.
- Сложность / параметры — текущие правила для создания блока.
Как работает под капотом
Хеш блока считается от его заголовка. А раз в заголовок входит хеш предыдущего блока, то любое изменение в прошлом неизбежно меняет хеши всех последующих блоков. Соберём упрощённый блок и посчитаем его хеш.
Попробуй сам ▶ Запусти код прямо здесь — он работает в браузере:
import hashlib, json
block = {
'index': 7,
'prev_hash': '0000a1b2c3...',
'timestamp': 1718000000,
'transactions': ['Аня -> Боря: 5', 'Боря -> Вася: 2'],
'nonce': 0,
}
def block_hash(b):
data = json.dumps(b, sort_keys=True, ensure_ascii=False)
return hashlib.sha256(data.encode()).hexdigest()
print('Хеш блока:', block_hash(block))
# Изменим одну транзакцию и пересчитаем
block['transactions'][0] = 'Аня -> Боря: 500'
print('После подмены:', block_hash(block))Видишь? Подмена суммы перевода полностью изменила хеш блока. А значит, ссылка из следующего блока больше не сойдётся — подделка вскроется.
Структура одного блока +--------------------------------+ | ЗАГОЛОВОК (header) | | prev_hash : 0000a1b2... | | merkle : 9f3c... | | time : 1718000000 | | nonce : 42137 | +--------------------------------+ | ТЕЛО (транзакции) | | tx1: Аня -> Боря : 5 | | tx2: Боря -> Вася : 2 | +--------------------------------+
Частые заблуждения
- «В блоке хранятся монеты». Нет, в блоке хранятся записи о переводах. Монеты — это просто баланс, который вычисляется из всей истории переводов.
- «Размер блока бесконечен». У большинства блокчейнов есть лимит на размер блока, поэтому в один блок влезает ограниченное число транзакций.
- «Хеш блока задаёт человек». Хеш не задают, его вычисляют из содержимого. Поменял содержимое — получил другой хеш.
Важно понимать (риски)
Лимит на размер блока означает, что сеть может обработать лишь ограниченное число транзакций в секунду. Когда желающих много, начинается «аукцион» за место в блоке, и комиссии растут. Это фундаментальное ограничение, из-за которого появились решения второго уровня и альтернативные блокчейны. Не верь обещаниям «бесконечной скорости без компромиссов» — у каждого выбора есть цена.
Почему блоки идут «пачками», а не по одной записи
Может возникнуть вопрос: зачем вообще группировать транзакции в блоки? Почему не записывать каждый перевод по отдельности? Причина в эффективности и безопасности. Достижение согласия в распределённой сети — дорогая операция: нужно разослать данные всем, дождаться проверки, прийти к консенсусу. Делать это для каждой отдельной транзакции было бы расточительно. Гораздо выгоднее собрать пачку транзакций и согласовать их разом — одним блоком.
Объединение в блоки даёт и ритм сети. У биткоина новый блок появляется примерно раз в 10 минут, у Ethereum — каждые несколько секунд. Этот интервал — компромисс: слишком частые блоки чаще приводят к форкам, слишком редкие — заставляют пользователей дольше ждать подтверждения. Метка времени в заголовке как раз и задаёт этот ритм, а сложность подстраивается так, чтобы блоки находились примерно с нужной частотой независимо от числа участников.
Итоги
- Блок состоит из заголовка (метаданные) и тела (транзакции).
- В заголовке есть хеш предыдущего блока — он и сшивает цепь.
- Хеш блока вычисляется из его содержимого, поэтому подделка всегда заметна.
- Размер блока ограничен, отсюда конкуренция за место и комиссии.