ようこそ、友よ!これらの Basis of Lightning Technology (BOLT) ドキュメントは、オフチェーンでのビットコイン転送のためのレイヤー2プロトコルを説明しています。必要に応じて、オンチェーンのトランザクションに依存して強制力を持たせます。
いくつかの要件は微妙です。ここで見られる結果の背後にある動機や理由を強調しようと努めました。私たちが不十分であることは承知しています。もし混乱したり間違っている部分を見つけたら、ぜひご連絡いただき、改善にご協力ください。
これはバージョン 0 です。
- BOLT #1: 基本プロトコル
- BOLT #2: チャネル管理のためのピアプロトコル
- BOLT #3: ビットコイントランザクションとスクリプトフォーマット
- BOLT #4: オニオンルーティングプロトコル
- BOLT #5: オンチェーントランザクション処理の推奨事項
- BOLT #7: P2Pノードとチャネルの発見
- BOLT #8: 暗号化および認証されたトランスポート
- BOLT #9: 割り当てられた機能フラグ
- BOLT #10: DNSブートストラップと支援されたノードの位置特定
- BOLT #11: ライトニングペイメントのための請求書プロトコル
ライトニングは、ビットコインを使用して高速な支払いを行うためのプロトコルであり、チャネルのネットワークを利用します。
ライトニングは チャネル を確立することで機能します。2人の参加者が、ビットコインネットワーク上でロックされた一定量のビットコイン(例:0.1ビットコイン)を含むライトニングペイメントチャネルを作成します。これは両者の署名があって初めて使用可能です。
最初に、彼らはすべてのビットコイン(例:0.1ビットコイン)を一方の当事者に戻すビットコイントランザクションをそれぞれ保持します。後でこれらの資金を異なる割合で分割する新しいビットコイントランザクションに署名し、以前のビットコイントランザクションを無効にして使用されないようにすることができます。
チャネルの確立については BOLT #2: Channel Establishment を、チャネルを作成するビットコイントランザクションのフォーマットについては BOLT #3: Funding Transaction Output を参照してください。参加者が意見を異にしたり失敗した場合に、クロスサインされたビットコイントランザクションを使用する必要がある場合の要件については BOLT #5: Recommendations for On-chain Transaction Handling を参照してください。
Lightning チャネルは 2 人の参加者間での支払いのみを許可しますが、チャネルを接続してネットワークを形成することで、ネットワーク内のすべてのメンバー間での支払いが可能になります。これには条件付き支払いの技術が必要です。例えば、「6 時間以内に秘密を明かせば 0.01 ビットコインを受け取ることができる」といった条件をチャネルに追加できます。受取人が秘密を提示すると、そのビットコイン取引は条件付き支払いを欠いたものに置き換えられ、受取人の出力に資金が追加されます。
参加者が条件付き支払いを追加するために使用するコマンドについては BOLT #2: Adding an HTLC を、ビットコイン取引の完全な形式については BOLT #3: Commitment Transaction を参照してください。
このような条件付き支払いは、より短い時間制限で他の参加者に安全に転送できます。例えば、「5 時間以内に秘密を明かせば 0.01 ビットコインを受け取ることができる」といった具合です。これにより、仲介者を信頼することなく、チャネルをネットワークに連鎖させることができます。
支払いの転送に関する詳細は BOLT #2: Forwarding HTLCs を、支払い指示がどのように輸送されるかについては BOLT #4: Packet Structure を参照してください。
支払いを行うには、参加者がどのチャネルを通じて送信できるかを知る必要があります。参加者はチャネルやノードの作成、および更新について互いに知らせます。
通信プロトコルの詳細については BOLT #7: P2P Node and Channel Discovery を、初期ネットワークブートストラップについては BOLT #10: DNS Bootstrap and Assisted Node Location を参照してください。
参加者は、どの支払いを行うべきかを示す請求書を受け取ります。
支払いの宛先と目的を記述するプロトコルについては、後で支払いの成功を証明できるようにするために BOLT #11: Invoice Protocol for Lightning Payments を参照してください。
-
-
対象となるブロックチェーンを一意に識別するハッシュ(通常はジェネシスハッシュ)です。これにより、ノードが複数のブロックチェーン上でチャネルを作成し、参照することができます。ノードは、自分が知らない
chain_hash
を参照するメッセージを無視する必要があります。bitcoin-cli
とは異なり、ハッシュは逆転されずに直接使用されます。メインチェーンのビットコインブロックチェーンの場合、
chain_hash
の値は次のようにする必要があります(16進数でエンコード):6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000
。
-
-
- 2つのピア間での迅速なオフチェーンの相互交換方法です。資金を取引するために、ピアは署名を交換して更新されたコミットメントトランザクションを作成します。
- 終了方法を参照: 相互クローズ, 取り消されたトランザクションクローズ, 一方的クローズ
- 関連項目を参照: ルート
-
- 相互クローズの一部として生成されるトランザクションです。クローズトランザクションは_コミットメントトランザクション_に似ていますが、保留中の支払いはありません。
- 関連項目を参照: コミットメントトランザクション, 資金調達トランザクション, ペナルティトランザクション
-
- 各コミットメントトランザクションのための48ビットのインクリメントカウンターです。カウンターはチャネル内の各ピアに対して独立しており、0から始まります。
- コンテナを参照: コミットメントトランザクション
- 関連項目を参照: クローズトランザクション, 資金調達トランザクション, ペナルティトランザクション
-
- 各コミットメントトランザクションには、他のピアがすべての出力を即座に使用できるようにする一意のコミットメント取り消し秘密鍵の値があります。この鍵を公開することが、古いコミットメントトランザクションを取り消す方法です。取り消しをサポートするために、コミットメントトランザクションの各出力はコミットメント取り消し公開鍵を参照します。
- コンテナを参照: コミットメントトランザクション
- 発信元を参照: 各コミットメントシークレット
-
- 資金トランザクション を消費するトランザクションです。各 ピア はこのトランザクションのために相手ピアの署名を保持しているため、常に消費可能なコミットメントトランザクションを持っています。新しいコミットメントトランザクションが交渉されると、古いものは 無効化 されます。
- 関連部分: コミットメント番号, コミットメント無効化秘密鍵, HTLC, 各コミットメントの秘密, アウトポイント
- 関連項目: クローズトランザクション, 資金トランザクション, ペナルティトランザクション
- 関連タイプ: 無効化されたコミットメントトランザクション
-
- これはチャネルの強制クローズです。非常に初期の段階(オープン前)では、チャネルの存在を忘れる以外の行動を必要としないかもしれません。通常は、最新のコミットメントトランザクションに署名してブロードキャストする必要がありますが、相互クローズの場合は、相互クローズトランザクションに署名してブロードキャストすることでも行えます。詳細は BOLT #5 を参照してください。
-
- これはピアとの通信をクローズすることを意味します(例えば、TCPソケットをクローズする)。これはピアとのチャネルをクローズすることを意味しませんが、チャネルとの接続に対する未コミット状態を破棄する原因となります。詳細は BOLT #2 を参照してください。
-
- チャネル上の両方の ピア に支払う、不可逆のオンチェーントランザクションです。相互の同意によってのみ消費可能です。
- 関連項目: クローズトランザクション, コミットメントトランザクション, ペナルティトランザクション
-
- 2つの ピア 間の条件付き支払いです。受取人はその署名と 支払いプレイメージ を提示することで支払いを受け取ることができます。そうでなければ、支払人は指定された時間後に契約をキャンセルして支払いを取り消すことができます。これらは コミットメントトランザクション の出力として実装されます。
- コンテナ参照: コミットメントトランザクション
- パーツ参照: 支払いハッシュ, 支払いプレイメージ
-
- 一部の数値フィールドに適用されるルールで、機能のオプションまたは必須サポートを示します。偶数は、両方のエンドポイントが該当する機能をサポートしなければならないことを示し、奇数は他のエンドポイントがその機能を無視してもよいことを示します。
-
- ミリサトシで、フィールド名としてよく使用されます。
-
- チャネル の協力的なクローズで、各 ピア への出力を持つ 資金トランザクション の無条件な支出をブロードキャストすることによって達成されます(ただし、1つの出力が小さすぎて含まれない場合を除く)。
- 関連参照: 取り消されたトランザクションクローズ, 一方的クローズ
-
- 未使用のトランザクション出力を一意に識別するトランザクションハッシュと出力インデックスです。新しいトランザクションを作成するために、入力として必要です。
- 関連参照: 資金調達トランザクション, コミットメントトランザクション
-
- HTLC はペイメントハッシュを含みます。これは ペイメントプリイメージ のハッシュです。
- コンテナ参照: HTLC
- オリジネータ参照: ペイメントプリイメージ
-
- 取り消されたコミットメントトランザクション のすべての出力を、コミットメント取り消し秘密鍵 を使用して消費するトランザクションです。ピア は、他のピアが 取り消されたコミットメントトランザクション を放送して「不正行為」を試みた場合にこれを使用します。
- 関連参照: クローズトランザクション, コミットメントトランザクション, 資金調達トランザクション
-
- 各* コミットメントトランザクション *は、コミットメントシークレットから鍵を導出します。このシークレットは、すべての以前のコミットメントのための一連のコミットメントシークレットがコンパクトに保存できるように生成されます。
- コンテナを参照: コミットメントトランザクション
- 導出を参照: コミットメント取消秘密鍵
-
- 新しいコミットメントトランザクションが交渉されたために取消された古い* コミットメントトランザクション *です。
- カテゴリを参照: コミットメントトランザクション
-
-
- チャネル の無効なクローズで、取消されたコミットメントトランザクションをブロードキャストすることによって達成されます。もう一方のピアはコミットメント取消秘密鍵を知っているため、 ペナルティトランザクション *を作成できます。
- 関連を参照: 相互クローズ, 一方的クローズ
-
-
- チャネル の非協力的なクローズで、コミットメントトランザクション をブロードキャストすることで達成されます。このトランザクションは クローズトランザクション よりも大きく(つまり効率が悪く)、コミットメントをブロードキャストした ピア は、事前に交渉された期間、自分の出力にアクセスできません。
- 関連参照: 相互クローズ, 取り消されたトランザクションクローズ
なぜこのネットワークは民主的になり得るのか...
貨幣学的...
暗号学的!
なぜそれが Lightning としてリリースされるのか!
(Lightning をリリースせよ!)
タイムロックされた契約とハッシュ化された公開鍵を持つだろう、そうだ。
(話し続けて、そうだ話し続けて)
信頼のないスタートのために証人を分離するだろう、そうだ。
(お金を手に入れる、絶対にお金を手に入れる)
動的なオニオンルートで、彼らはブーツを震わせるだろう;
それが真実だと知っている、屋根を突き抜けてスケーリングするだろう。
Lightning をリリースせよ!
(行け、行け、行け、行け;行け、行け、行け、行け、行け、行け)
[コーラス:]
ああリリースされた Lightning、それはデビットカードよりも優れている...
(Lightning をリリースせよ、Lightning をリリースせよ!)
リリースされた Lightning で、マイクロペイメントは簡単だ...
(Lightning をリリースせよ、Lightning をリリースせよ!)
そしてドカン:月に到達する -- Lightning をリリースせよ!
(行け、行け、行け、行け;行け、行け、行け、行け、行け、行け)
QRコードとスマートフォンアプリを持つだろう、そうだ。
(オーオーオーオーオーオーオー)
P2Pメッセージングと受動的収入を持つだろう、そうだ。
(オーオーオーオーオーオーオー)
アウトソースされたクローズウォッチが、私の股間に感覚を与える。
リポジトリにタグが付くとき、それが自慢ではないとわかるだろう:
リリースされた Lightning。
[コーラス]
[インストゥルメンタル, ~1m10s]
[コーラス]
(Lightning! Lightning! Lightning! Lightning!
Lightning! Lightning! Lightning! Lightning!)
さあ、みんな、仕事に取りかかろう!
-- Anthony Towns [email protected]
[ FIXME: 著者リストを挿入 ]
この作品は Creative Commons Attribution 4.0 International License の下でライセンスされています。