Lightning Network BOLTの概要について、書いていくシリーズ。
今回は趣向を変えて、開発中のLightning Networkノードであるptarmiganの概要を説明します。
https://nayutaco.github.io/ptarmigan/
ptarmigan(たーみがん、と発音)は、日本名でいえば「雷鳥」になります。
Lightning Networkなので、雷に由来しています。
GitHubで見るとC++プロジェクトのように見えてしまいますが、実際はC言語です。
これは、単体テストでgtestsを使っていて、テストデータが大量にあるためにそうなってしまいました。
C言語で作っていますが、c-lightningをベースにしているわけではなく、ライブラリを使っている箇所以外はほとんど自作しています。
また、ptarmiganは弊社が作り始めましたが、オープンソースですので、issueを上げてくださったり、Pull Requestしてくださる方を歓迎しています。
日本語でも問題ありません!
(タイトルはなるべく英語で書いてますが、中身はほぼ日本語です)
gitのbranchは development で作業しています。
developmentで、簡単に他ノードとの動作確認したあとでリリースを行っています。
この時点の最新は、2018-04-11です。
https://github.com/nayutaco/ptarmigan/releases/tag/2018-04-11
他のノード(c-lightning / eclair / lnd)の使い方については、別のwikiにメモを作成しています。
https://github.com/nayutaco/lightning-memo/wiki
ptarmiganについてはdocsに書いています。
バージョンやcommit-idは記載当時のものになっていますが、だいたいは現在でも使えるようになっていると思います(動作しなかったら、issueくださると助かります)。
動作環境はUbuntuを想定していますが、Linuxであれば動作するのではないかと思います。
regtestでの動作はWindowsのWSL(Ubuntu)で行っています。
bitcoindの機能を使っていて、スクリプトではbitcoin-cliを呼び出し、ptarmiganのプロセス(ucoind)からはJSON-RPCを呼び出しています。
bitcoindのバージョンは、テスト環境ではv0.16を使っています。
おそらくv0.15でも動作するとは思いますが、今後のことを考えるとv0.16の方が無難かもしれません。
close後の送金アドレスは getnewaddress を使っているので、v0.15ではP2PKH、v0.16ではP2WPKH nested in BIP16 P2SHになります。
ptarmiganは、testnet/regtestでしか使用できません。
開発は、以下を中心に行っています。
- BOLTを読んで、実装されていないところを追加、修正
- 他ノードとやりとり
- 認識が合わない動作があれば、BOLT再読やissueで確認
- 操作性の向上やログ出力の見直し
BOLTの内容を読んで、それを実装レベルまでどう持っていくのか考えるのに時間がかかります。
まだまだ開発中ですので、ptarmiganに興味を持っていただけるとうれしいです。