ライトニングネットワークは少額決済には向かない!?

posted in: Bitcoin, Blockchain, Lightning | 0 |
Reading Time: 1 minute

はじめに

ライトニングネットワーク(以下、LNと略す)発案者の1人であるTadge氏がツイッターで呟いたこの言葉、

HTLCs don’t work for micropayments (below tx fee level), though single satoshi payments can be securely made within a channel. Pretending 1-satoshi HTLCs are a thing is setting people up to be disappointed…

(日本語訳)1つのチャネル間での1サトシ決済は問題ないけど、(トランザクション手数料レベル以下での)ホップ付きHTLCは少額決済として機能しない。なんちゃって1サトシHTLCは皆をがっかりさせてきているね。

え?LNって少額決済のためじゃないの?と思ってたのですが、どうやら違うみたい。LNは、確かにオンチェーンでの送金よりも(1)決済時間が速く、(2)送金手数料が安いというのがメリットです。それに加えて、オンチェーンではできなかった1円以下での少額決済を可能にする技術だと思っていたのですが、それについて見ていきましょう。※本記事は末尾参考に掲載しているbitcoin.stackexchangeの内容を元に書いています。

(1)David A. Harding氏の考察

LNのルールでは、dust limit(現在は294 satoshi)以下の送金ではHTLCを追加するのではなく、それを一時的にトランザクション手数料に追加します。以下の表は、アリスがボブを経由した1 satoshi 分の送金を表していますが、in-flightとなっている箇所が「送金中」を表しています。これはアリスの送金が、支払先であるキャロルへ無事辿り着いた時に初めて「送金中」から「送金完了」としてボブのコインとしてチャネル情報を更新することができます。その為、送金中の場合は、この1 satoshi は宙に浮いている形となり、それを一時的にトランザクション手数料と見なしているのです。

もし「送金中」の状態でチャネルが閉じれば、その1satoshiをトランザクション手数料としてマイナーが回収します。しかしHTLC送金が成功/失敗した場合は、in-flightで一時的に手数料として換算されていた1satoshiが、成功の場合はto_remoteへ更新され、失敗した場合は送金前の状態へ復元されます。

アリスがボブを経由してキャロルへ送金する場合、一時的にアリス / ボブのチャネル状態が (2 アリス / 0 ボブ fee:1) のようになります。この状態でアリス / ボブのチャネルが閉じると、アリスが送金しようとしていた1コインがトランザクション手数料としてマイナーに回収されることになります。この事から、LNは dust limit 以下での送金をトラストレスに保証していないというのです。

そこでHarding氏は、解決案として、Probabilistic paymentsを提案していますが、この案も根本的な問題を解決していないといっています。そこで次のMaxwell氏の考察についてみてみましょう。

(2)G. Maxwell氏の考察

Maxwell氏によれば、上記で述べたLNのルールがゲーム理論によってセキュリティの担保をしていると考えているみたいです。どういうことかと言うと、もしアリスがボブ経由でキャロルへ送金する場合に、ボブが悪者でキャロルへ中継せずに、(2 アリス / 0 ボブ fee:1) の状態でチャネルを閉じる場合、1コインは誰も取得できずに、マイナーが回収するだけになります。さらにボブはチャネルを閉じるためにトランザクション手数料を支払う必要がでてきます。よってボブがこのような悪意ある行為をするインセンティブがないというのです。Maxwell氏はLNの少額決済はこのインセンティブのみで十分合理的だと考えているみたいです。

まとめ

現時点で、294 satoshi は約2円ほどなのでそれ以下のLN送金では、悪意ある中継者によって妨害され、マイナー手数料となってしまう可能性があることが分かりました。しかし、この攻撃は、中継者にも被害が及ぶので攻撃するインセンティブがないことが分かりました。

私自身はライトニングネットワークは少額決済として実用的に機能していると思いますし、今後もどんどん発展していくことを楽しみにしています。

本内容について指摘事項があれば教えていただけると幸いです。

参考

https://bitcoin.stackexchange.com/questions/85650/htlcs-dont-work-for-micropayments/85694#85694

コメントを残す