これらの Basis of Lightning Technology (BOLT) 文書は、相互協力によるオフチェーンビットコイン転送のレイヤー2プロトコルを説明し、必要に応じてオンチェーントランザクションを適用して施行する。
Lightning はチャネルのネットワークを用いて Bitcoin で早期支払いをするプロトコルである。
Lightning は channels を確立することで機能する。2つのノードがいくつかの量の Bitcoin(例:0.1 bitcoin)を含んだ Lightning ペイメントチャネルを作成する。ペイメントチャネルは二者の署名だけで Bitcoin ネットワーク上でロックアップされる。最初は、二者は全てのコイン(0.1 bitcoin)を一方の当事者に送り返すトランザクションを持っている。彼らは後にこれらの資産を分割する新しいトランザクションに署名することができる。
BOLT #2, #3, #5 参照。
Lightning チャネルは二者間の支払いのみを可能にするが、チャネルはネットワーク内の全てのメンバー間で支払いを可能にするネットワークを形成するために相互に接続することができる。これはチャネルに追加することができる条件付き支払い(例:6時間以内に「秘密」を明かすと、0.01 bitcoin を獲得できる)の技術が必要である。一度受け取りノードが「秘密」を提供すると、Bitcoin トランザクションは1つ欠落した条件付きトランザクションに置き換えられ、受け取りノードの出力に資産が追加される。
BOLT #2, #3 参照。
そのような条件付き支払いは時間制限の短い他の参加者に安全に転送することができる。(例:5時間以内に「秘密」を明らかにしたら 0.01 bitcoin を獲得できる)これは、仲介者を信用することなくネットワーク内にチャネルを連結することができる。
BOLT #2, #4 参照。
支払いをするために、参加者ノードは送ることができるチャネルについて知る必要がある。そのため、参加者は互いにチャネルやノード生成、更新について教える必要がある。
BOLT #7, #10 参照。
参加者は何の支払いをしたかを示す請求書を受け取る。
BOLT #11 参照。
Announcement:
chain_hash
:
目的のブロックチェーンを一意に特定するハッシュ値(通常はジェネシスハッシュ)。これはノードが様々なブロックチェーンでの参照チャネルを作成することを可能にする。ノードは、それらが認識していない chain_hash
を参照するメッセージを無視する。bitcoin-cli
とは異なり、そのハッシュ値は返されず、直接使われる。
Bitcoin のメインチェーンの場合、chain_hash
値は16進数にエンコードされる必要がある:6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000
Channel:
Closing transaction:
Commitment number:
Commitment revocation private key:
Commitment transaction:
Final node:
Funding transaction:
Hop:
HTLC: Hashed Time Locked Contract.
Invoice: A request for funds on the Lightning Network, possibly
It's ok to be odd:
MSAT:
Mutual close:
Node:
Origin node:
Outpoint:
Payment hash:
Payment preimage:
Peers:
Penalty transaction:
Per-commitment secret:
Processing node:
Receiving node:
Receiving peer:
Revoked commitment transaction:
Revoked transaction close:
Route:
Sending node:
Sending peer:
Unilateral close: