Софт-форк Taproot привёл к активизации интереса к способам работы с Bitcoin Script из-за значительно меньшей стоимости выполнения скрипта - при помещении в глобальную “оперативную память” блокчейна используется только один из десятков, сотен или тысяч сценариев, заложенных в один адрес Биткоина. Так, в мае 2023 года на конференции в Майами был предложен новый протокол Ark, который может выступать альтернативой сети Молния. Его автором является Burak, разработчик BitMatrix и причина вынужденных перезагрузок LND клиентов по всему миру.
На картинке показана матрица сравнения различных вариантов совершения транзакций вне цепочки Биткоина и на ней, которые позволяют приблизительно оценить качества Ark в отношении Lightning Network, но эта схема увы не содержит протокол Hedgehog, который также можно сравнивать с Молнией, и который основан на принципах, очень близких к этой сети.
Ark привлёк инвестиции, в настоящее время уже является местом работы для ряда разработчиков из Биткоин-компаний США, вышедших из менее удачных проектов в Lightning и Liquid, и запустился на мейннете. Чуть больше деталей доступно в обзоре и материалах канала (тут).
Более поздняя альтернатива, Hedgehog, предложенная весной 2024, не привлёк каких-либо финансовых средств и в общем не пользовался вниманием за пределами узкой группы людей с энтузиазмом принявшей альтернативу Лайтнинг каналам, поддерживающую оффлайн отправку денег при помощи connector outputs. Основная идея, лежащая в основе нового протокола - это использование так называемых выходов-коннекторов транзакций, которые появились в Ark. В течение 2024 они сослужили хорошую работу не только для Hedgehog но и для других протоколов, типа Babylon или мостов BitVM. Такие выходы позволяеют определить валидность последующей транзакции через наличие или отсутствие UTXO коннектора, которое подаётся на вход в новую транзакцию. В Lightning коннекторы не используются, вместо них постоянно обновляется транзакция состояния канала.

Поэтому основное отличие Hedgehog от Lightning заключается в механизме отзыва транзакций. В Lightning отправитель ждёт, пока получатель отзовёт старое состояние канала, и его кошелёк отображает платеж как ожидающий подтверждения. В Hedgehog отправитель может самостоятельно отозвать старое состояние, и его кошелёк сразу показывает платеж как завершённый.
Подробнее о протоколе
Процесс работы протокола начинается с создания транзакции Tx0 на адрес мультисига 2 из 2, как и в Lightning, которая называется “мультиподпись с возможностью отзыва”. Сначала все средства находятся “на стороне” Алисы в State 1, в мультисиге Alice & Bob OR Alice Timeout, а затем перераспределяются между участниками в ходе использования.
В каждом из состояний на схемах транзакции Tx1 и Tx2 остаются "вне цепи" (off-chain), что позволяет поддерживать канал “открытым” без необходимости записи в блокчейн до тех пор, пока обе стороны не согласятся на проведение транзакции. Первая транзакция может быть отозвана Бобом, а вторая обновляет балансы Алиса и Боба. Последующие состояния будут содержать дополнительные транзакции, зависимые от “отзывающего” пути траты. Так как Tx2 обязательно следует за Tx1, то инвалидация Tx1 приводит к невозможности достижения Tx2 в качестве финального состояния, которое было отозвано.
При переходе к состоянию 2 средства распределяются так — Алиса отсылает примерно треть Бобу, 3000 сат, и Боб может отозвать свои средства. Важное преимущество состоит в том, что Боб может находиться оффлайн: Алиса подписывает необходимые транзакции и отправляет их Бобу, а он может утвердить новое состояние и отправить транзакцию ончейн, когда вернётся онлайн, но в норме этого делать не должен, а просто может продолжить использовать канал далее. Если Боб знает секрет Алисы из состояния 2, поскольку он был раскрыт Алисой, она больше не может использовать этот адрес, поскольку Боб всегда сможет потратить с него деньги выгодным для него образом. Этот секрет является ключом отзыва транзакции и “revocation path” в целом.
В следующем состоянии 3, средства распределяются уже в пропорции ещё 1500 сат для Алисы и 1500 сат для Боба. На этот раз Алиса может быть оффлайн, а Боб отправляет ей новые подписанные транзакции, которые она может получить и проверить позже, независимо от Боба. В этот раз Боб создаёт секрет и Алиса может потратить монеты из транзакции отзыва, если секрет был отправлен Алисе. В состоянии 3 секреты сгенерировали оба участника, Алиса и Боб, они могут отозвать состояние 2 и состояние 3 соответственно. Теперь допустим, что речь идёт о новой отправке денег со стороны Боба, ещё 1000 сатоши в пользу Алисы. Каждый из них имеет по состоянию, которое можно инвалидировать, и они должны сделать это вдвоём: Боб, чтобы отправить деньги из третьего состояния, Алиса — чтобы отправить деньги из второго состояния в третье.
На схеме показано четвёртое состояние, она иллюстрирует транзакции инвалидирующие состояние 2 и 3 и пару новых транзаций, которые снова замыкают круг на Алисе, поскольку это её очередь предоставить отзывающую Tx1 и новое состояние канала Tx2.
Описываемый процесс можно повторять столько раз, сколько потребуется, сохраняя канал открытым для дальнейших транзакций. В Hedgehog важен принцип “отправитель отзывает предыдущее состояние канала”, которое реализуется на одной из двух транзакций на картинке через “Signature revoke”. Это доказательство того, что состояние 2 не может быть использовано. Оно реализуется в знании секрета к пути траты монет и знании того, что оппонент получил этот секрет, значит старый “путь” траты использовать убыточно.
На рисунках выше упоминаются таймлоки и важным отличием Hedgehog от Lightning является использование относительных таймлоков: они придают протоколу дополнительную свободу оффчейн операций. В протоколе Биткоина для абсолютных таймлоков используется опкод nLockTime.
Транзакция с nLockTime = 800,000
не может быть включена в блок до достижения блока 800,000
, а большее значение опкода 1,700,000,000 уже определяет
метку времени Unix. Тогда она не может быть включена в блок до наступления указанного времени.
При использовании CheckSequenceVerify транзакция получает относительный
таймлок, например на 144
блока, и она может быть потрачена только спустя 144 блока после её подтверждения. Аналогично абсолютному таймлоку, большее значение, например 86400 секунд (24 часа), задаёт физическое время спустя сутки. Для относительных таймлоков может быть использовано ещё одно поле nSequence
во входах транзакции. В сочетании с BIP-68, оно задаёт минимальную задержку до момента, когда вход может быть потрачен в последующей транзакции.
Можно ли построить сеть на Ёжиналах
Описываемые принципы Hedgehog хорошо работают для двух контрагентов, но сила Lightning network состоит в организации и координации независимых участников, которые помогают друг другу не особенно отдавая в этом отчёт. Платёж просто может быть отослан из точки А в точку Б, в сети Молния, в то время как А и Б могут вовсе не иметь общего канала и даже общих “знакомых”. Этот процесс перехода платежа по каналам Молнии называется маршрутизацией платежа и он имеет общие черты с тем, как перемещается информация в сети Tor.
Для Hedgehog маршрутизация на данный момент не реализована, но планируется на основе спецификации Мэтта Коралло для так называемых “асинхронных платежей”. Идея заключается в том, что при отправке средств третьей стороне (например, Каролине) Алиса может передать ключи и секрет к платежу, которые будут использованы для завершения транзакции, когда Каролина выйдет онлайн. Оригинальное предложение Корралло от 2021 года предусматривало использование LNURL и Lightning Service Providers (LSP) для асинхронной генерации счетов и управления платежами без доверия к третьим сторонам. BOLT12 и применение PTLCs (Point-Time Locked Contracts), должны повысить безопасность и упростить предложенный процесс.
Летом 2024 был представлен прототип сервиса Hedgehog Advanced — продвинутая версия протокола Hedgehog, позволяющая атомарно оплачивать счета Lightning. Это выглядит как частичное решение проблемы отсутствующей сети, поскольку может быть использована существующая инфраструктура Молнии. Автор собирался также реализовать прием платежей через Lightning в канал Hedgehog, но отмечал, что это требует сложной координации между получателем и его HSP (провайдером каналов Hedgehog).
Необычные функции платёжного протокола
Ещё более продвинутые идеи SuperTestnet касались развития концепции “Виртуальных каналов”. На момент публикации статьи он заявил, что не имеет каких-либо фиксированных сроков для реализации и просто делает то, что ему интересно в данный момент.
Сейчас я работаю над функцией, которую называю "виртуальными каналами". Она позволяет создавать односторонний канал без записи в блокчейн. Это дешёвый способ дать людям каналы Hedgehog, которые "полностью" работают, но с оговоркой, что у вас, как у отправителя, остаётся копия приватных ключей виртуального канала, а значит, вы храните средства получателя. Канал работает как обычный канал Hedgehog, с тем же интерфейсом, собственным балансом и полной поддержкой отправки и получения платежей Hedgehog, а также отправки платежей Lightning. Это похоже на хостинг кошелька lnbits для кого-то, только с возможностью Hedgehog эффективно эмулировать асинхронные платежи. Вам не нужен сервер для хостинга, достаточно обычного телефона или даже браузера, так как постоянное подключение к сети требуется только серверу-мосту.
Это не единственная идея, но она особенно хорошо отражает главную мотивацию развития Ёжиналов — реализацию способов получения сатоши без необходимости каких-либо интерактивных действий со стороны получателя за исключением двух обязательных этапов:
посещения веб-страницы (или загрузки приложения) с программным обеспечением кошелька Hedgehog,
сканирования QR-кода для импорта данных канала.
Более того, оказывается, что для получения платежа приватные ключи могут находиться в полностью изолированном аппаратном кошельке. Когда пользователь захочет потратить эти деньги через Hedgehog, или Lightning, ему будет достаточно просто подготовить транзакцию в программном кошельке, закодировать её в виде нескольких частично подписанных биткойн-транзакций (PSBT), передать их в аппаратный кошелёк для подписи, и уже подписанные транзакции вернуть в программный кошелёк для передачи на сервер-мост.
SuperTestnet излагает больше идей в посте и они являются достаточно необычными даже по сравнению с новейшим протоколом Ark. При этом Ark является асинхронным лишь до некоторой степени, пока не наступит момент расчёта по всем “виртуальным UTXO”, созданным провайдерами платежей. Ёжиналы обладают куда более приемлемыми свойствами и менее кастодиальны, однако у этого есть своя цена: провайдер HSP должен замораживать капитал при создании “нулевого” мультисига, от которого далее создаются две оффчейн транзакции обновления состояния канала. Новый протокол подвержен той же критике, которая высказывалась против Lightning: будет затруднительно создать миллиарды новых каналов, Ark подходит к этой теме иначе, поскольку в UTXO осуществляется только финализация расчётов, до наступления которых может быть совершено неграниченное количество транзакций.
Ссылки
Презентация/мастер-класс
https://github.com/supertestnet/hedgehog
https://github.com/supertestnet/hedgehog-advanced
Поддержите проект 🔗 LN платежом 🔗
Начните пользоваться LN кошельком типа Valet для Android, если у вас ещё нет кошелька с поддержкой “Молнии