Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LNDのgRPC/RESTインターフェース

 LNDのgRPC/RESTインターフェース

shigeyuki azuchi

December 24, 2021
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. 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. 2 macaroon
 LNDへの接続にあたって、アクセス権の認証をするための仕組みが macaroon
 
 • cookieみたいなもので、LNDはmacaroonが正しい鍵で署名されていることを検証 
 • cookieと同様、TLSなどの安全なチャネルを介して送信する必要がある

    
 • macaroonの委譲や、より限定したバージョンの作成も可能 
 
 
 
 admin.macaroon
 readonly.macaroon
 invoice.macaroon
 すべてのgRPCの読み取り/書き込み権限を付与 
 (lncliで使われている) 
 すべてのgRPCの読み取り専用のアクセス権を付与 
 (アプリのモニタリング用途など) 
 インボイス関連のgRPCの読み取り/書き込み権限を付与 

  3. 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. 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