LNDのmacaroon

LNDでは、RPC通信の認証にmacaroonsを利用している。
というもののmacaroonsってなんだ。

macaroons

どうもcookieのようなものらしく、そもそもcookieは

ホームページを訪問したユーザーの情報を一時的の保存する仕組み、またはそのデータです。 ID、パスワード、メールアドレス、訪問回数などユーザー情報として保存されます。
これによって再訪問したときに ユーザー を特定し、情報を入力する手間が省けます。

で、macaroonsは、

Cookies with Contextual Caveats for Decentralized Authorization in the Cloud

分散型認証に使えるcookie? 例えば、lncliは、lndのクライアントの一種と言えるし、gRPCのケースも考えられる。 だから、lncliがlndにmacaroonsを使って何かを送るような形になるようだ。

lncliでmacaroons認証

lncliはmacaroons関連の設定ファイルを読んで認証ファイルを送ってからリクエストを投げられる形になる。

gRPCでmacaroons認証

hex encodeしたmacaroon情報を送ればリクエストを通せる。

GET https://localhost:8080/v1/getinfo  
Grpc-Metadata-macaroon: <macaroon>  

だから例えばめっちゃシンプルな例で言うと、

curl --insecure --header "Grpc-Metadata-macaroon: $(xxd -ps -u -c 1000  $HOME/.lnd/data/chain/bitcoin/simnet/admin.macaroon)" https://localhost:8080/v1/getinfo  

って感じか。

lndhubではどうなっているのか確認しよう。