Boltz — сервис и открытое программное обеспечение для обмена между Bitcoin, Lightning и другими поддерживаемыми сетями. Такой обмен называют swap. Например, вы отправляете биткоин из обычного кошелька, а на другой стороне получаете платёж через Lightning — сеть быстрых биткоин-платежей. Один и тот же выход Bitcoin не переходит в другую среду: стороны связывают условные транзакции. Отсюда название Atomic Swap — обмен, части которого связаны криптографическими условиями. Но это не гарантия автоматического завершения. Нужны также правильная работа приложения, сохранённые ключи и своевременная отправка транзакций. Boltz служит для перевода, а не как счёт для долгосрочных накоплений.
Начните с направления. Если биткоин находится в основной цепи, а вы хотите пополнить Lightning-кошелёк, используется Submarine Swap: вы платите on-chain, транзакцией, записываемой в блокчейн, и получаете через Lightning. Reverse Swap работает наоборот. Вы оплачиваете счёт Lightning, запрос платежа с нужными данными, и получаете возможность забрать средства в цепи. Chain Swap связывает две цепи, например Bitcoin и Liquid. Для двух последних типов приложение должно передать в сеть claim — транзакцию, которая действительно забирает ваши средства. Одна оплата ещё не завершает вашу часть работы. В Liquid вы к тому же получаете L-BTC, актив этой отдельной сети, а не обычный выход основной цепи Bitcoin. Поэтому перед подтверждением проверьте и сеть назначения. [1]
Представьте, что сервер прислал адрес и сумму к оплате. Без дополнительных проверок вы просто доверяете их соответствию согласованному обмену. Клиент Boltz, приложение на вашем устройстве, должен сам рассчитать сумму и проверить платёжный хеш счёта Lightning. Хеш — вычисленный отпечаток, связывающий платёж с нужным swap. Приложение проверяет также адрес и скрипт — условия, определяющие, кто и когда может потратить средства. В Taproot, способе построения выхода Bitcoin, это включает ключи и дерево скриптов, упорядочивающее возможные условия расходования. Пользователь не должен считать всё вручную; важно выбрать клиент, который действительно проверяет. Открытый код boltz-web-app позволяет изучить реализацию, но сам по себе не доказывает правильность другой интеграции или приложения, загруженного в браузер. [5] [9]
Адрес swap — не счёт, на котором можно постепенно накопить нужную сумму. Документация Boltz требует одну транзакцию lockup, первоначальный перевод, блокирующий средства по правилам обмена. Следующие платежи на тот же адрес не прибавляются: для swap используется только первый. Если по ошибке отправили мало, не переводите разницу автоматически. В Chain Swap клиент иногда может предложить новые условия по фактически полученной сумме вместо возврата. Должно оставаться достаточно времени, сумма должна соответствовать лимитам, а подпись refund, то есть возврата, ещё не должна быть создана. Важны и доступные средства сервиса. Это конкретная процедура для неверно профинансированного Chain Swap, а не универсальный способ дополнять любой неудачный перевод. [2] [8]
Сравнивая стоимость, проследите весь путь, а не только рекламный процент. Boltz берёт плату за услугу, а транзакции в отдельных цепях имеют собственную стоимость. В Reverse Swap техническое поле onchainAmount показывает сумму, которую Boltz блокирует для вас после учёта своей комиссии lockup. Это ещё не чистое поступление в кошелёк: нужно оплатить собственный claim, транзакцию получения средств. В Chain Swap вы также оплачиваете первоначальную отправку. Поэтому сравнивайте общий расход с окончательно полученной суммой. Ставки, минимумы и лимиты зависят от направления и пары сетей и могут меняться вместе с сетевыми условиями. Старый рекламный пример — не текущее предложение. [6]
Если Submarine Swap или Chain Swap не удался после отправки средств, возврат может потребовать вашей собственной транзакции. Нужны ключ refund и сохранённые данные обмена. В Taproot сотрудничество Boltz может обеспечить более быстрый key path refund — совместно подписанный возврат без ожидания временного условия. Без сотрудничества script path позволяет вернуть средства по заранее заданному скрипту после выполнения timelock, временного ограничения в правилах транзакции. Эта возможность сама ничего не отправляет: действовать должен клиент. Отмена ещё не завершённого платежа Lightning в Reverse Swap — другой случай, освобождающий ожидающие средства. Он не означает автоматический возврат после любой ошибки приложения или пропущенного срока получения. [3]
В Reverse Swap расчёт Lightning и получение вами средств в цепи — разные события. Статус invoice.settled может означать, что Boltz получил preimage, секретное значение для завершения платежа, связанного с его хешем. Сервер не отслеживает, отправило ли приложение после этого claim в сеть. Клиент должен проверить собственный выход, средства, предназначенные вам, и забрать их до timeout — границы, после которой другая сторона может вернуть их себе. Закрытое приложение, потерянные данные или слишком низкая комиссия могут осложнить завершение. Уведомление на телефоне может активировать приложение, но не заменяет отправленную транзакцию. Судите по фактическому получению, а не только по зелёному сообщению об успехе. [1] [2]
Обычная копия кошелька может не содержать всего, что нужно незавершённому swap. Boltz Rescue Key — набор резервных слов для поддерживаемого способа восстановления. Swap Restore восстанавливает из них совместимые UTXO-обмены, работающие с отдельными неизрасходованными выходами транзакций. Клиент выводит xpub, расширенный публичный ключ для поиска связанных обменов, и соответствующие приватные ключи. Для claim также нужно правильно восстановить preimage. Произвольный seed, исходный секрет другого приложения, не подходит автоматически: должны совпадать способ выведения и формат восстановления. Приватные ключи остаются на устройстве. Отправленный xpub не позволяет тратить средства, но раскрывает историю обменов серверу Boltz. Поэтому сохраняйте и данные конкретного клиента, и имеющиеся старые файлы refund наряду с обычной копией кошелька. [4] [2]
Транзакция может появиться в сети до включения в блок. Её принятие на этом этапе называют 0-conf, без подтверждений. Согласно документации, Boltz не принимает такие входящие переводы пользователей в основной цепи Bitcoin из-за распространения full-RBF. Эти правила при определённых условиях позволяют заменить неподтверждённую транзакцию другой, с более высокой комиссией, даже без первоначального сигнала о такой возможности. В Reverse Swap риск принятия неподтверждённой транзакции, наоборот, несёт получатель. Правила одной пары сетей нельзя переносить на все остальные. Доступная документация также не доказывает, что у сервиса сейчас достаточно средств для вашего перевода. Перед оплатой проверьте текущие параметры, время на завершение и состояние конкретного обмена. [7] [6]
Для полной картины прочитайте эту статью вместе с Самостоятельное хранение, Submarine Swap, Lightning Network, Timelock. На эту статью также ссылаются Bull Bitcoin.