Lightning Networkの基本 (1)

uenohiro4
Nayuta エンジニアブログ
5 min readOct 4, 2022

はじめに

Lightning Networkの基本的な技術内容を数回にわたって紹介します。

今回は仕様ドキュメントと Lightning Network での転送の概要を説明します。

仕様ドキュメント

Lightning Networkの仕様は Basis of Lightning Technology、略して”BOLT” と呼ばれていて GitHub で公開されています。

以前は https://github.com/lightningnetwork/lightning-rfc というリンクでしたが、いろいろあって現在は https://github.com/lightning/bolts になっています。

2022年9月23日現在の一覧

BOLT #6は私の記憶によると LNノードやチャネルの情報を掲示板や IRC で通知する仕様が記載されていたと思います。BOLT #7 によって不要になったため削除されました。

Lightning Network 転送の概要

まず、Lightning NetworkノードというP2Pアプリを起動します(以下、LNノード)。LNノード同士は noise プロトコルという方式で接続できます

接続したLNノード間で通信を行い、どちらかのLNノードが Bitcoin トランザクションを展開してチャネルというものを作ります。送受金はチャネルの作成後に行うことができます。

送受金は相手を信用せずに行えるよう、HTLC(Hashed Time Lock Contract)というしくみを使っています。Alice から Bob に送金すると以下のようになります。

  1. 受け取る方の Bob が請求書を作ります。請求書データにはいろいろと情報が含まれていて、「送金先LNノードのID」「金額」「Payment Hash」が主なものです。Payment Hash は請求書の発行元が作成する PreImage という 32バイトの数字の SHA256 ハッシュ値です。

2.
Bob は作成した請求書を Alice に渡します。渡し方は Lightning Network の仕様に載っていません。請求書は文字列で表せるので、メールなどで送ったり、QRコードにしてカメラで撮影してもらったりなどさまざまです。

3.
Alice は取得した請求書を使って送金を開始します。Alice は Bob に HTLC を追加する要求を送信します。Bob はそれを受け取って検証して問題が無ければ Alice 用と Bob 用 の HTLC を追加した Bitcoinトランザクションをそれぞれ作ります。

4.
HTLC の追加が終わったら、Bob から HTLC を完了させる要求を PreImage を添えて送信します。 Alice はそれを受け取って検証して問題が無いのであれば Alice 用と Bob 用の HTLC を解消した Bitcoin トランザクションをそれぞれ作ります。

これで 1回の送受金が完了します。
また Lightning Network は中継するノードを使って直接チャネルを作っていない相手と送受金できます。これが最大の特徴でしょう。

おわりに

この記事では Lightning Network の仕様ドキュメントとLightning Network転送の概要を説明しました。

次記事

Nayuta株式会社

--

--