ライトニングネットワーク
マイクロペイメントペイメントチャネルのプロトコルにより、ビットコイン上で信頼出来る第三者を介在させずに、完全なP2Pでマイクロペイメントが実現できることがわかりました。
しかし、現在のマイクロペイメントチャネルはいくつかの欠点もあります。
その最大のものは、相手ごとにペイメントチャネルを個別に開設しないといけないというところでしょう。
相手ごとというのは、つまり、支払先ごとにチャネルを開設しないといけないので、たとえば、動画サイトをみて、ニュースで課金して、投げ銭で課金して・・・という具合に沢山のサービスを使ったり、もしくはAさん、Bさん、Cさん、それぞれに支払おうとすると、その数だけチャネル開設が必要になります。
チャネル自体は低コストで作れますが、やはりこれが大量にということになると大変です。多くのひとが一日になんどもチャネルを作るとなると、全体でトランザクションの量は大量になり、はやりスケールに限界がでてきます。
そこで、考えられているのが、ペイメントのハブをつくったり、ペイメントをルーティングするネットワークをつくろうというものです。
これが、ライトニングネットワークといわれるもので、これに必要な基本機能(Segwit + OP CSV)がビットココアソフトウェアに取り込まれたことによって、にわかに話題が沸騰しています。
ライトニングネットワークに関する記事や、これを前提とした支払いネットワークの構築(21 inc)などの案件も増えてきているように思います。
今回のレポートでは、この辺りを解説します。
図1) 個別にチャネルを開いていると、だんだんこうなってしまう。
ペイメントハブをつくる
さて、チャネルを沢山解説しないといけないという問題の最初の解決法は、ペイメントのハブとなるようなものを作ることです。
図を見てください。
図2)ハブのモデル
これがハブ型のモデルです。こうして、ハブをつくればハブを介して支払いができるようにみえますし、実際にはある程度それが実現できます。
たとえば、AがBに支払いするとしましょう。AはBに直接ペイメントチャンルを持っていないので、まずHUB-Xに支払いをします。HUB-Xは、Bにチャネルを持っているので、Bに支払いができます。このようにHUBを通じて、Aは間接的にBに支払いができるようになります。
同様に、HUBXは、HUBZにチャネルを持っていれば、それを通じて、AからDへの送金もできるようにみえます。
つまり、これは何かというと、銀行モデルに近いです。銀行(ハブ)に口座を持っている人の間ではお金の振替ができます。また、銀行同士(ハブ)でお金を送金できるので、他の銀行のユーザーとも間接的にお金が移動できます(振り込み)。というもの。
しかし、単純なハブモデルでは問題があります。HUBを信頼しないといけないからです。
Aは、Bへ送金するとき、HUBにたいして「Bへ送金してくれ」と指示しますが、HUBがその通りに送金するとは保証できません。これは・・信用を前提とした銀行システムを再現することになり、ビットコインの意味が全くなくなってしまいます。
何とかして、直接的なやり取りができないのでしょうか?HUBを信用せずに、HUBを通した送金を実現できないのでしょうか。
それを実現する技術がライトニングネットワークです。
中継チャネル
ライトニングネットワークは、支払いチャネルのネットワークです。
Aさん→Bさん というチャネルがすでにあったとします。Bさんは別途Cさんにチャネルも開設してるとします(B→C)。すると、Aさんは、Bさん経由でCさんに支払いが可能になります。
このとき経由のBさんはいわゆる中継地点・ハブ的な役割を担うのですが、大きく違うのは、間を中継しているBさんを一切信用することなく、A→B→Cのやり取りができてしまう技術だということです。
Bさんは中継するのですが、資金をバックレたり、盗んだり改ざんしたりすることが出きません。
図3) ライトニングネットワークの支払い
図解を見てください。
A→Bにチャネルが開設されており、B→Cにもチャネルが開設されています。
このとき、A→B→Cという支払い経路で、AからCに支払いができます。
そのとき、実際のトランザクションはBを経由するのですが、途中のBはルーターのようなもので、中継はするけれども、支払いを改ざんしたりバックレたりすることが出来ません。
つまり、Aからみると、Bを経由していながら、あたかもCに直接支払いができているようにできます。
実際の経路は破線でしめしましたが、支払いとしてはAからCへの実線による直接のチャネルが開けたのと同じようになります。
図4)多段階モデル
同様に、多段階の中継も可能です。この場合、Aは、BとCを経由して、Dに支払いを行います。
この場合も、中継するBとCを信用する必要がありません。Aは、中継しているひとが誰であるか、何であるか、信用できるかどうかを一切問うことなく、Dへ中継支払いができるのです。
なんでこのような魔法のようなことが出来るのかというと、それが暗号技術の凄いところです。
この原理が、Hash Timelocked Contract (HTLC)という方法です。
これは、コインの最終的な受け取り手だけがそのコインを使えるようにする方法のようです。技術的には複雑なので、イメージだけを説明すると、トランザクションの中に、暗号キーに相当するもの(ランダムナンバーのハッシュ)を入れておいて、最終受け取り手だけがこのキーを知っているので、ロックを解除でき、コインが使えるといったような感じです。
最終受け取り手だけがキーを知っていて、途中の中継者はこのロック解除キーを知らないので、中継していてもコインを勝手に使うことはできないという感じになります。
また、途中の中継者がバックれた場合でも安全にコインが元に戻ったりするようなセーフティの仕組みを作らないといけません。それについてもライトニングネットワークの仕様には記載があります。(このセーフティの仕組みについては複雑で理解はできませんでした)
ライトニングネットワーク
さて、このような感じで、ペイメントチャネルをつなげていくと、やがてネットワークになっていきます。それがライトニングネットワークです。なぜ、”ライトニング”なのかはわからないのですが、なんとなく早くて衝撃的といった感じでそういう名前なのかもしれません。
ネットワークの図を示します。
図5)ライトニングネットワークの例
チャネルをつなげていくと、図のようにいろいろなネットワークが形成されていくことになります。例えば上の図ですと、チャネルがつながっているところは、どこでも支払いが出来るというかたちになります。
A→B→D→E→Fとか、
E→D→Aとか、
C→B→D→E→F→Gとか。
さて、こうなりますと、技術に詳しい方は、ルーティングが必要ではないか?と思います。その通りです。
ルーティングとは、どうやって、最終的な支払者に接続するか?といった経路を探したり、最適化するといったようなものです。
(インターネットのルーティングに当たります。アクセスしたいサーバーにたどり着くまでの経路を検索して、そのとおりにパケットを運ぶ。これと同じように、ビットコインがルーティングにされるわけです。)
・そもそもどういう経路があるのか?
・どの経路が一番効率的か?短いか?
・経路が遮断されたりトラブったとき、迂回してつなげるか?
みたいなのを適切に処理する必要があります。
上の例で言うとAがGに支払いたい時を考えます。
ルートを探すと、
A→B→D→E→F→G
A→B→C→H→G
というルートのほかに、
A→F→G
という短いルートもあります。
これを見つけて、どちらが早いかを判断するような処理が必要です。A→F→Gのほうが早いので、普通はこちらを使いますが、何らかの問題で途中の経路が落ちる場合があります。
たとえばFさんが落ちてしまった場合、ルートを変更して、Fさんを含まない、A→B→C→H→Gというルートに変更する必要があります(re-routing)
こういうルーティングの処理は必須になります。プロトコルのドラフトではこうしたリルーティングの場合でも、コインが失われることがない理論が示されています。
ルーティングの問題
このルーティングという問題はインターネットを知っている人であればご存知の通りで、とてもやっかいです。インターネットのルーティングをおこなう機械をルーターといいますが、ルーターだけで相当に複雑な仕組みというか、インターネットという仕組みは、ほとんどこのルーティングの話がすべてといっても過言ではないのです。
インターネットでは、ルーター同士が、ルーティングの情報を交換しあっています。これがBGP(Border Gatway Protocol)と呼ばれるものです。
しかし、ルーティングを行うとなると、ライトニングネットワークは、相当に複雑になります。
現在示されている論文は、ルーティングプロトコルについては、未解決としています。
ビットコインそのものにルーティングプロトコルを含めることは現実的ではなく、「サードパーティによるルーティング情報の提供が必要である」と結論づけています。
現在ルーティングプロトコルの開発も進めているようですが、まだアイデア段階で、設計にも至ってないという感じです。Bitfuryにより、ライトニングネットワークのルーティングプロトコルであるFlareがと提案されました。これを元にルーティングの実証実験がスタートしました。
また、論文では、Gatewayについても記載があります。いまみなさんがインターネットを使うときには最寄りのISPにつなぐように、ライトニングネットワークの入り口になるようなGatewayを提供するようなん業者が出現し、みなそこにつなぐようになるかもしれない、と書かれています。
Lightning Networkが実現したら?
ライトニングネットワークが実現したらどうなるでしょうか?ユーザーは、幾つかのハブやゲートウェイみたいなところに、チャネルを張ることで、世界中のサービスに低コストで少額支払いができるようになると思います。これができたら本当に便利です。他の支払い手段は全部要らなくなってしまうのではないでしょうか。
ライトニングネットワークは、今の時点ではまだドラフト段階です。あとに述べるように、課題もありますので、こういう夢物語の方向を実現すべく、頭を絞っている人々がいて、がんばって実現できたら凄いよね、くらいの温度感でいたほうがいいとおもいます。
ただ、私は、この夢物語の構想には、ワクワクします。これが実現した世の中を早く体験したいですね。
以上が解説です。
元の論文のソースを示します。もし読解にチャレンジされたい方がいたら、こちら。(めちゃくちゃ長くて複雑です・・・私も詳細は全く理解できませんでした)
Bitcoin Lightning Network
元ドキュメント
https://lightning.network/lightning-network-paper.pdf
要約的な短いペーパー
https://lightning.network/lightning-network-paper-DRAFT-0.5.pdf
Flare
https://ja.scribd.com/document/317696923/Flare-White-Paper
Lightning Network の問題点は?
ライトニングネットワークは、その構想を考えるだけでも凄い話だとおもいます。ビットコインの上に、さらに支払いのためのネットワークプロトコルが構築できてしまい、ほぼゼロコストでマイクロ支払いが飛び交うようになるのですから。
もしライトニングネットワークができれば、いまいわれているようなスケーラビリティの問題は解決するでしょう。革命的と思われるのですが、実現のハードルはまだ高いといえます。
そこで、ライトニングネットワークの問題点についても、検証してみます。
http://codesuppository.blogspot.com/2016/02/the-lightning-network-is-so-great-that.html
このブログには、「ライトニングネットワークは素晴らしいアイデアで、キラーアプリになるだろう」と支持すると共に、ライトニングネットワークが乗り越えるべき障害をについて、記述されています。
- まだライトニングネットワークは存在しない
ライトニングネットワークは複雑で、技術的なチャレンジを沢山含んでいます。すぐに実現するというわけにはいきません。
- ライトニングネットワークはトランザクションをスケールさせるがユーザーの増加には別の対応が必須
ライトニングネットワーク上で何十億のトランザクションが捌けても、チャネル開設やクローズのトランザクションだけで、ブロックは一杯になってしまうだろう。ブロックサイズはいずれにしても拡大が必要と述べてます。
- ライトニングネットワークができても、ウォレットはすぐに対応しないだろう
数年はかかると言っています。
- 少額支払い以外(大きなお金)をライトニングネットワークにおいておけない
ライトニングネットワークは、説明したようにビットコインがネットワーク上のマルチシグアドレスにデポジットされます。少額(10数ドル)ならいいのですが、大きなお金を長期間デポジットするのは問題があります。
- ライトニングネットワークは分散的だが、中央集権化も防げない
ライトニングネットワークは中継者が必要ですが、この人もネットワークにある程度のお金を常時デポジットしていないと機能しません。大量のお金をデポジットし続ける個人はおらず、結局は、そういう専業の業者が現れるのではないかということ。つまりライトニングネットワークのゲートウェイみたいなもの。これが一定規模のデポジットを行い、相互に接続して、流動性を確保する-まるで現在の銀行モデルのようになってしまうだろう。さらに、このゲートウェイビジネスでは、チャネルを開設するときに、KYC(本人確認)が厳格されたり、トランザクションをモニターされるなど、政府による規制が入るだろう。
- ビットコインレートの問題
デポジットしている期間は資金がロックアップされるのでレートが大きく変わると問題になる
- ホットウォレット化
ライトニングネットワークでは、頻繁にトランザクションをやり取りするので、結局ユーザーは常にネットにつながった、ホットウォレットとして使うことになる。また中継者も同じ。ホットウォレットには、安全性の問題が常にある。
以上は実に的確な指摘とおもいます。
この指摘のなかでは、ゲートウェイの集約化による銀行化と規制強化、それから、ホットウォレット問題、この2つが大きいように思います。
ライトニングネットワークが大規模ゲートウェイ必須となると、規制が入りやすく、ここで大きく使い勝手やプライバシーが低減しそうな気がします。チャネルを張っている間はビットコインアドレスなども固定なので、誰がどういう支払いをしたかをすべてゲートウェイが把握するみたいなことにもなってしまいかねません。もちろんライトニングネットワークをつかわず、通常のビットコインの支払い(いま皆さんがやっているもの)をすればいいわけですが、ライトニングネットワークがあまりに普通になると、ライトニングネットワーク接続でないと支払いできないみたいなことになって、結局中央集権化が進むのかなという懸念もあります。
またホットウォレットの問題も大きです。ユーザーは常時ホットな状態でないと使えないというのがライトニングネットワークの仕様ですから、そんなに大きなお金はやり取りできないんじゃないかと思います。(もともとマイクロペイメントチャネルですし・・それはそれでよいのですが)
(取引所と違って、ゲートウェイはコインを預かったりしませんので、そこが大規模になってもGOXしたりする心配はないのは良いところです)
開発可能なのか?
そして、まずもって、そもそも「ライトニングネットワークはまだ存在していない」という点があります。本当に開発可能なのでしょうか?とにかく複雑なプロトコルで、理論上はこれでいいとしても、実際にソフトウェアとして実装するには相当の技術力が必要ではないかとおもいます。
いくつかの記事では、プロトタイプ的なものが夏にも出来るというようなことを述べているようですが、実際何時頃にどのようなものが出来るかはまだ未知数です。
また、ルーティングについても未解決ですので、プロトタイプができても、ルーティングを必要としないか、固定的な単純なルーティング(HUBを一つ経由するだけとか)といったものになるかもしれません。
Segwit + OP CSV
最後に。
最近急速にライトニングネットワークの話が出てきている背景は2つあります。
一つは、スケーラビリティの観点から、単純にブロックサイズを増やすだけではない方法でスケールするひつようがあることが認識されたこと。(レイヤー2のソリューションと言っています)
もう一つは、ライトニングネットワークは夢の技術と言われていまして、なぜかというと、いままでのビットコインネットワークでは、そもそもライトニングネットワークを実現する基礎的な機能が足りなかったので、開発自体ができなかったのです。
今回、Segwitの導入と、OP_CSV(OP Check Sequence Verify)という新しいOPコードが実装されて、この2つにより、ライトニングネットワークが実際に開発できるようになりました。なので、開発者が実際に開発し始めた、という感じです。
ライトニングネットワークの実現には、
・トランザクション展性の解決
・相対的な時限ロックトランザクションの作成
このふたつが、技術的にマストなのですが、この機能はビットコインにいままでありませんでした。とくにトランザクション展性については、ビットコイン実装上の最大の欠陥とまでいわれていて、ながらく問題視されていました。
Segwitは、ブロックサイズの圧縮という効果のほうが注目されますが、同時にトランザクション展性を最終的かつ恒久的に解決しており、これは非常に大きいです。
トランザクション展性→Segwitで解決
相対的なロック→OP_CSVが実装される
どちらも夏までには実際のネットワークで有効になることが予想されていますので、それにあわせて、ライトニングネットワークが動くように開発がすすんでいます。
次回
さて、このマイクロペイメントやライトニングネットワークの技術に賭けている企業があります。それが21INCです。21INCはラズベリーパイのマイニングマシンを発表した会社と思われていますが、実はその裏には壮大なビジネスプランがあったことが最近明らかになりました。
かれらが目指しているものは、マシンtoマシンのマイクロペイメントで、マシンのAPIを一回叩いたら0.0001セント払うみたいなそういうものを実現しようとしています。
これにはペイメントチャネルと、ライトニングネットワークの実現が不可欠で、21インクのビジネス戦略とについては、回をあらためてレポートしたく思います。
今回はややテクニカルな内容も含んでおりますので、間違いなどありましたら指摘ください。