皆さんこんにちは! このドキュメントは、Bitcoinのオフチェーン取引(ブロックチェーン外の高速な取引)を行え、必要な時はオンチェーン取引を頼って実行される、 Lightning Networkというレイヤ2プロトコルに関して説明しているドキュメントです。通称「Basis of Lightning Technology(BOLT)」といいます。
一部の要件はやや不確実です。私たちは動機と結果に基づく推論を強調してここに記そうとしました。 何か分かりにくいところや間違っているところがありましたら、ご連絡をいただき、改善にお役立てください。
このドキュメントはバージョン0です
- BOLT #1: Lightning Networkにおける基盤プロトコル
- BOLT #2: Channel管理のためのピアプロトコル
- BOLT #3: Bitcoinの取引とScript形式
- BOLT #4: Onionルーティングプロトコル(Torネットワーク関連)
- BOLT #5: オンチェーン取引の取り扱いについてのおすすめ
- BOLT #7: P2PノードとChannelの発見
- BOLT #8: 暗号化と認証済みトランスポート
- BOLT #9: 割り当て済み特徴フラグ
- BOLT #10: DNSブートストラップとアシストノードの場所
- BOLT #11: Lightning支払いにおける請求プロトコル
Lightning NetworkはChannelを用いたネットワークでBitcoinの高速な支払いを行うためのプロトコルです。
Lightning NetworkはChannelを確立することで機能します。 2人の参加者がLightning Networkの支払いChannelを生成し、 そこにBitcoin NetworkにロックされたBitcoinを含みます(例えば、0.1BTCをNetwork上にロックします)。 これらは双方の署名(Signature)によって支払い可能になります。
最初に、彼ら(2人)がお互いにBitcoin取引を発行し、 Lightning Network上で使用する全てのBitcoin(ここでは0.1BTCとする)を一つのパーティ(アドレス)に集約します。 これらは、後に異なった新しいBitcoin取引によって分けて署名することができます。 例えば、0.09BTCを一方のパーティに、もう一方のパーティに0.01BTCを送金することができます。 そして、以前のBitcoin取引を無効化します。
BOLT #2: Channel Establishmentを見ることで、Channel確立についてさらに詳しく知ることが出来ます。 また、BOLT #3: Funding Transaction Outputを見ることでChannelを作るにあたってのBitcoin取引形式について知ること出来ます。 更に、BOLT #5: オンチェーン取引の取り扱いについてのおすすめを見ることで参加者が拒否したり失敗したりした時の要件や、 Bitcoin取引を使うためのクロス署名について知ることができます。
Lightning NetworkのChannelは参加者2人の間での支払いのみ可能です。 しかし、Channel同士を接続することで、ネットワークに参加する全ての人との支払いを可能にするネットワークを形成できます。 この際に要求される技術が条件付き支払い(Conditional Payment)です。 例えば、「あなたが6時間以内にSecretを明かせば0.01BTCがもらえます」といった具合に。 この条件に乗った人(受信者といいます)がSecretを明かすと、Bitcoin取引の条件付き支払いが受信者あての支払いに変換されます。
参加者が条件付き支払いを追加するために使用するコマンドはBOLT #2: Adding an HTLCをご覧ください。 また、BOLT #3: Commitment Transactionでは完了した際のBitcoin取引のフォーマットについて記載しています。
上記のような条件付き支払いは安全に、そしてより短いタイムリミットで参加者に転送されなければなりません。 「あなたが5時間以内にSecretを明かせば0.01BTCがもらえます」のような具合に。 これにより、仲介者の信頼なしにChannelをネットワークにつなぐことができます。
BOLT #4: Packet Structure for how payment instructions are transported. BOLT #2: Forwarding HTLCsを見れば、支払いの転送の詳細を知ることができます。 また、支払い指示の転送方法・形式についてはBOLT #4: Packet Structureをご覧ください。
支払いを作成するには、参加者はどのChannelを使えば送信できるのか知っておく必要があります。 参加者は他の人にChannelとNodeの作成について尋ね、更新します。
BOLT #7: P2PノードとChannelの発見では、通信プロトコルに関する詳細を知ることができます。 また、BOLT #10: DNSブートストラップとアシストノードの場所で最初のネットワークブートストラップについて説明しています。
参加者はどのように支払いを行えばよいかを示す請求を受け取ります。
BOLT #11: Lightning支払いにおける請求プロトコルでは、支払者が後で支払いの成功を証明できるように、 支払いの宛先と目的を説明するプロトコルについて説明しています。
元の用語を出来る限りそのまま掲載しています。 基本的に説明文の頭に用語自体の日本語訳をつけています。
-
-
ユニーク(被ってはならない)なハッシュで、ブロックチェーンを識別するのに用います(一般的にGenesis Blockのハッシュを用います)。 これにより、Node は複数のブロックチェーン上で、Channel を作成・参照することができます。 Nodeは、未知の(別の)
chain_hash
を参照するメッセージを無視します。bitcoin-cli
とは違い、ハッシュは反転させずにそのまま使用します。Bitcoinのメインチェーンの場合、
chain_hash
は6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000
になります(hexでエンコード済み)。
-
-
- 相互に通貨を交換し合う2 Peer 間で開設される高速なオフチェーンの送金方法です。 資産を取引する際、Peerは署名を交換して更新済みの Commitment Transaction を作成します。
- Channelを終了するメソッド: Mutual Close(相互終了)、Revoked Transaction Close(取り消された取引での終了)、Unilateral Close(一方的な終了)
- 関係のある用語: Route
-
- 終了時取引。Mutual Close(相互終了) 時に生成される取引の一つです。 Closing Transactionは Commitment Transaction に似ていますが、保留中の支払いがありません。
- 関連用語: Commitment Transaction(言質取引)、Funding Transaction(供給取引)、Penalty Transaction(罰則取引)
-
- 言質取引のカウント(もしくはカウンター)。48ビットの値が増え続ける(減ることのない)カウンターで、互いの Commitment Transaction の数をカウントしています。 カウンターは、各 Peer 内の Channel に独立して存在し、0からカウントスタートします。
- この用語が説明に含まれる用語(内容): Commitment Transaction(言質取引)
- 関連用語: Commitment Transaction(言質取引)、Funding Transaction(供給取引)、Penalty Transaction(罰則取引)
-
- 言質撤回秘密鍵。すべての Commitment Transaction(言質取引) は全ての資産を他の Peer にすぐに送金するユニーク(被ってはならない)な言質撤回秘密鍵を持っています。 この秘密鍵を明らかにするということは、古い言質取引を無効化するということです。 この撤回をサポートするために、各言質取引で言質撤回公開鍵を参照します(取引の出力内のスクリプトに含まれます)。
- この用語が説明に含まれる用語(内容): Commitment Transaction(言質取引)
- 原案の用語: Per-commitment Secret(言質ごとのシークレット)
-
- 言質取引。Funding Transaction(供給取引) での資産を使用する取引です。 各 Peer はこの取引に対する他のPeerの署名を保持します。 これにより、各Peerは常に使用可能な言質取引を持つことになります。 新しい言質取引が交渉された後、古い言質取引は破棄されます。
- 他のパート: Commitment Number(言質取引カウント)、Commitment Revocation Private Key(言質撤回秘密鍵)、HTLC、Per-commitment Secret(言質ごとのシークレット)、outpoint
- 関連用語: Closing Transaction(終了時取引)、Funding Transaction(供給取引)、Penalty Transaction(罰則取引)
- 他のタイプ: Revoked Commitment Transaction(無効化済み言質取引)
-
- 終点ノード。Origin Node(起点ノード) からいくつかの Hop を経由して支払いされるパケットの最終受信者のことを指します。 また、チェーンの最後の Receiving Peer(受信ピア) でもあります。
- 関連カテゴリ: Node
- 関連用語: Origin Node(起点ノード)、Processing Node(処理ノード)
-
- 供給取引。channel 上の両方の Peer に支払う不可逆的なオンチェーン取引のことを指します。 これは双方の同意がある時のみ可能です。
- 関連用語: Closing Transaction(終了時取引)、Commitment Transaction(言質取引)、Penalty Transaction(罰則取引)
-
- ホップ。Node のことを指します。 一般的に、Origin Node(起点ノード) と Final Node(終点ノード) をまたぐ中間ノードを指します。
- 関連カテゴリ: Node
-
- 時間が経たないと使えないようにロックされた契約をハッシュしたもの。条件付き支払いは2 Peer 間で行われます。 この条件付き支払いは、受信者が署名と Payment Preimage(支払いプレイメージ) を提示することで支払いを行うことができます。 そうでない場合、支払者は一定時間置いた後にそれを使うことで契約をキャンセルすることができます。 これらは、Commitment Transaction(言質取引)の出力として実装されます。
- この用語が説明に含まれる用語(内容): Commitment Transaction(言質取引)
- 他のパート: Payment Hash(支払いハッシュ)、Payment Preimage(支払いプレイメージ)
-
請求。Lightning Network上での資産リクエスト。 支払い方法や、支払い金額、有効期限、またはその他の情報などが含まれることがあります。 これはLightning Network上での支払い方法を表すもので、Bitcoinスタイルのアドレスではありません。
-
- 奇数なら大丈夫。一部の数値フィールドに適用されるルールで、各機能のオプションや強制的な機能のサポートを示します。 偶数は、両方のエンドポイントが問題の機能をサポートしなければならないことを示し、 奇数は、もう一方のエンドポイントがその機能を無視してもよいことを示します。
-
- ミリサトシ(Bitcoinの最小単位サトシの1000分の1)。フィールド名として使われます。
-
- 相互終了。Channel を共同して終了することを指します。 Funding Transaction(供給取引) の出力を各 Peer への無条件支払いにしてブロードキャストすることで達成されます (1つの出力が小さすぎて含まれない場合を除く)。
- 関連用語: Revoked Transaction Close(取り消された取引での終了)、Unilateral Close(一方的な終了)
-
- ノード。コンピュータやその他のデバイスで、Lightning Networkを構成するものです。
- 関連用語: Peer
- 他のタイプ: Final Node(終点ノード)、Hop、Origin Node(起点ノード)、Processing Node(処理ノード)、Receiving Node(受信ノード), Sending Node(送信ノード)
-
- 起点ノード。この Node は支払いされるパケットの起点で、いくつかの Hop を使って Final Node(終点ノード) に届けられます。 また、チェーンの最初の sending peer(送信ピア) でもあります。
- 関連カテゴリ: Node
- 関連用語: Final Node(終点ノード)、Processing Node(処理ノード)
-
- アウトポイント。未使用の取引の出力を一意に識別する取引ハッシュと出力インデックスのセットです。 新しいトランザクションを作成する場合、これを入力とする必要があります。
- 関連用語: Funding Transaction(供給取引)、Commitment Transaction(言質取引)
-
- 支払いハッシュ。HTLC には、Payment Preimage(支払いプレイメージ) のハッシュである支払いハッシュが含まれています。
- この用語が説明に含まれる用語(内容): HTLC
- 原案の用語: Payment Preimage(支払いプレイメージ)
-
- 支払いプレイメージ。支払いが受信されたことを証明するもので、この秘密を知っている唯一の人である最後の受信者によって保持されます。 最後の受信者は、資金を解放するためにプレイメージを解放します。 この支払いプレイメージがハッシュされたものを Payment Hash(支払いハッシュ) といい、HTLC に含まれます。
- この用語が説明に含まれる用語(内容): HTLC
- この用語が由来の用語: Payment Hash(支払いハッシュ)
-
- 罰則取引。Commitment Revocation Private Key(言質撤回秘密鍵) を使用して、 Revoked Commitment Transaction(無効化済み言質取引) のすべての出力を使用する取引です。 Peer は、他のPeerが Revoked Commitment Transaction(無効化済み言質取引) をブロードキャストすることによって「チート」しようとした場合にこれを使用します。
- 関連用語: Closing Transaction(終了時取引)、Commitment Transaction(言質取引)、Funding Transaction(供給取引)
-
- 言質ごとのシークレット。全ての Commitment Transaction(言質取引) は言質ごとのシークレットからの鍵を持ちます。 これは、以前のすべてのコミットメントの一連の言質ごとのシークレットをコンパクトに保存できるように生成されます。
- この用語が説明に含まれる用語(内容): Commitment Transaction(言質取引)
- この用語が由来の用語: Commitment Revocation Private Key(言質撤回秘密鍵)
-
- 処理ノード。Origin Node(起点ノード) が Final Node(終点ノード) に向けて送った支払いパケットを処理する Node のことを指します。 これは、まずメッセージを受信する Receiving Peer(受信ピア) として機能し、その後パケットを送信する Sending Peer(送信ピア) として機能します。
- 関連カテゴリ: Node
- 関連用語: Final Node(終点ノード)、Origin Node(起点ノード)
-
- 受信ノード。メッセージを受信する Node です。
- 関連カテゴリ: Node
- 関連用語: Sending Node(送信ノード)
-
- 受信ピア。直接接続された Peer からメッセージを受信している Node です。
- 関連カテゴリ: Peer
- 関連用語: Sending Peer(送信ピア
-
- 無効化済み言質取引。新しい Commitment Transaction(言質取引) が成立したことによって無効化された古い言質取引のことを指します。
- 関連カテゴリ: Commitment Transaction(言質取引)
-
- 無効化済み取引の終了。無効な Channel を終了することを指します。 これは、Revoked Commitment Transaction(無効化済み言質取引) をブロードキャストすることで達成されます。 他の Peer は Commitment Revocation Private Key(言質撤回秘密鍵) を知っているため、Penalty Transaction(罰則取引)を作成できます。
- 関連用語: Mutual Close(相互終了)、Unilateral Close(一方的な終了)
-
- ルート。1つ以上の Hop を介して Origin Node(起点ノード) から Final Node(終点ノード) への支払いを可能にするLightning Network上の道のことを指します。
- 関連用語: Channel
-
- 送信ノード。メッセージを送信する Node です。
- 関連カテゴリ: Node
- 関連用語: Receiving Node(受信ノード)
-
- 送信ピア。直接接続された Peer へメッセージを送信している Node です。
- 関連カテゴリ: Peer
- 関連用語: Receiving Peer(受信ピア).
-
- 一方的な終了。非協力的に Channel を終了することを指します。 これは Commitment Transaction(言質取引) をブロードキャストすることで達成されます。 この取引は Closing Transaction(終了時取引) よりサイズが大きい(要するに効率が悪い)です。 更に、言質をブロードキャストしたピアは以前に交渉した期間中、自身の資金を操作することができません。
- 関連用語: Mutual Close(相互終了)、Revoked Transaction Close(取り消された取引での終了)
Why this network could be democratic...
Numismatic...
Cryptographic!
Why it could be released Lightning!
(Release Lightning!)
We'll have some timelocked contracts with hashed pubkeys, oh yeah.
(Keep talking, whoa keep talkin')
We'll segregate the witness for trustless starts, oh yeah.
(I'll get the money, I've got to get the money)
With dynamic onion routes, they'll be shakin' in their boots;
You know that's just the truth, we'll be scaling through the roof.
Release Lightning!
(Go, go, go, go; go, go, go, go, go, go)
[Chorus:]
Oh released Lightning, it's better than a debit card..
(Release Lightning, go release Lightning!)
With released Lightning, micropayments just ain't hard...
(Release Lightning, go release Lightning!)
Then kaboom: we'll hit the moon -- release Lightning!
(Go, go, go, go; go, go, go, go, go, go)
We'll have QR codes, and smartphone apps, oh yeah.
(Ooo ooo ooo ooo ooo ooo ooo)
P2P messaging, and passive incomes, oh yeah.
(Ooo ooo ooo ooo ooo ooo ooo)
Outsourced closure watch, gives me feelings in my crotch.
You'll know it's not a brag when the repo gets a tag:
Released Lightning.
[Chorus]
[Instrumental, ~1m10s]
[Chorus]
(Lightning! Lightning! Lightning! Lightning!
Lightning! Lightning! Lightning! Lightning!)
C'mon guys, let's get to work!
-- Anthony Towns aj@erisian.com.au
[ FIXME: Insert Author List ]
この仕様書はCreative Commons Attribution 4.0 International Licenseでライセンスされています。