ビットコインライトニングネットワーク入門
ホーム
記事
ビットコインライトニングネットワーク入門

ビットコインライトニングネットワーク入門

初心者
公開済 Nov 28, 2018更新済 Feb 14, 2023
20m


コンテンツ


はじめに

仮想通貨には、複数の固有な特性があり、ハッキングされたり、安易にシャットダウンされることなく、誰もがサードパーティーの介入なしに世界中へ価値を発信するために使用することができます。
これらの特性を維持するためには、重要なトレードオフを行わなければなりません。多くのノードが仮想通貨ネットワークの運用に関与しているため、スループットには制限があります。その結果、ブロックチェーンネットワークが処理できる1秒あたりのトランザクション数(TPS)は、大衆への普及を目指す技術としては比較的低いものとなります。
ブロックチェーン技術固有の制限を克服するために、ネットワークが処理可能なトランザクション数を増加させるためのスケーラビリティソリューションが数多く提案されています。この記事では、ビットコインプロトコルの拡張機能の1つであるライトニングネットワークについて深く掘り下げてみましょう


ライトニングネットワークとは?

ライトニングネットワークは、ブロックチェーン上に構築されたネットワークで、高速なピアツーピアトランザクションを可能にします。これはビットコイン専用ではなく、Litecoinなどの他の仮想通貨にも統合されています。
“ブロックチェーン上に構築されている”というのは、オフチェーンまたはレイヤー2ソリューションと呼ばれるものです。ブロックチェーン上のすべてのトランザクションは、記録不要で、個人がトランザクションを実行できるようになります。
ライトニングネットワークは、ビットコインネットワークとは異なり、独自のノードとソフトウェアを持っており、メインチェーンと通信をしています。ライトニングネットワークにアクセスするには、ブロックチェーン上に特別なトランザクションを作成する必要があります。

まずはじめに、他ユーザー間でスマートコントラクトを構築するためのトランザクションの作成が必要です。詳細は後ほど説明しますが、現在は、スマートコントラクトが他ユーザーとプライベートな電子帳簿を保持していると考えてください。この電子帳簿には多数のトランザクションを記録することができます。これらのトランザクションはあなたとカウンターパーティーにしか見ることができず、セットアップ時に複数の特殊な機能が実装されているため、不正を行うことはできません。

この電子帳簿をチャネルと呼びます。例えば、アリスとボブがそれぞれ5BTCをスマートコントラクトに入金したとします。彼らのチャネルでは、2人とも5BTCの残高があることになります。アリスはボブに1BTCを支払うように電子帳簿に記録します。これで、ボブの残高は6BTC、アリスの残高は4BTCとなり、ボブは後日、2BTCをアリスに送り返し、アリス側の残高を6BTC、ボブ側の残高を4BTCに更新することができます。

いつでも、チャネルの現在の状態をブロックチェーンに公開することができます。その時点で、チャネルの各残高は、チェーン上のそれぞれのパーティーに割り当てられます。

その名の通り、ライトニングトランザクションは非常に高速です。ブロック確認は不要で、インターネット接続によって可能な限りの速さで支払いを行うことができます。


なぜライトニングネットワークが必要なのか?

ライトニングネットワーク(またはLN)は、ビットコインブロックチェーンをスケーリングする最も賢明なアプローチです。このような膨大なエコシステムの中で変化を調整するのは困難なことで、ハードフォークや壊滅的なバグのリスクがあります。非常に多くの価値がかかっているため、実験はとても危険です。

実験をブロックチェーンから遠ざける程に、柔軟性が増加します。なにか問題が発生しても、実際のビットコインネットワークには何の影響もなく、レイヤ2ソリューションは、プロトコルを10年以上継続してきたセキュリティ上の前提を損なうものではありません。

ユーザーは、従来の方法から切り替える義務はありません。エンドユーザーにとっては、オンチェーントランザクションは通常通りに機能しますが、オフチェーントランザクションも同時に機能します。

ライトニングネットワークを使用すると、いくつかのメリットがあります。以下では、主なものを見ていきましょう。


スケーラビリティ

ビットコインのブロックは、約10分毎に作成され、保持できるトランザクション数は限られています。ブロックスペースはトラストレスなリソースのため、他のユーザーに対して入札する必要があります。マイナーは、第一に報酬を得ることに関心を持っているため、最初に高い手数料のトランザクションを処理します。
多くのユーザーが、同時に資金を送信しない限り、問題は発生しません。また、手数料を低く設定することができますが、次のブロックにその取引が含まれる可能性があります。しかし、全員が同時に取引をブロードキャスト(送信)した場合、平均手数料が大幅に上昇する可能性があります。過去に何度か5ドルを超えたこともあり、2017年のブルマーケットの絶頂期には50ドルを超えました。


ビットコインの平均取引手数料(米ドル)


数千ドル相当のビットコインを移動させる取引では重要ではないと思われるかもしれませんが、少額な支払いによる持続性は損なわれます。5ドルの手数料が付いた3ドルのコーヒーを購入したい人はいるのでしょうか?

ライトニングネットワークでは、チャネルの開設および閉設するために2種類の手数料を支払う必要があります。しかし、チャネルを開設してしまえば、あなたと取引相手は無料で何千ものトランザクションを処理することができます。取引完了後、最終状態をブロックチェーン上に更新します。

大規模なスキームでは、ライトニングネットワークのようなオフチェーンソリューションに依存するユーザーが増加すると、ブロックスペースはより効率的に使用されるでしょう。低価値で高頻度の送金は決済チャネルで行われ、ブロックスペースは大規模なトランザクションやチャネルの開閉に使用されます。これにより、システムにアクセスできるユーザー数が大幅に増え、長期的にはスケールアップが可能となります。


マイクロペイメント

ビットコインには、1回の取引で送金可能な最低金額があります。記事を執筆している現在では、約0.00000546BTC(約4セント)に相当します。ライトニングネットワークを利用することで、利用可能な最低金額を0.00000001 BTC、(1サトシ)として取引することができます。

マイクロペイメントにとって、ライトニングは魅力的です。通常のトランザクションでは手数料が発生するため、メインチェーン上で少額を送金することは現実的ではありません。しかし、チャネル内では、無料でビットコインの端数を送金することができます。

また、マイクロペイメントは多くのユースケースに適しています。ユーザーがサービスを利用するたびに少額を支払うサブスクリプションベースのモデルに入れ替わる可能性があると推測する人もいます。


プライバシー

ライトニングネットワークのもう1つの利点は、ユーザーに高度な機密性を提供できることです。当事者は自分たちのチャネルを広範なネットワークに知らせる必要はありません。ブロックチェーンを見て、このトランザクションがチャネルをオープンしたと認識しても、その内部で起こっていることを知ることはできません。また、参加者がチャンネルを非公開に選択した場合、どのようなトランザクションが行われているかは参加者だけが知ることができます。

例えば、アリスがボブとのチャンネルを持ち、ボブがキャロルとのチャンネルを持つ場合、アリスとキャロルはボブを介してお互いに支払いを送金することができます。ダンがキャロルと繋がっている場合、アリスはダンに支払いを送金することができます。これを利用して、相互接続された決済チャネルを大規模なネットワークへと拡大することができます。しかし、この設定では、チャネルが閉鎖された後、アリスが誰に送金したかを確認することはできません。


ライトニングネットワークの仕組みとは?

ここまで、ライトニングネットワークがどのようにノード間のチャネルに依存しているかを説明してきました。それでは、ライニングネットワークの仕組みについて詳しく見ていきましょう。


マルチシグネチャーアドレス

マルチシグネチャー(またはマルチシグ)アドレスは、複数の秘密鍵が使用できるアドレスです。作成時には、資金を使用できる秘密鍵の数と、トランザクションに署名するために必要な秘密鍵の数を指定します。例えば、1-of-5スキームは、5つの秘密鍵を使用して有効な署名を作成することができ、1つの秘密鍵だけが必要であることを示します。2-of-3スキームは、3つの有効な秘密鍵のうち、2つの秘密鍵が資金を使用するために必要であることを示しています。
ライトニングチャネルを初期化するために、参加者は2-of-2スキームで資金をロックアップします。署名可能な秘密鍵は2つしかなく、仮想通貨を移動するためには両方が必要です。ここで、友人のアリスとボブを呼び戻しましょう。彼らは今後数ヶ月の間、お互い多くの支払いをすることになるため、ライトニングネットワークのチャネルを開設することにしました。

これは、2人が共同所有のマルチシグアドレスに3BTCずつ入金することから始まります。繰り返しになりますが、ボブはアリスの同意がなければ、アドレスから資金を移動させることはできず、逆も同様です。

今では、両者の残高を調整する用紙を保管することができます。どちらも開始残高は3BTCですが、アリスがボブに1BTCの支払いをした場合、アリスが2BTC、ボブが4BTCを所有していることをメモしておきましょう。このように資金の移動が決定されるまで、残高を追跡することができます。

残高の追跡は可能ですが、どのような意味があるのでしょうか?さらに重要なのは、非協力的な人が出てくることはないのでしょうか?アリスが6BTCを所有しており、ボブは何も所有していない場合、ボブは資金の送金を拒否することで何も失うことはありません(アリスとの友情を除いては)。


ハッシュタイムロックコントラクト(HTLC)

上記のようなシステムは、既存の信頼されたセットアップよりも劣っています。アリスとボブの間の“契約”を強制する仕組みを導入することで、さらに興味深いことが発生します。一方の当事者がルールに従わない場合、もう一方の当事者はチャネルから資金を引き出す救済策が用意されています。

そのメカニズムは、ハッシュタイムロックコントラクト(HTLC)です。この用語は難しく聞こえるかもしれませんが、実際には非常に分かりやすい概念です。これは他の2つの技術(ハッシュロックタイムロック)を組み合わせて、ペイメントチャンネルでの非協力的な行動を是正するものです。
ハッシュロックとは、秘密を知っていることを証明することで、資金を使用できるという取引上の条件です。送信者は、一部データのハッシュ化を行い、受信者へのトランザクションにハッシュを含めます。受信者がそれを使用する唯一の方法は、ハッシュと一致する元のデータ(秘密)を提供する場合です。そして、受信者が元のデータを提供する方法は、送信者が受信者にそれを提供した場合です。
タイムロックとは、特定の時間まで資金を取り出すことができない状態のことです。これは、実時間またはブロック高のいずれかを指定した場合に限ります。

HTLCはハッシュロックとタイムロックを組み合わせて作成されます。実際には、HTLCは条件付きの支払いを作成するために使用することができ、受信者は特定の時間前に秘密を提供しなければならず、送信者は資金を回収することができます。この部分は例を挙げて説明した方が良いでしょう。アリスとボブに話を戻します。


開閉チャネル

私たちは、アリスとボブが共有するマルチシグネチャーアドレスに資金を提供するトランザクションを作成した例を示しました。しかし、これらのトランザクションはまだブロックチェーン上に公開されていません。最初にもう1つやるべきことがあります。


ボブから3枚、アリスから3枚の仮想通貨。


覚えておくべきことは、これらの仮想通貨をマルチシグから出金する唯一の方法は、アリスとボブが共同で取引に署名した場合です。もしアリスが6枚の仮想通貨すべてを外部アドレスに送金したい場合、ボブの承認が必要です。また、彼女は最初にトランザクション(このアドレスに6枚のビットコインを送信)を作成し、自身の署名を追加する必要があります。 

彼女は、トランザクションをすぐにブロードキャストすることもできますが、ボブが署名していないため無効になります。アリスは最初に不完全なトランザクションをボブに提出します。その後、彼が署名した場合、トランザクションは有効になります。

全員が誠実なプレイを続けるための仕組みはまだできていません。先述したように、取引相手が協力を拒否した場合、事実上、資金は制限されてしまいます。それを防ぐための仕組みについて説明します。いくつか異なる動きがありますので、ご了承ください。

各当事者は秘密を作成する必要があります。それらをハッシュAとハッシュBと呼びましょう。アリスとボブが秘密を明らかにしてしまうと大変なことになってしまうため、隠しておくことにします。ペアはそれぞれ秘密のハッシュAとハッシュBを作成します。秘密を共有する代わりに、ハッシュを共有するのです。


アリスとボブは、相互の秘密のハッシュを共有します。


アリスとボブは、マルチシグアドレスに最初のトランザクションを公開する以前に、コミットメント・トランザクションのセットを作成する必要があります。これは、他ユーザーがトランザクションを拒否した場合、彼らに救済措置を提供する手段です。

前述の電子帳簿のようなチャネルについて考えると、コミットメント・トランザクションは元帳へのアップデートです。コミットメント・トランザクションの新しいペアを作成するたび、2人の参加者の間で資金の残高を調整していることになります。

アリスのトランザクションには、2つの出力があります。1つは所有しているアドレスへの支払いで、もう1つは新しいマルチシグアドレスにロックされているものです。彼女はそれに署名をした後にボブへ提出します。


アリスの取引には2つの出力があります。1つはアドレスへ、もう1つは新しいマルチシグへの出力です。それらを有効にするためにはボブの署名が必要です


ボブも同様で、一方の出力は自分自身に支払い、他方の出力はマルチシグアドレスに支払います。それらに署名をしてアリスへ提出します。


非常に類似した2つの不完全な取引があります。


通常、アリスがボブのトランザクションに署名を加えることで有効となりますが、これらの資金はまだ入金されていない2-of-2のマルチシグから使用されていることに注意してください。それは、残高がゼロの口座から小切手を使用しているようなものです。したがって、これらの部分的に署名されたトランザクショは、マルチシグが稼働してからしか使用できません。 

新しいマルチシグネチャーアドレス(3BTCの出力先)には、いくつかの固有の特性があります。アリスが署名をしてボブに提出した不完全なトランザクションを見てみましょう。マルチシグの出力は、以下の条件で使用することができます。

  1. 両者が協力して署名をすることができます。
  2. ボブは特定時間の経過後に1人で使用することが出来ます(タイムロックのため)。
  3. アリスはボブのハッシュBを知っていれば使用することができます。

ボブがアリスに提出したトランザクション

  1. 両者が協力して署名をすることができます。
  2. アリスは特定時間の経過後に1人で使用することができます。
  3. ボブはアリスのハッシュAを知っていれば使用することができます。

両当事者は、まだ相互の秘密を知らないため、3.は不可能であることを覚えておいてください。もう1つ注意したいのは、取引成立後、相手の出力に特別な条件がない場合、すぐに使用できるということです。タイムロックの期限切れになるのを待ち、自身で資金を使用、または相手と協力をして使用するかのどちらかになります。

これで、2-of-2マルチシグアドレスにトランザクションを公開することができます。取引相手がチャネルを拒否した場合、資金を回収できるため、安全に使用することができます。

トランザクションが確認されると、チャネルは稼働状態となります。最初の取引ペアは電子帳簿の現状を示しています。現在、ボブには3BTC、アリスには3BTCが支払われています。

アリスがボブに新たな支払いを希望する場合、ペアは最初のセットを置き換えるために2つのトランザクションを新しく作成します。方法は同様で、一方だけ署名します。アリスとボブは古いハッシュを放棄し、次のトランザクションのための新しいハッシュを交換します。


 例えば、アリスがボブに1BTCの支払いを希望する場合、2つの新しいトランザクションは、アリスに2BTC、ボブに4BTCをクレジットすることになります。そして、残高が更新されます。


両当事者は、最新のトランザクションに署名をしてブロードキャストすることで、ブロックチェーン上で“決済”をすることができます。しかし、両当事者がそうした場合でも、タイムロックが切れるまで待つ必要があり、もう一方の当事者はすぐに使用することができます。ボブがアリスのトランザクションに署名をしてブロードキャストした場合、アリスは、条件なしの出力を持つことになります。

両当事者は、チャネルの閉鎖に合意することができます(共同成約)。これは、あなたの資金をチェーンに戻す迅速な方法です。そして、一方の当事者が無応答になったり、協力を拒否した場合、他方の当事者はタイムロックを待つことで資金を回収することができます。



仮想通貨の購入を検討している場合、バイナンスでビットコインを購入しましょう。



ライトニングネットワークで不正行為を防止する方法

あなたは攻撃ベクトルを特定したとして、ボブは1BTCの残高を保持しているとします。過去のトランザクションのブロードキャストを阻止するにはどうすれば良いのでしょうか?ボブはすでにアリスからの署名入りのトランザクションを受け取っているため、ボブは署名を加えてブロードキャストをするべきでしょうか?
全残高を失う可能性があるという事実を抜きにして、公開を阻止できる方法はありません。 彼がそれを実行して、前述したマルチシグのアドレスへ、アリスに1枚の仮想通貨を支払い、5枚の仮想通貨を送るという古いトランザクションをブロードキャストしたとします。

アリスは即座に仮想通貨を受け取ることができます。一方ボブは、タイムロックが切れるまで待つ必要があるため、マルチシグアドレスを使用することはできません。アリスが同資金をすぐに使用する場合のもう1つの条件を覚えていますか?彼女は当時所有していなかった秘密が必要です。しかし、現在は秘密を所有しています。2回目のトランザクションが作成されると、ボブはその秘密をすぐに共有します。

ボブがタイムロックが切れるのを待っている間、アリスは資金を移動させることができます。この処罰に基づくメカニズムは、参加者が不正行為を行う可能性が低いことを意味します。なぜなら、相手が自身の仮想通貨にアクセスすることができるからです。


ペイメントルーティング

以前にも触れましたが、ライトニングネットワークのチャネルには接続可能です。そうでない場合、支払いにそれほど利便性はありません。今後数ヶ月間、毎日の修正を得るためにコーヒーショップに500ドルを預けますか?

そのような必要はありません。 アリスがボブとチャネルを開設し、ボブがすでにキャロルとのチャネルを開設している場合、ボブは両者間での支払いをルーティングすることができます。これは複数の“hops”をまたいで接続することができます。つまり、アリスはパスが存在する誰にでも支払いをすることができるということです。


このシナリオでは、アリスは複数のルートを経由してフランクに到達することができます。実際に、彼女はいつも1番簡単なものを選びます


ルーティングという役割のために、仲介者は少額の手数料を要求するかもしれません(義務ではない)。ライトニングネットワークはまだ新しいため、フリーマーケットは実現していません。多くのユーザーは、提供される流動性に基づく手数料に期待しています。

ベースチェーン上では、手数料はトランザクションがブロック内で占有するスペースのみに基づいており(送信される価値に問題ありません)、1ドルと1万ドルの支払いは同じコストです。対照的に、ライトニングネットワークにはブロックスペースというものは存在しません。

代わりに、ローカル残高とリモート残高という考え方があります。ローカル残高は、チャネルの相手に“プッシュ”できる金額であるのに対し、リモート残高は、取引相手があなたにプッシュできる金額です。
もう1つ例を挙げましょう。上記のパスの1つについて詳しく見てみましょう。Alice<>Carol<>Frank.


アリスからフランクへ0.3BTCを送金する前後のユーザー残高です。


アリス<>キャロルキャロル<>フランクは、各1BTCのキャパシティを所有しています。アリスのローカル残高は0.7BTCです。現在、ブロックチェーン上で決済した場合、彼女は0.7BTCを受け取り、キャロルはリモート残高(つまり0.3BTC)を受け取ることになります。

アリスが0.3BTCをフランクに送金する場合、彼女はキャロル側のチャネルに0.3BTCをプッシュします。するとキャロルは、フランクとのチャネルのローカル残高から0.3BTCをプッシュします。その結果、キャロルの残高は変わらず、アリスからの+0.3BTCとフランクへの-0.3BTCで差し引きゼロになるからです。

キャロルはフランクとの仲介人として価値を損失しているわけではありませんが、柔軟性が低下しています。現在、彼女はアリスとのチャンネルで0.6BTCを使用できるようになりましたが、フランクとのチャンネルでは0.1BTCしか使用できません。

アリスはキャロルにしか接続されておらず、フランクは広範なネットワークに接続されている状況を想像してみてください。キャロルは以前、フランク経由で合計0.4BTCを他ユーザーに送金することが可能でしたが、現在は、0.1BTCしか所有していないため、プッシュすることができません。

このシナリオでは、アリスは事実上、キャロルの流動性に侵食しています。何らかのインセンティブがなければ、キャロルは好ましい状態とはいえません。そこで、代わりに0.01BTCごとに10satoshisの手数料を送金しますと提案するかもしれません。このように、キャロルが“より強い”経路で犠牲になるほど、彼女は利益を得ることができます。

前述したように、事実上、手数料を請求する必要はありません。流動性の低下を気に留めない人もいるかもしれません。また、レシーバーに直接チャネルを開設する人もいます。


ライトニングネットワークの限界

ライトニングネットワークがビットコインのスケーラビリティ問題への解決策であることを証明できるのであれば、それは素晴らしいことですが、残念ながら、妨げに成り得る固有の欠点があります。


ユーザビリティ

ビットコインは初心者にとって直感的なシステムではありません。アドレスや手数料など、慣れるまでに混乱することがあります。しかし、ウォレットは複雑なものを抽象化して、既存の決済システムに類似したものをユーザーに提供することができます。例えば、第三者にスマホのウォレットをダウンロードしてもらい、仮想通貨を送金をしてもらうことで、すぐに使用できるようになります。

現在、ライニングネットワークでは不可能です。スマートフォンアプリに関しては、選択肢が限られています。一般的に、ライニングノードが完全に使用できるようになるには、ビットコインノードへの接続が必要です。

クライアントのセットアップ完了後、ユーザーは支払いを行う前にチャネルを開設する必要があります。これは時間のかかるプロセスであり、新規ユーザーがインバウンド、アウトバウンド容量のような概念を導入した場合、圧倒される可能性があります。

とはいえ、参入障壁を減らし、より合理的な体験をユーザーに提供するために、常に改善が行われています。


流動性

ライトニングネットワークに対する最大の批判は、取引能力が制限されていることです。チャネルにロックした資金以上を使用することはできません。リモート残高がチャネルのすべての資金を含んでいるため、資金をすべて使用した場合、チャネルを閉設する必要があります。あるいは、第三者が支払うまで待つことは可能ですが、それは理想的ではありません。

また、パスはチャネルの総容量によって制限される場合があります。先ほどのアリス<>キャロル<>フランク、の例を見てみましょう。アリスとキャロルの容量が5BTC、キャロル<>フランクの容量が1BTCの場合、アリスは1BTC以上を送信することはできません。これは、LNチャネルで送信できる資金を著しく制限することになり、その結果、使用者に悪影響を及ぼします。


集中型ハブ

前述の問題から、ネットワークが巨大な“ハブ”の作成を促進するのではないかという懸念があります。つまり、流動性の高い、大規模で重接続なエンティティなのです。重要な支払いは、これらのエンティティを経由する必要があります。

明らかに、理想的な状況ではありません。これらのエンティティがオフラインになれば、ピア間の関係が大きく崩れるため、システムが弱体化することになります。また、トランザクションが行われるポイントが限られているため、検閲のリスクも高くなります。


ライトニングネットワークの現状

2020年4月現在、ライトニングネットワークは順調に見えます。12,000以上のオンラインノード、3万以上のアクティブチャネル、920BTC強の容量を誇っています。


ライトニングネットワークノードのグローバル分布。ソース:explorer.acinq.co


Blockstreamのc-lightning、Lightning LabsのLightning Network Daemon、ACINQのEclairなどが人気のあるノード実装です。技術に詳しくないユーザーのために、多くの企業がプラグアンドプレイのノードを提供しています。これらの製品を使用するには、デバイスの電源を入れるだけです。


まとめ

ライトニングネットワークは、2018年のメインネット登場以来、多くの人がまだベータ版であると考えていたにもかかわらず、目覚ましい成長を遂げてきました。

現在、ライニングノードを操作するにはある程度の技術的な習熟が必要であるため、まだ克服すべきユーザビリティの障害はあります。しかし、開発が進むにつれ、参入障壁が徐々に低くなっていく可能性があります。

また、問題が解決された場合、ライトニングネットワークはビットコインエコシステムの不可欠な存在となり、スケーラビリティとトランザクション速度を大幅に向上する可能性があります。