ライトニングネットワーク

ライトニングネットワーク（英: Lightning Network）は、支払いチャネルネットワーク上でトラストレスな支払いを可能にするオフ-ブロックチェーンプロトコルの一種である。

ライトニングネットワークは参加ノード間の高速なトランザクション処理を可能にし、ビットコインのスケーラビリティ問題の解決策と謳われている。またオフチェーントランザクションによる手数料の削減によりマイクロペイメントを可能にする。ライトニングネットワークの実装はアトミックスワップを簡素化する。

ライトニングネットワークは資金の管理券を委譲することのない双方向ペイメントチャネルを用いた2者間支払いを基礎とする。まずブロックチェーン上で開かれたペイメントチャネルにファンディング（入金）トランザクションを加える。その後、チャネルにファンディングした額の暫定配分額を更新するライトニングトランザクションをオフチェーンで（ブロックチェーンに送信することなく）任意の回数行う。チャネルを閉じる際に、その時点の配分額を最終版として実際の配分を行うトランザクションをブロックチェーンに送信する。

2者間ペイメントチャネルを繋いだネットワーク上で直結のペイメントチャネルが開かれていない参加者間の支払いを可能にするプロトコルがライトニングネットワークである。

## 歴史
Joseph Poon と Thaddeus Dryja はライトニングネットワークのホワイトペーパーを2015年に発表した。より詳細な仕様が複数の団体によって開発された。非営利なものとしては、MIT Digital Currency Initiativeによる実装、Blockstream による実装、Lightning Labs による実装、ACINQによる実装がある。

2017年11月に、互換性のある一連の試験用トランザクションがBitcoin Core 上で作成された。

2018年1月に、Blockstream はウェブの小売業者を対象とした決済処理システムを公開した。Blockstream はこの際、ライトニングネットワークのノードは2018年1月18日現在mainnet で60あり、「試験運用中」であることを考慮すべきと付した。

2018年5月15日、Lightning Labs の CEO Elizabeth Stark は、lnd(ライトニングネットワークの実装の一つ) の初版であるバージョン 0.4-beta(開発者向け) をリリースした。これはビットコインとライトコインのmainnet において試験する目的のためのものであった。

2018年3月、モバイル決済の起業家であるJack Dorsey がライトニングネットワークの構想を支持した。

2018年4月から2018年8月まで、ビットコインのライトニングネットワークは月に約15%の成長を遂げた。 ノード数は1,500から3,000に増加し、チャネル数は4,000から11,000に増加した。

2018年4月、eclair wallet はGoogle Play から公開後数日で削除された。アプリの開発者が署名用の秘密鍵を紛失し、致命的なバグを更新できなくなったからである。

2018年5月、世界初のビットコイン／金の交換所であるVaultoro.com はmainnet でのライトニングネットワークでの入金を承認した。

2018年7月1日、決済処理会社 CoinGate はライトニングネットワーク支払いを承認するためのサービスをマーチャント向けにリリースした。

### 2018年のDDoS 攻撃
2018年3月20日、ライトニングネットワークノードはDDoS 攻撃に晒された。攻撃はおよそ200のオフラインのノードに対して送られ、これによりノード数がおよそ1,050から870まで減少した。できるだけ多くのノードに対して新たな接続を妨害するためにエクスプロイトが用いられた。1ヶ月前の2月、Bitcoin Core の開発者である Peter Todd はライトニングのプロトコルは「現在の実装では、DoS攻撃に対して脆弱性があることの証明」をしたと述べていた。これはブロックチェーンはもちろん、P2Pプロジェクトにも危険をもたらすとある暗号学者は述べた。

## 設計思想

ペイメントチャネルは、その参加者がブロックチェーンにトランザクションを公開することなく相互に資金を送り合うことを可能にする。これは協調性に欠ける参加者を罰することにより実現される。チャネルを開いたとき、参加者はファンディング(入金)をしなくてはならない(ブロックチェーン**上の**ファンディングトランザクション)。CheckSequenceVerify や CheckLockTimeVerify などのタイムベースの拡張スクリプトがこの懲罰を可能としている。ライトニングペーパーより

のCheckSequenceVerify(CSV) が、CSVとライトニングを用いたハッシュタイムロックコントラクトに詳しい。

### コミットメントトランザクション
アリスとボブがペイメントチャネルを持っているのなら、彼らの双方が「最新の」コミットメントトランザクションも持っている。コミットメントトランザクションはアリス⇔ボブ間で正しく割り当てられたファンティングトランザクションに基づいて資金を分配する。例として、例えばアリスが1.0 mBTC(0.001BTC、もしくは100000 satoshi に等しい)、ボブが1.0 mBTC をそれぞれチャネルに保有している場合、コミットメントトランザクションはチャネルの総資金(この場合 1.0 + 1.0 = 2.0 mBTC)をそのように分配する(アリスに 1.0 mBTC、ボブに 1.0 mBTC)

コミットメントトランザクションでは、単体のトランザクションに複数のユーザが参加することができる（従ってこれは単一の実態として振る舞う）。ネットワークの混雑はマイナー達によって引き起こされるため、このネットワークはマイナー達は誠実で組織的な51%攻撃を行わないという仮定に依拠している。

コミットメントトランザクションはファンティングトランザクションを消費するため、当事者双方の署名を必要とする。

実際には、コミットメントトランザクションは非対称的なトランザクションの組である。アリスのコミットメントトランザクションは2つのアウトプットを持つ。1つはボブに即座に支払われる。もう1つはタイムロックされており、これはアリスが取り消して自分に払い戻させること（以下、単に取り消しという）ができる。取り消しに必要な鍵（以下、取消鍵）をボブが知っていれば、ボブは取り消しを無効化できる。ボブのコミットメントトランザクションは上記を逆に考えるとよい。つまり、1つのアウトプットはアリスに即座に支払われ、もう1つはタイムロックされており、ボブによって取り消し可能であり、アリスが取消鍵を知っていればボブの取り戻しを無効化できる。

まず、アリスはコミットメントトランザクション、Bobはコミットメントトランザクションを持つ。 A_1の取消鍵R_{A_1}は、アリスは知っているがボブは知らない。B_1の取消鍵R_{B_1}はその逆で、ボブだけが知っている。ここで、アリスがボブに 0.25&#x20;mBTC を支払うとする（支払いの直前に双方は 1&#x20;mBTC を保有していると仮定)

# アリスはボブに向けたトランザクション B_2を作成する。これは 0.75&nbsp;mBTC をアリスに割り当て、 1.25&nbsp;mBTC をボブに割り当てる.
# アリスは B_2をボブに送信する。
# ボブは B_2を受け取り、それを保持する。
# ボブはアリスに向けたトランザクション A_2 を作成する。これは 0.75&nbsp;mBTC をアリスに、1.25&nbsp;mBTC をボブに割り当てる。
# ボブは A_2をアリスに送信する。
# アリスは A_2を受け取り、それを保持する。
# アリスは R_{A_1}を提供し、A_1を無効化する。つまり、アリスはA_1を削除できる。
# ボブは R_{B_1} を提供し、B_1を無効化する。つまり、ボブはB_1を削除できる。

### 制限
ライトニングネットワークはスマートコントラクトによって接続された2つのノード間の双方向のペイメントチャネルとして作られている。片方の当事者がチャネルを停止したら、チャネルはクローズされブロックチェーン上で精算される。

ライトニングネットワークはその性質上、すべての利用者にブロックチェーンが常に正しいか監視することを要求する。このため外部の「監視塔」のノードに信頼を委託するということが起こりうる。

### ルーティング（経路構築）
ホワイトペーパーの原文では、ルーティングは「結局、最適化されると、コルレスバンクのネットワークか、あるいはTier-1 ISPsと酷似したものとなる」のではないかと述べている。

## 実装
商用の様々なライトニングネットワークの仕様書はGitHubにあり、最大のコントリビューターはBlockstream のRusty Russell である。

「LIT」と呼ばれる非商用のライトニングネットワークの実装は MIT-DCI GitHub にある。MIT-DCI はこの版のライトニングネットワークの最大のコントリビューターである。 

lnd の公式のアルファリリース は2017年1月10日に作られた。 リリース候補(RC1)のライトニングプロトコル仕様は2017年12月6日にリリースされた。

ライトニングネットワークを想定通りに動作させるためには、ビットコインのSegregated Witness(SegWit)のようなトランザクション展性の修正が必要となる。

## 参考文献

## 関連項目
* 仮想通貨

## 外部リンク
*Lightning Network RFC
****BOLT** (Basis of Lightning Technology) のRFC 
* dci.mit.edu/lightning-network/
* dev.lightning.community
*Spotlight - (lightning network で記事の購読や投稿ができるサービス)
*lists.linuxfoundation.org/pipermail/lightning-dev/ - Linux Foundation のサーバ