ライトニング体験の向上!?インスタントチャネルとアトミックスワップ

はじめに

Instant
2019年に入り、ライトニングネットワーク(以下、LNと略す)のオンラインウォレットが続々とでてきました。BlueWalletやWallet of Satoshiなどがそれにあたります。これらのウォレットはチャネル開設が不要で使い勝手が良いのですが、その反面、中央集権サービスのため、サービスダウンやチャネルキャパシティ不足が原因で一時的にサービスが使えない場合があります。

EclairモバイルやBitcoin Lightning Wallet(以下、BLW)はライトニングモバイルウォレットなので、サービスダウンなどはありませんが、チャネル開設が必要なのでインストール後直ぐに送受信することができないのがデメリットでした。

しかし、BLW開発者のAnton氏によって「インスタントチャネル」というチャネル開設時に、0承認でも送金できる方法が提案されたので、今回はその仕組みと、応用例について解説したいと思います。

インスタントチャネルとは

LNのチャネル開設ではFundingTxというトランザクションを作りブロックチェーンへ書き込みます。そして、このデータが1承認以上経たないと、そのチャネル上でビットコインの送信ができない仕組みになっています。しかし、インスタントチャネルでは、この承認を待たずしてコインの送金が可能になります。

このインスタントチャネルは、ボブがアリスに対して0.5BTC:0.5BTCのプッシュ式でチャネルを開設します。この方法でボブがチャネル開設するとアリスはボブに対して0.5BTCを直ぐに送金することができます。

しかし、これではボブがアリスへ無料で0.5BTCをあげているように見えるのですが、以下のユースケースの場合は、インスタントチャネルが役立つと想定されます。

  • 対面でアリスがボブにインバウンドチャネル0.5BTCを日本円で購入する場合
  • アリスがオンラインゲームなどで0.5BTCのLN上ビットコインを購入する場合
  • アリスが取引所から0.5BTCを引き出す場合

0承認での送受信は安全か?

もし、アリスがこのチャネル上でボブを経由してキャロルへ送金した後に、FundingTxがブロックチェーンに取り込まれず、メモプールから追い出された場合はどうなるでしょうか?この場合、ボブは損をすることになるのでしょうか?答えは、ノーです。

    1. アリスがボブへ0.5BTC相当の日本円を渡します。ボブはアリスに対して開設をします (0.5 アリス / 0.5 ボブ)。
    2. ボブは既にキャロルとの間にチャネル開設ができているとします(0.5 ボブ / 0.5 キャロル)。ここで、アリスは0.1BTCをボブを経由してキャロルへ送金します。この時のチャネルバランスは以下のようになります。
    3. (0.4 アリス / 0.6 ボブ) (0.4 ボブ / 0.6 キャロル)

    4. ここで、(アリス / ボブ)のチャネルを作ったFundingTxがブロックチェーンに取り込まれなかったとすると、ボブのコイン残高はキャロルとのチャネル(0.4 ボブ / 0.6 キャロル)の0.4BTCと、FundingTxで使うことになっていた1BTCとなります。ここで、ボブはアリスに対して(0.4 アリス / 0.6 ボブ)のチャネル開設を再度試みれば良いことになります。

アトミックスワップとは

ここで少しインスタントチャネルから話が変って、アトミックスワップの話です。アトミックスワップとは、2つの異なるコイン、例えばビットコインとライトコインを第3者の仲介無しにトラストレスに交換する暗号トリックのことです。アリスがビットコインを持っており、ボブがライトコインを持っていたとし、以下にその手順を紹介します。

    1. アリスは「シークレット」と呼ばれるランダムな文字列と、そのハッシュ値を生成し、ハッシュ値のみをボブへ渡します。
    2. ボブはこのハッシュ値を使って特別なビットコインアドレス(Ba)を生成し、アリスへ送金してもらいます。ボブはこの(Ba)から自身のアドレスへコインを移動するにはアリスが作った「シークレット」が必要になります。
    3. 次に、アリスがハッシュ値を使って特別なライトコインアドレス(La)を生成し、ボブへ送金してもらいます。そして、アリスは「シークレット」を使って(La)から自身のライトコインアドレスへコインを移動します。
    4. ここで「シークレット」がブロックチェーン上に公開されたので、ボブはこの「シークレット」を使っての(Ba)から自身のビットコインアドレスへコインを移動します。

このような暗号トリックを使うことで第3者の仲介なく2者間でトラストレスにコインの交換ができるようになります。

インスタントチャネルの応用

例えば、アリスはオンチェーンのビットコインを0.5BTC、ボブは1BTC持っていたとします。この時、アリスが0.5BTCをボブのオンチェーンアドレスへ送金し、ボブはアリスに対して(0.5 アリス / 0.5 ボブ)のチャネルを開設します。このプロセスをアトミックスワップで実行してあげることで、不正行為なしでインスタントチャネルを開設することができるでしょう。こうすれば、アリスはチャネル開設を待つ必要がなく、直ぐにライトニングペイが可能になります。

インスタントチャネルはBLWのTestnet版で既に実装済みですので、興味のある方は以下の参考URLより試してみてください。

参考

Instant channels enable safe Lightning payments with unconfirmed funding

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s