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とマルチホップを振り返りつつ。