Hashed Timelock Contract

いろいろ知識を集めた感じだと、この技術であまりにもいろんなことができそうな気がしてくるが、本当に認識が正しいのかを調べる。

HTLC

A Hashed Time-Locked Contract (HTLC) is a script that permits a designated party (the "seller") to spend funds by disclosing the preimage of a hash. It also permits a second party (the "buyer") to spend the funds after a timeout is reached, in a refund situation.

日本語:Hashed Time-Locked Contract (HTLC) は、あるユーザー間(売り手と買い手)の決済を行うコントラクトで、売り手がハッシュのプリイメージを公開することで資金を入手することを可能にし、買い手が指定期間内に売り手がプリイメージを公開せずタイムアウトになった際に、資金を取り戻すことを可能にするスクリプトである。

中間者を経由する

中間者を経由する送金では、考慮が必要な点がある。 送金先Cに対し先に中間者Bが送金して、その後に送金者ANONが中間者に送金するとすると、

  • BはAがお金を送ってくれない懸念
  • AはBが本当にCにお金を送ったかの懸念

がある。

HTLCでは、シークレットハッシュとロックタイムを用いて、ビットコインの受信を確認することで初めて将来の支払いを約束することが可能になる。

プロセス

AからBへの支払いを保証するため、

  1. Cはシークレットを作成し、シークレットのハッシュをAに連携する
  2. AはHTLCトランザクションをブロードキャストする
  3. BはHTLCトランザクションをブロードキャストする
  4. CはHTLCトランザクションをブロードキャストし、3の資金を得る
  5. BはHTLCトランザクションをブロードキャストし、Aの資金を得る

atomic swap

上記の仕組みを応用して、atomic swapが実現できる。BCoinが行っているBTC、BCHのatomic swapを例に取る。scriptの例まで書いてあり、非常に有用な記事

セキュリティコードの例を利用していてわかりやすかった。

彼女は自分の鍵「A」を入れて、以前に思い付いた秘密のコードを入力します。キーとコードを入力すると、メールボックスが開き、彼女はビットコインを取得できます。その間、ボブはBitcoinメールボックス「A」を見ていて、ALICEが入力したセキュリティコードを見ています。
彼はBitcoin Cash Mailbox "B"に行き、彼の鍵 "B"を入れて、ちょうど知った秘密コードを入力します。ほら!Bitcoin Cash Mailbox "B"を開き、コインが彼のものです。

submarine swap

これも似たような仕組みで、オンチェーンとオフチェーンで資金をswapする方法もある。変わってくるのはsecret hashではなくinvoiceを利用している点。

メリットとしては一つ工程をへらすことができるので、lightning未対応のwalletから別のlightning walletに一度で交換できることと、multihop paymentでも、中間者のデポジットが足りなくても流動性を上げることが可能になりそう。