Submarine Swap

Lightning上のbitcoinを、安く販売できないか、という疑問が湧いてきた。
一度のTX手数料は金額の大きさには依存しないので、理論的には可能なはず、、という思いがあり、その周辺の知識を集めてみる。

とりあえず画面はこんな感じ

Submarine Swap

Submarine swaps exchange off-chain Lightning tokens for on-chain tokens, using a simple HTLC to help with atomicity.

オンチェーンとオフチェーンの資金交換か。tokenとはあるものの、今回はBTC、LTCに絞って考えていこう。 オンチェーンにあるLTCをオフチェーンのBTCと交換できるようになる、が基本。

フローは、

  1. インボイス作成
  2. インボイスを元にLTCのコントラクトアドレス作成
  3. LTC入金
  4. Lightning pay
  5. LTC取り出し

となる。 この考え方は、atomic swapsの応用だ。

Lightning labsの昔のblogも参考になりそう。

だからLTCのコントラクトのイメージは下記となる。

if(hash(preimage) == invoiceId){  
    checkSig(presentedSig, sendtoPubkey)
}else if(height > refundHeight){
    checkSig(presentedSig, refundPubkey)
}

これは例えば取引所のノードがlightningに対応していない場合とかも、一段飛ばしでチャージできる可能性を提供する。