Boltz je služba a otevřený software pro výměnu mezi Bitcoinem, Lightning a dalšími podporovanými sítěmi. Takové výměně se říká swap. Například pošlete bitcoin z běžné peněženky a na druhé straně dostanete platbu přes Lightning, síť pro rychlé bitcoinové platby. Neposíláte přitom stejný bitcoinový výstup do jiného prostředí: obě strany propojují podmíněné transakce. Odtud označení Atomic Swap, tedy výměna, jejíž části jsou svázány kryptografickými podmínkami. Není to však záruka, že se vše dokončí samo. Záleží také na správně fungující aplikaci, uložených klíčích a včasném odeslání potřebných transakcí. Boltz slouží k převodu, ne jako účet pro dlouhodobé uložení úspor.
Začněme směrem výměny. Když máte bitcoin na hlavním řetězci a chcete doplnit Lightning peněženku, používáte Submarine Swap: pošlete platbu on-chain, tedy transakcí zapisovanou do blockchainu, a přijmete ji přes Lightning. Reverse Swap jde opačně. Zaplatíte Lightning fakturu, což je žádost o platbu s příslušnými údaji, a získáte možnost vyzvednout prostředky na řetězci. Chain Swap propojuje dvě řetězcové sítě, například Bitcoin a Liquid. U posledních dvou typů musí vaše aplikace odeslat claim, transakci, která vám prostředky skutečně vyzvedne. Nestačí tedy zaplatit a považovat práci za hotovou. Na Liquid navíc získáváte L-BTC, aktivum této samostatné sítě; nejde o běžný bitcoinový výstup na hlavním řetězci. Před potvrzením se proto podívejte i na cílovou síť. [1]
Představte si, že vám server pošle adresu a částku k úhradě. Bez další kontroly byste mu pouze věřili, že údaje odpovídají dohodnutému swapu. Klient Boltz, tedy aplikace běžící na vašem zařízení, má částku sám přepočítat a ověřit i platební hash v Lightning faktuře. Hash je kontrolní otisk, který váže platbu ke správné výměně. Kontroluje také adresu a skript, soubor podmínek určujících, kdo a kdy smí prostředky utratit. U Taproot, způsobu sestavení bitcoinového výstupu, do toho patří klíče i strom skriptů neboli uspořádání možných podmínek utracení. Běžný uživatel to nemá počítat ručně; podstatné je používat klienta, který kontroly skutečně dělá. Otevřený kód boltz-web-app umožňuje jeho práci zkoumat, ale sám nedokazuje správnost jiné integrace ani právě načtené aplikace v prohlížeči. [5] [9]
Swapová adresa není účet, na který můžete postupně střádat potřebnou částku. Dokumentace Boltz požaduje jedinou lockup transakci, tedy první převod, který prostředky uzamkne podle pravidel swapu. Další platby na stejnou adresu se s ní nesčítají; pro výměnu se použije jen první. Když tedy omylem odešlete málo, neposílejte automaticky rozdíl. U Chain Swap může klient místo vrácení prostředků nabídnout novou cenu podle skutečně přijaté částky. Musí však zbývat dost času, částka musí vyhovovat limitům a nesmí být vytvořen podpis pro refund, tedy vrácení prostředků. Záleží i na dostupných prostředcích služby. Jde o konkrétní postup pro chybně zaplacený Chain Swap, nikoli o možnost libovolně doplňovat každý neúspěšný převod. [2] [8]
Pro porovnání nákladů potřebujete celou cestu, ne jen procentní poplatek z nabídky. Boltz účtuje poplatek za službu a vedle něj vznikají náklady transakcí na jednotlivých řetězcích. U Reverse Swap se v technických údajích objevuje onchainAmount: částka, kterou Boltz uzamkne pro vás, již po zohlednění poplatku za svůj lockup. To ale ještě není čistý příjem do peněženky, protože zaplatíte vlastní claim, tedy vyzvedávací transakci. U Chain Swap platíte také transakci, kterou prostředky na začátku odesíláte. Důležité je proto porovnat celkem vydanou částku s tím, co nakonec přijmete. Sazby, minima a limity se zjišťují pro konkrétní směr a dvojici sítí; mohou se měnit podle podmínek sítě. Starý reklamní příklad není aktuální nabídka. [6]
Když selže Submarine Swap nebo Chain Swap poté, co jste poslali prostředky, jejich vrácení může vyžadovat vaši vlastní transakci. K ní potřebujete refund klíč a uložené údaje swapu. U Taproot může spolupracující Boltz umožnit rychlejší key path refund, tedy společně podepsané vrácení bez čekání na časovou podmínku. Když spolupráce není dostupná, slouží script path: vrácení podle předem stanoveného skriptu po splnění timelocku, časového omezení zapsaného v transakčních pravidlech. Ani tato možnost sama transakci neodešle; musí ji provést klient. Jiná situace nastává, když se u Reverse Swap zruší dosud nevypořádaná Lightning platba a prostředky se uvolní zpět. Z toho ale nelze vyvozovat automatické vrácení po každé poruše aplikace nebo zmeškání vyzvednutí. [3]
U Reverse Swap je důležitý rozdíl mezi vyrovnáním Lightning platby a vaším převzetím prostředků na řetězci. Stav invoice.settled může znamenat, že Boltz získal preimage, tajnou hodnotu umožňující dokončit platbu spojenou s jejím hashem. Server nesleduje, zda vaše aplikace následně opravdu odvysílala claim. Proto musí klient ověřit vlastní výstup, tedy prostředky určené pro vás, a zajistit jejich vyzvednutí před timeoutem, mezí, po níž je může druhá strana získat zpět. Zavřená aplikace, ztracená data nebo příliš nízký transakční poplatek mohou dokončení zkomplikovat. Upozornění na telefonu pomůže aplikaci probudit, ale nenahrazuje odeslanou transakci. Výsledek posuzujte podle skutečného přijetí, ne pouze podle zelené hlášky. [1] [2]
Běžná záloha peněženky nemusí obsahovat vše, co potřebuje rozpracovaný swap. Boltz Rescue Key je sada záložních slov pro podporovaný způsob obnovy; Swap Restore z ní umí obnovit údaje podporovaných UTXO swapů, tedy výměn pracujících s jednotlivými neutracenými výstupy transakcí. Klient odvodí xpub, rozšířený veřejný klíč pro dohledání souvisejících swapů, a odpovídající soukromé klíče. Pro claim musí správně obnovit také preimage. Libovolný seed, výchozí tajná hodnota jiné aplikace, proto není automaticky použitelný: musí sedět způsob odvození a formát obnovy. Soukromé klíče zůstávají na zařízení. Odeslaný xpub sice neumožňuje utrácet, ale odhaluje historii swapů serveru Boltz. Vedle zálohy běžné peněženky tak mají význam i uložené údaje konkrétního klienta a případné starší refund soubory. [4] [2]
Transakce se může objevit v síti ještě před zařazením do bloku. Přijetí v této fázi se označuje 0-conf, tedy bez potvrzení. Boltz podle dokumentace nepřijímá takové uživatelské vklady na hlavním bitcoinovém řetězci kvůli rozšíření full-RBF, pravidel umožňujících za určitých podmínek nahradit nepotvrzenou transakci transakcí s vyšším poplatkem i bez původního signalizování této možnosti. U Reverse Swap naopak případné riziko přijetí nepotvrzené transakce nese příjemce. Pravidla nelze přenášet z jednoho páru sítí na všechny ostatní. Stejně tak otevřená dokumentace neznamená, že má služba právě dost prostředků pro váš převod. Před zaplacením rozhodují aktuální parametry, čas na dokončení a stav konkrétního swapu. [7] [6]
Pro nejúplnější obraz čtěte toto heslo společně s Vlastní úschova, Submarine Swap, Lightning Network, Timelock. Opačným směrem na něj odkazují také Bull Bitcoin.