LNDを実装する際の構成要素
LNDでLightning Networkを形成する際に関係するコンポーネントを整理する。BTCDとLND、neutrino、でもbitcoindでも行ける?みたいに混乱してきたので。
ブロックチェーンレイヤー:BTCD
ここはBTCD、Bitcoind、Neutrinoのどれかになる。Bitcoindは説明不要として、BTCDは再確認する。BTCDはbitcoindからの別実装で、特筆すべき特徴としてはwallet機能がない。だから若干イメージし辛い部分はあるけれど、wallet機能を使うにはbtcwallertがある。
Neutrinoはモバイルで動かしたいときの選択肢だが、まだ問題を多く抱えている。
2nd レイヤー:LND
今まで何回も触れてきたけどlightning nodeで、インターフェースはいくつかある。lncliかgRPCかrestAPI。推奨はgRPCのようだ。APIリファレンスを見ても、それほど複雑なcallは存在しない。
支払い形式はいわゆるInvoice式になる。
Invoice決済
ずっとlitしか触ってなかったので、ここのイメージが弱い。一旦おさらい。
- 請求書を作る
請求書は基本的に期限付き
lncli addinvoice --amt=6969 --memo="A coffee for Yusuke"
請求書の受信
送り先、金額、hash等を確認し、有効期限が切れていないかも確認する。これ、こっちがやるの?切れてるものに払ったどうなるんだ?支払い 普通に支払う。Pay_Reqだけ指定すればいいから簡単そうだ。
lncli sendpayment --pay_req=<PAY_REQ>
- 支払いを確認する 受信側は確認できる。
lncli lookupinvoice --rhash=<R_HASH>
さて、インストールにいくか。 その前に一回HTLCとマルチホップを振り返りつつ。