Цепочки хешей и связывание блоков
Создайте минимальный блокчейн с указателями на хеши, чтобы понять неизменяемость
«Цепочки хешей и связывание блоков» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Что такое хеш-цепочка
Хеш-цепочка связывает блоки данных так, что каждый блок содержит хеш предыдущего блока. Изменение любого блока меняет его хеш, из-за чего все последующие блоки становятся недействительными. В результате получается реестр, в который можно только добавлять записи и в котором видны изменения.
Структура блока
Каждый блок содержит: (1) полезную нагрузку данных (транзакции), (2) хеш предыдущего блока (указатель на предыдущий блок), (3) временную метку, (4) nonce (для PoW), (5) корень Меркла транзакций. У первого блока (генезисного) значение previous_hash = "0"*64.
Минимальный блокчейн на Python
import hashlib, json class Block: def __init__(self, data, prev_hash): self.data = data self.prev_hash = prev_hash self.hash = hashlib.sha256( json.dumps({'data':data,'prev':prev_hash}).encode() ).hexdigest()
Почему хеш-указатели обеспечивают целостность
Если злоумышленник изменит данные блока 3, хеш блока 3 изменится. Блок 4 ссылается на старый хеш блока 3 — цепочка разрывается на блоке 4. Злоумышленнику придётся заново вычислить хеши блоков 3, 4, 5 и так далее вплоть до конца цепочки. При использовании PoW это вычислительно невыполнимо.
Неизменяемость и обнаружение изменений
Хеш-цепочки сами по себе позволяют обнаруживать изменения, но не обеспечивают неизменяемость. Без дополнительных механизмов (PoW, цифровых подписей и распределения) злоумышленник, контролирующий цепочку, может переписать её. Именно распределённый консенсус на практике делает блокчейн устойчивым к изменениям.
Правило самой длинной цепочки
Правило самой длинной цепочки Биткоина: канонической считается действительная цепочка с наибольшим совокупным объёмом доказательства выполнения работы. Если злоумышленник создаёт ответвление цепочки, честные майнеры расширяют честную цепочку быстрее (допущение о 51%). Ответвление злоумышленника оказывается короче и отбрасывается.
Заголовок и полный блок
Клиенты SPV Биткоина (простая проверка платежей) загружают только 80-байтовые заголовки блоков, содержащие предыдущий хеш, корень Меркла, nonce, временную метку и bits. Полные узлы хранят все транзакции. Клиенты SPV проверяют транзакцию с помощью доказательства Меркла относительно корня Меркла в заголовке.
Генезисный блок
Генезисный блок Биткоина (блок 0, 3 января 2009 года) имеет значение prev_hash = 0x000...0. Сатоси встроил в транзакцию coinbase заголовок «The Times, 03.01.2009: канцлер на грани второго спасения банков» как доказательство времени создания.
Цепочка хранения
Хеш-цепочки появились раньше блокчейна. Применение: списки отзыва сертификатов (связанные хешами), целостность журналов (хеш предыдущей записи журнала), цепочка доверия DNSSEC. Этот принцип обобщается на любую структуру, в которую можно только добавлять записи и где каждая запись фиксирует все предыдущие записи.
Контрольные точки
Чтобы ускорить первоначальную синхронизацию, Bitcoin Core жёстко задаёт контрольные точки: хеши блоков, заведомо признанных действительными, на определённых высотах. Клиент, начинающий синхронизацию, может пропустить проверку PoW для блоков до контрольной точки, доверившись заданному в коде хешу. Компромисс: уменьшается степень минимизации доверия.
Адресация по содержимому
Git использует тот же принцип: каждый коммит идентифицируется значением SHA-1/SHA-256, вычисленным по его содержимому и хешу родительского коммита. Переход к определённому хешу коммита восстанавливает ровно это состояние. Вся история Git представляет собой дерево объектов, связанных хешами.
Быстрая проверка
Почему после изменения одного блока злоумышленник должен заново вычислить хеши всех последующих блоков?
Итоги
Хеш-цепочки связывают блоки с помощью криптографических указателей. Изменение распространяется на все последующие блоки. В сочетании с PoW и распределённым консенсусом это делает блокчейн практически неизменяемым. Далее: деревья Меркла для эффективной проверки целостности транзакций.
Часто задаваемые вопросы
Урок «Цепочки хешей и связывание блоков» бесплатный?
Да — полный текст урока «Цепочки хешей и связывание блоков» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Цепочки хешей и связывание блоков»?
Создайте минимальный блокчейн с указателями на хеши, чтобы понять неизменяемость Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Цепочки хешей и связывание блоков»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Цепочки хешей и связывание блоков
- Деревья Меркла: целостность транзакций в большом масштабе
- Доказательство работы: майнинг и настройка сложности
- Скрипт Bitcoin и проверка подписей UTXO