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 发票中的支付哈希。哈希是计算出来的指纹,将付款与正确的交换关联起来。应用还要检查地址及脚本,也就是规定谁能在什么时候动用资金的条件。对于构造 Bitcoin 输出的一种方式 Taproot,检查还包括密钥与脚本树,后者组织各种可能的花费条件。普通用户不需要手工计算这些;关键是使用真正进行验证的客户端。boltz-web-app 的开放代码允许人们检查其实现,但代码公开本身不能证明其他集成,或浏览器当前加载的应用一定正确。 [5] [9]
交换地址不是用来逐步凑齐金额的账户。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 后允许退款;timelock 是交易规则中的时间限制。但这个选项不会自己广播交易,仍须客户端执行。取消 Reverse Swap 中尚未结算的 Lightning 付款、释放待处理资金,是另一种情况。不能据此认为每次应用故障或错过领取时间后,资金都会自动退回。 [3]
Reverse Swap 中,Lightning 付款结算与领取链上资金是不同的事件。invoice.settled 状态可能表示 Boltz 已获得 preimage,即能够完成与其哈希关联付款的秘密值。服务器不会跟踪你的应用随后是否真正广播了 claim。因此,客户端必须检查属于自己的输出,也就是为你准备的资金,并在 timeout 之前领取;到达这个界限后,对方可能取回资金。应用关闭、数据丢失或交易费过低,都可能妨碍完成。手机通知可以帮助唤醒应用,但不能代替已经广播的交易。应以实际收到资金判断结果,而不只看绿色的成功提示。 [1] [2]
普通钱包备份未必包含未完成交换所需的全部信息。Boltz Rescue Key 是用于受支持恢复方式的一组备份词。Swap Restore 用它重建兼容的 UTXO 交换,也就是涉及单个未花费交易输出的交换。客户端派生 xpub,这是一种用于查找相关交换的扩展公钥,同时派生对应私钥。领取资金还必须正确恢复 preimage。其他应用的任意 seed,即其起始秘密值,并不会自动适用:派生方法和恢复格式必须一致。私钥留在设备上。提交 xpub 不会赋予花费权限,但会向 Boltz 服务器揭示交换历史。因此,除了普通钱包备份,也应保留具体客户端的数据以及已有的旧 refund 文件。 [4] [2]
交易可以在进入区块之前出现在网络中。在这个阶段接受付款称为 0-conf,也就是零确认。Boltz 文档表示,由于 full-RBF 的普及,它不接受 Bitcoin 主链上此类用户入金。full-RBF 规则在一定条件下允许用费用更高的交易替换未确认交易,即便原交易没有预先声明允许替换。对于 Reverse Swap,如果收款人接受未确认交易,风险则由收款人承担。一种网络组合的规则不能直接套用于所有其他组合。同样,文档可以打开,并不能证明服务此刻有足够资金完成你的转移。付款前应检查当前参数、可用的完成时间以及具体交换的状态。 [7] [6]
要获得更完整的理解,请将本词条与以下词条结合阅读: 自主托管, Submarine Swap, Lightning Network, Timelock. 反向关联还来自: Bull Bitcoin.