いくつかあるライトニングノード実装のうち、Lndの次に人気のあるc-lightningにはプラグイン機能があります。あまり広く知られてはいませんが、このプラグイン機能を使ってノード自体の機能をカスタマイズすることで新しいレイヤー3プロトコルや、かゆいところに手が届く新機能を実現できます。
今日は実際に公開されているc-lightningプラグインの例や、期待できる活用方法について触れていこうと思います。
C-LIGHTNINGの立ち位置
まずはc-lightningの特徴をおさらいしましょう。Blockstreamが開発を主導するライトニングノード実装で、普通のライトニングノードとして使う分にはLNDより軽量で動作が安定しています。それでもLndが人気なのはユーザー数が多いことによるネットワーク効果(トラブル時にサポートが得られやすい)と、LNDほうが色々な機能や周辺ソフトが充実していてエンドユーザー向けという点だと考えています。
最近、ライトニングノード管理ソフトのRaspiBlitzでもc-lightningが選択できるようになったことが記憶に新しいですね。
今日取り上げるc-lightningのプラグイン機能はどちらかというとアドバンスユーザー向けの機能かもしれません。
プラグイン機能のすべて
さて、c-lightningのプラグイン機能はノードにプラグインとして機能を追加できるのですが、Umbrelのアプリストアとどう違うのかというと、「ノード外のアプリではなく、ノード自体の挙動を変えられる」点が特別なのです。
例えばすべてのライトニングノードが従うBOLTというプロトコルがあります。これには送金の手順やメッセージの扱い方などが定義されていますが、c-lightningのプラグイン機能を使うとプロトコルレベルのイベントの発生時に何か行動を起こしたり、ノード経由で実行できるコマンドを追加することができます。その他にも、ビットコインノードとの通信がプラグインで行われているので、好きなようにブロックチェーンデータを取得するプラグインも作れます!
多様な使い方を実現するために、イベント発生時にプラグインに通知できるNotification機能と、通知するだけでなく対応自体を定義できるHooks機能が王位されています。
使い方① 便利な追加機能
公開されているc-lightningプラグインには便利そうなものがいくつかあります。例えばcsvexportpaysというプラグインは、これまでに行った送金の一覧をCSV形式で出力するコマンドを実装します。また、webhookというプラグインは送金を受け取った際に指定したURLにリクエストを飛ばすことができ、Webアプリケーションの開発に役立ちそうです。