Блокчейн/Уровень IV · Глубины протокола/4.1 Script/Урок 5
Хэшлоки и HTLC
Секрет, который открывает всё, и таймер, который не даёт ему пропасть навсегда
МатериалыЛюбой текстовый редактор или командная строка с поддержкой SHA-256Обозреватель блоков (например, mempool.space)Whitepaper Lightning Network авторства Пуна и Дрийи (Poon & Dryja)
Любопытство
- Как привязать платёж к секрету, который знает только один человек, так, чтобы этому человеку не нужно было никому доверять?
- Если раскрытие секрета ради получения собственных денег делает его известным всей сети, что мешает другим украсть их первыми?
- Почему каждому переходу (hop) в многоузловом платёжном маршруте нужен немного отличающийся крайний срок?
Исследование
- Хешлок — это условие Bitcoin Script, запрещающее трату, пока не будут раскрыты определённые данные — прообраз (preimage). Монеты блокируются хешем, который обычно предоставляет владелец секрета. Ключевое свойство в том, что любой участник, раскрывающий прообраз, чтобы забрать свои средства, раскрывает его каждому, кто видит это требование: в блокчейне — всем; внутри канала Lightning — контрагенту.
- Такое публичное раскрытие позволяет другим сторонам, владеющим выходами, заблокированными тем же хешем, тоже их потратить. В Lightning Network это означает: когда конечный получатель (Чарли) раскрывает секрет, чтобы получить платёж от Боба, тот же секрет открывает выход Алисы, заблокированный для Боба. Этот механизм обеспечивает атомарность: либо платят всем, либо никому.
- Однако у простого хешлока есть изъян: если Чарли исчезнет и так и не раскроет прообраз, средства застрянут навсегда. Добавление таймлока создаёт контракт с хеш- и тайм-блокировкой (HTLC). Теперь скрипт для последнего перехода, предложенного Бобом, гласит: «Чарли может забрать эти монеты, раскрыв прообраз до крайнего срока T, ИЛИ Боб может вернуть их себе после T».
- Такая логика с двумя путями обеспечивает работу без доверия. Если платёж проходит, Чарли раскрывает секрет в пределах окна тайм-аута, запуская каскад требований от Боба обратно к Алисе. Если платёж не удаётся или Чарли уходит офлайн, у каждого HTLC истекает тайм-аут, и предложившая его сторона (Боб — у Чарли, Алиса — у Боба) возвращает средства через ветку тайм-аута в скрипте.
- Именно этот протокол справедливости делает возможной многошаговую (multi-hop) маршрутизацию. У каждого HTLC на маршруте тайм-аут немного длиннее, чем у HTLC, который его держатель предлагает следующей ноде дальше по маршруту. Этот запас защищает каждую промежуточную ноду: если следующий по маршруту пир забирает средства с прообразом в последний момент, у промежуточной ноды всё ещё есть время использовать этот прообраз в обратном направлении, прежде чем её собственный входящий HTLC может быть возвращён отправителю.
- Хотя головоломки на Script могут быть сложными, реальные контракты, такие как HTLC, всегда включают проверку подписей наряду с хешлоками и таймлоками. Это привязывает решение к конкретным сторонам и предотвращает фронтраннинг со стороны майнера, который мог бы увидеть действительный прообраз в мемпуле и перенаправить выплату себе до её подтверждения.
Ключевые факты
- Хешлок запрещает трату, пока не будет публично раскрыт определённый фрагмент данных (прообраз).
- Как только открыт любой хешлок с определённым хешем, раскрытый прообраз позволяет потратить средства по всем остальным хешлокам с тем же хешем.
- HTLC сочетает хешлоки и таймлоки: получатель должен потратить средства до крайнего срока, иначе отправитель может вернуть их себе.
- HTLC используются в commitment-транзакциях Lightning Network, обеспечивая многошаговую маршрутизацию без доверия с атомарностью.
- Script предоставляет OP_SHA256 и OP_HASH160 для хешлоков; Lightning использует платёжные хеши SHA-256.
- В 2013 году Тир Нолан (Tier Nolan) предложил кросс-чейн атомарные свопы на основе этого механизма хешлоков.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 реальных или криптографических сценариев, в которых одно действие раскрывает секрет, открывающий множество других действий (например, вскрытие сейфа, публикация доказательства работы).
6СгруппироватьРаспределите эти 9 по 6 группам по способу защиты секрета: один владелец, несколько владельцев, ограничение по времени, ограничение в пространстве, публичный, но дорогой, или необратимый.
3Выделить главноеСведите 6 групп к 3 ключевым механизмам, которые позволяют сторонам, не знающим друг друга, координироваться без доверия.
1КристаллизоватьНапишите одно предложение о том, почему хеш — это обязательство, а прообраз — ключ, и как таймер делает их безопасными.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.