Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
マスタリング・ライトニングネットワークの歩き方
Search
shigeyuki azuchi
February 06, 2023
Technology
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
マスタリング・ライトニングネットワークの歩き方
ビットコインとか勉強会#73のスライドです。
https://www.youtube.com/watch?v=eVM-wSv6ZcI
shigeyuki azuchi
February 06, 2023
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
SLH-DSA (SPHINCS+)
azuchi
0
25
Hyper Tree
azuchi
0
23
FORS
azuchi
0
38
クラスターmempool
azuchi
0
49
W-OTS+
azuchi
0
55
Shorのアルゴリズム
azuchi
0
73
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
60
Fiat-Shamir変換と注意点
azuchi
0
270
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
75
Other Decks in Technology
See All in Technology
cdkd (CDK Direct)
gotok365
3
230
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
150
Software Engineering in an AI-Driven World
erikjhordan_rey
0
120
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
180
eBPF 簡介 2026 版
shunghsiyu
0
180
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.2k
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
720
AIコーディングはじめました
miso
0
150
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
810
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
200
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
3
190
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
0
240
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.7k
The SEO Collaboration Effect
kristinabergwall1
1
620
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
320
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
730
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
900
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
670
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
70
68k
Being A Developer After 40
akosma
PRO
92
590k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Transcript
マスタリング・ライトニングネットワークの歩き方 2023.01.31 ビットコインとか勉強会 #73
自己紹介 • 安土 茂亨(Shigeyuki Azuchi) • chaintope, Inc ◦ エンタープライズ向けブロックチェーンの開発
• Twitter: @techmedia_think • Blog: https://techmedia-think.hatenablog.com/ • OSS: ◦ bitcoinrb ◦ bech32rb ◦ kzg ◦ etc.. • GBEC: https://goblockchain.network/ • 共著/監修
Lightning Networkの概要を理解する • 1章:ざっくりとLightning Networkの概要を説明 • 2章:Lightning Networkが想定するユースケース • 3章:ペイメントチャネルを開いて閉じるまで
• 7章:Lightning Networkではどうやって、 トラストレスにオフチェーン決済を実現しているのか?仕組みを解説
4章 Lightning Networkのノード実装 • 主要なノード実装 ◦ Core Lightning(旧c-lightning) https://github.com/ElementsProject/lightning ◦
LND https://github.com/lightningnetwork/lnd ◦ Eclair https://github.com/ACINQ/eclair 各ノード実装について、 • ビルド方法の解説 • docker-composeを利用したテスト環境での動作確認 付録Bにて、簡単なDockerのセットアップと使用方法を提供
5章 ノードの運用 • ノード運用のハードルを下げる便利なツール •
ノードの管理 ◦ セキュリティ ◦ バックアップ ◦ 可用性 ◦ チャネル管理 1〜5章で、Lightning Networkの概要と 実際に使ってみるために必要なことを解説
8章 ルーティング 複数のペイメントチャネルを使って、支払いをルーティングする Secret C SHA-256( C) • 3日後までに、
Cが分かれば、5,200 sat支払い • 2日後までに、 Cが分かれば、5,100 sat支払い • 1日後までに、 Cが分かれば、5,000 sat支払い Fee Fee ① インボイスをリクエスト ② シークレットを生成 ③ インボイス ④ パスに沿ってチャネルを更新 Alice Bob Mike Carol
8章 ルーティング 複数のペイメントチャネルを使って、支払いをルーティングする Secret C • Cを開示して 5,200 satを受け取り
• Cを開示して 5,100 satを受け取り • Cを開示して、 5,000 satを受け取る Fee Fee 支払いの証明として シークレットを受け取る 逆順にパスに沿って支払いを受け取り チャネルを更新 Secret C Secret C Alice Bob Mike Carol
8章 ルーティング # 旧状態への対応 OP_DUP OP_HASH160 <RIPEMD160(SHA256(revocationpubkey))> OP_EQUAL OP_IF OP_CHECKSIG OP_ELSE
<remote_htlcpubkey> OP_SWAP OP_SIZE 32 OP_EQUAL OP_IF # HTLCによる送金成功 OP_HASH160 <RIPEMD160(payment_hash)> OP_EQUALVERIFY 2 OP_SWAP <local_htlcpubkey> 2 OP_CHECKMULTISIG OP_ELSE # 有効期限切れによるタイムアウト OP_DROP <cltv_expiry> OP_CHECKLOCKTIMEVERIFY OP_DROP OP_CHECKSIG OP_ENDIF OP_ENDIF 適切な受取人が、シークレットを 提供した場合に使用可能 有効期限が切れた場合に使用可 能 資金提供者のが資金を回収 チートしようした相手の資金を没収 Lightning Networkで使用されるコントラクト 各ノードは、協力してオフチェーンで チャネルの状態を更新するが、 このコントラクトをブロードキャストして オンチェーンで決済することも可能。
付録A Bitcoinの基本的概念 Lightning Networkの詳細な仕組みを見ていく前に抑えておきたいポイント • 公開鍵暗号とデジタル署名 • Bitcoinのトランザクション •
Bitcoin Script ◦ 公開鍵を使った資金のロック ◦ シークレットを利用した資金のロック ◦ マルチシグ ◦ タイムロック ▪ 相対的 ▪ 絶対的 ◦ 条件分岐やフロー制御
9章 チャネル操作 支払いに伴うチャネルの状態を更新するための、チャネル参加者のフローを解説 update_add_htlc HTLCによる支払いをオファー commitment_signed 支払いに伴う新しい状態 =新しいコミットメントTxの
署名を作成/送付 revoke_and_ack commitment_signed revoke_and_ack 古い状態を失効させ、 新しいTxへの署名を作成/送付 update_fulfill_htlc ︙ 受信者側から送られてきた シークレットを送信し、 支払いのHTLCを受け取り Secret OR update_fail_htlc / update_fail_malformed_htlc エラー/有効期限切れにより、 HTLCを削除 チャネルからHTLCを削除するため、削除後の状態を新しい状態として commitment_signed / revoke_and_ack をトリガー Alice Bob
… 10章 オニオンルーティング update_add_htlc update_add_htlc update_add_htlc Onion Payload •
ショートチャネルID: Bob <-> Mike • 転送金額: 5,200 sat • タイムアウト値: 700,038 Onion Payload • ショートチャネルID: Mike<->Carol • 転送金額: 5,100 sat • タイムアウト値: 700,018 Onion Payload • 転送金額: 5,000 sat • タイムアウト値: 700,018 • 合計金額: 5,000 sat • Payment Secret Alice Bob Mike Carol Bobのペイロード Bobの鍵 Mikeの鍵 Carolの鍵 Mikeのペイロード Carolのペイロード Version セッション鍵 HMAC Onion Packet 送信者は、セッション鍵で、 各ノードの鍵とECDHを行い、 共有シークレットを導出し、 各ノードのOnion Payloadを難読化 中継ノードが知るのは自分の前後のノードのみで、 誰から誰への支払いなのかは分からない。
11章 チャネルグラフ Lightning Node Lightning Node Lightning Node Lightning Node channel
Node Channel Node 初めて起動したノードは、ネットワークに参加するため、 DNSサーバーに、Lightning Networkのノード情報を照会する https://github.com/cdecker/lseed Lightning Node DNS Server 返ってきたノード情報を元に、 ネットワーク内のノードに接続 ネットワークに参加すると、リモートピアから、 チャネルとノードに関する通知を受け取ることができる。 • node_announcement ノードに関する情報を公表 公開鍵、接続情報(IPアドレス、ポート) サポートする機能など • channel_annoucement 新しいチャネルの情報を公表 • chanel_update 各方向毎のチャネルの情報を公表 ◦ 手数料 ◦ タイムロックの差分 ◦ HTLCの最低金額 Lightning Node Channel Graph LNノードはこのチャネルグラフを 最新に保ちながら、支払いを ルーティング可能な経路を探索する
成長するLightning Network 2018年1月 2019年1月 2022年11月 • 約 17,000 ノード •
約 81,000 チャネル • 約 5,300 BTC(約155億円)
12章 経路探索 ネットワークにゴシップされるのはチャネルのキャパシティ(総量)のみ チャネルの参加者のどちらにどれだけの残高があるかは不明 ノードは、支払い額以上のキャパシティを持つ経路をピックアックし、 •
手数料(固定、比例) • タイムロック時間 • これまでの支払いの試行の成功確率 の重みを持つ有向グラフ(フローネットワーク)から、最適な経路を選択する。 ダイクストラ(Dijkstra)法など、最短経路問題のアルゴリズムを適用。 ※ MPP(Multi-Path Payment)など支払いの細分化アプローチも
13章 ワイヤープロトコル ネットワーク上でプロトコルメッセージを送信する際のエンコード方法を解説 • メッセージフォーマット メッセージタイプの付録Cにリストアップ •
TLV(Type Length Value) ◦ レコードのタイプを表す整数(BigSize) ◦ レコードの長さ(BigSize) ◦ レコード値 • 機能ビット サポートする機能を示す値(ビット番号奇数はオプション、偶数は必須) node_announcement / channel_announcement / init メッセージに含まれる メッセージタイプ(2バイト) 可変長メッセージペイロード(最大65KB) extension(TLV Stram)
14章 暗号化トランスポート層 Lightning Node Lightning Node E2Eの暗号化通信 • 1st Layerと異なり、すべての通信は暗号化される
(Onion Payloadの難読化とはまた別) • Noise_XK_secp256k1_ChaChaPoly_SHA256 を使用した暗号化 • 各内容について仕組みとフローを解説 ◦ 3段階のハンドシェイク ◦ 暗号化メッセージの作成と送信 ◦ 受信した暗号化メッセージに復号 ◦ 鍵のローテーション
15章 ペイメントリクエスト インボイスをリクエスト Alice Carol インボイスを送信 lnbc2500u1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwz qfqqqsyqcyq5rqwzqfqypqdq5xysx xatsyp3k7enxv4jsxqzpuaztrnwngzn3kdzw5hydlzf03qdgm2
hdq27cqv3agm2awhz5se903vruatf hq77w3ls4evs3ch9zw97j25emudupq63nyw24cg27h2rspfj9 srp bech32エンコードされたインボイス 1st Layerと違って、支払いの度にインボイスを作成する必要があり、 受信者はオンラインである必要がある。
16章 セキュリティとプライバシー • 1st Layerと比較したプライバシー ◦ 送金の秘匿性は向上(オフチェーン支払い、通信層の暗号化) ◦ ノードIDとIPアドレスの公開に伴うプライバシーのリーク
• 攻撃手法 ◦ プロービングを利用したチャネル残高の調査 ◦ プロービング結果のスナップショットから支払人、受取人の探索 ◦ ルーティングした金額とタイムロックの値から匿名セットを限定、 タイミング分析 ◦ 失敗する支払いによるDoS攻撃、 ◦ HTLCスロット/金額のロックアップ • クロスレイヤーの非匿名化 • スケールフリーなネットワーク・トポロジーに対する攻撃