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, початкового переказу, що блокує кошти за правилами обміну. Наступні платежі на цю адресу не додаються: для обміну використовується лише перший. Якщо помилково надіслали замало, не надсилайте різницю автоматично. Для 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]
Звичайна копія гаманця може містити не все, що потрібно незавершеному обміну. 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.