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ではどうなっているのか確認しよう。