Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
LNDのgRPC/RESTインターフェース
shigeyuki azuchi
December 24, 2021
Technology
0
22
LNDのgRPC/RESTインターフェース
GBECの解説動画の資料です。
https://goblockchain.network/2021/12/lnd_grpc-rest_interface/
shigeyuki azuchi
December 24, 2021
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
LNで受信者の匿名性を提供するRoute Blinding
azuchi
0
8
Peer Swap
azuchi
0
8
Fast Forward Protocol
azuchi
0
14
楕円曲線の点の乗算
azuchi
0
30
Vault
azuchi
0
10
Liquidity Ads in LN
azuchi
0
20
x-only Public Key
azuchi
0
18
フィー・スナイピングとその対策
azuchi
0
17
RBFを使ったトランザクションの置換
azuchi
0
18
Other Decks in Technology
See All in Technology
LINE WORKS API 2.0について
mmclsntr
0
110
[SRE NEXT 2022]メルカリグループにおけるSREs
srenext
0
160
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
0
590
srenext2022-skaru
mixi_engineers
1
620
testing journey / Increase sensitivity to minor changes
aki_moon
1
290
SRE の歩き方・進め方 / sre-walk-through-procedure
rrreeeyyy
0
190
Poolにおける足を止めないシステム基盤構築
winebarrel
3
810
成長を続ける組織でのSRE戦略:プレモーテムによる信頼性の認識共有 SRE Next 2022
niwatakeru
7
2.6k
新規ゲームのリリース(開発)前からのSRE活動
tmkoikee
1
230
スタートアップ入社4日目までに考えたAWSのセキュリティ向上/ Startup AWS Security
shonansurvivors
3
2.9k
開発者のための GitHub Organization の安全な運用と 継続的なモニタリング
flatt_security
3
3.7k
Stripe Search APIを利用した、LINEとStripeの顧客情報連携/line-dc-202205
stripehideokamoto
0
130
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
47
5.5k
Raft: Consensus for Rubyists
vanstee
126
5.4k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
11
4.6k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
350
21k
Music & Morning Musume
bryan
35
4.1k
GraphQLとの向き合い方2022年版
quramy
16
8.1k
The Invisible Side of Design
smashingmag
289
48k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Gamification - CAS2011
davidbonilla
75
3.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
268
11k
Transcript
LNDのgRPC/RESTインターフェース
1 LNDのgRPC/RESTインターフェース LNDではノード操作が可能なAPIが提供されている • gRPC API https://api.lightning.community/#lnd-grpc-api-reference •
REST API https://api.lightning.community/#lnd-rest-api-reference ※ gRPCを使うとLNDとアプリの双方向の通信が可能になり便利
2 macaroon LNDへの接続にあたって、アクセス権の認証をするための仕組みが macaroon • cookieみたいなもので、LNDはmacaroonが正しい鍵で署名されていることを検証 • cookieと同様、TLSなどの安全なチャネルを介して送信する必要がある
• macaroonの委譲や、より限定したバージョンの作成も可能 admin.macaroon readonly.macaroon invoice.macaroon すべてのgRPCの読み取り/書き込み権限を付与 (lncliで使われている) すべてのgRPCの読み取り専用のアクセス権を付与 (アプリのモニタリング用途など) インボイス関連のgRPCの読み取り/書き込み権限を付与
3 macaroonを使ったアクセス リクエストヘッダーにmacaroonをセットしてアクセス Grpc-Metadata-macaroon: <macaroonのHEX値> • curlで実行する場合
# curl --header "Grpc-Metadata-macaroon: $(xxd -ps -u -c 1000 <macaroonファイルのパス>)" https://umbrel.local:8080/v1/getinfo ※ xxdコマンドはファイルをHEXダンプするコマンド ◦ オレオレ証明書の場合は、--cacertオプションでLNDのtls.certを指定 --cacert <tls.certのパス>
4 gRPCインターフェース *.protoファイルをダウンロードして各言語用にコンパイルすればコードが生成され利用可能に。 https://github.com/lightningnetwork/lnd/tree/master/lnrpc 各言語でライブラリとして提供されているケースも:
LNDのHTLCイベントをキャプチャするツール: https://github.com/azuchi/lnd-tool require 'lnrpc' lnd = Lnrpc::Client.new({ credentials_path: '/path/to/tls.cert, macaroon_path: '/path/to/admin.macaroon', address: 'host:port' }) lnd.router.subscribe_htlc_events.each do |event| puts event end