Ptarmiganを使ってみよう (1)

ueno
ueno
May 9 · 8 min read

Lightning Networkのノードソフトウェア、Ptarmiganを使ってみましょう。
(この記事ではversion 0.2.2を使っています。)

今回は説明を簡単にするために、以下のようにします。

  • Ubuntu18.04が動いている
  • Bitcoin Core(bitcoind)もインストールされている
  • chainの種類はregtest

regtestを使うので、Bitcoin Coreをインストールしたばかりの環境でもブロックのダウンロードなどをせずに動かすことが出来ます。

今回はPtarmiganを起動するところまでを説明し、次回チャネルを作って送金する流れを説明します。

Bitcoin Coreの設定

今回はregtestで動かします。
bitcoin.confは、このような形になります。

Ptarmiganは、デフォルトではユーザフォルダの中にあるbitcoin.conf(~/.bitcoin/bitcoin.conf)を読んで、rpcuserやrpcpasswordを取得しようとします。

対応しているBitcoin Coreのバージョンはv0.17以上です。私の環境では、Bitcoin Core v0.18.0を使いました。

初回ですとamountが何もないので、がさっとminingしたことにしましょう。

Ptarmiganはbitcoindのwalletを使います。
現在のところP2PKHやP2WPKHのアドレスに送金されたトランザクションしか使わないようになっています。
bitcoin-cli generateというコマンドの場合はP2PKアドレスに送金しますが、bitcoin-cli generatetoaddressでは指定したアドレスに送金されます。getnewaddressではP2WPKHアドレス(P2SH形式)が生成されるため、自動的にPtarmiganが使用できるamountになります(generateした場合は、sendtoaddressで送金すると良いでしょう)。

Bitcoin Core v0.18からはgenerateコマンドが使えなくなるため、generatetoaddressに使い慣れておくのもよいかと思います。

Ptarmiganのセットアップ

インストールについてはこちらを読んでいただくとよいでしょう。

まずは、いくつかビルドに必要なツール類をインストールします。
開発をしている環境であれば、インストールされていることも多いのではないでしょうか。

Ptarmiganの本体をGitHubからcloneしてビルドします。
branchはmasterにしましたが、masterでは新しいバージョンの準備をしているので、この記事と差違があるかもしれません。あまりにも違いそうな場合は、tagのv0.2.2を使ってください。

初回はライブラリをダウンロードしたりビルドしたりするため、make fullを実行してください。
時間がかかるので、ゆっくりお待ちください・・・。

ビルドし終わったものは、ptarmiganの中のinstallというフォルダの中に入っています。”~/.ptarmigan”のようなフォルダは作りません。
今回の説明は、installフォルダで動かすように書きますが、installフォルダごとどこかにコピーしてもよいです。

Ptarmiganの起動

Ptarmiganのおおよその使い方については、こちらを読んでいただければと思います。

いま、ビルドし終わってptarmiganフォルダの中にいるとします。

Ptarmiganのノードアプリはptarmdという名前ですが、ptarmdはカレントディレクトリをワークフォルダとして動作しようとします。
そのため、new_nodedir.shというスクリプトで、ワークフォルダを作ります。引数無しの場合は「node」という名前のフォルダを作ります。

ワークフォルダ内にファイルを置くので、別の名前でワークフォルダを作ってptarmdを2つ起動する、ということもできます(ネットワークのポート番号は変更する必要がありますが)。

new_nodedir.shが行っているのは、mkdirでフォルダを作ることと、作ったフォルダの中にinstall/scriptフォルダに入っているものをコピーするという作業です。
scriptフォルダの中には、Lightning Networkでイベントが起きたときに呼び出されるスクリプトが入っています。「着金が完了したときにxxxしたい」というような使い方を想定しています。デフォルトでは、単にechoでログ出力するだけになっています(ptarmdが実行しているコンソールに出力されます)。
今回は説明を省略したいと思います。

では、起動しましょう。
今回はc-lightningを同じPC上で起動させるつもりなので、ポート番号が衝突しないように12345番を使います。

ptarmdが起動すると、コンソールにログが出力されます。
もし、起動しているbitcoindとchainの種類が違ったら起動しません。

だいたい、このようなログが出てくると思います。

この「node_id」が起動したptarmdを識別するIDです。

ptarmdを起動した後は、クライアントアプリから制御します。
今回はptarmcliを使いますが、REST-APIも用意されています。
(こちらにも書いていますが、ptarmcliについては改修を予定しています。)

ptarmdは制御用のポートとして、ptarmdがLightning Networkで使うポート番号+1を用います。
今回で言えば、12346番です。
ptarmcliにそのポート番号を指定すると制御できるのですが、ptarmdのワークフォルダでptarmcliを実行する場合は省略できます。
説明の都合上、今回はnodeフォルダ内でptarmcliを実行していきます。

例えば、起動したptarmdのnode_idを取得したい場合にはgetinfoコマンドを使います。

次回記事では、チャネル作成や送金を行います。

Nayuta_ja

ブロックチェーン関連のソフトウェア・ハードウェア開発企業です。福岡を拠点にしています。現在、Lightning Network のプロトコルとアプリケーションを開発中です。

ueno

Written by

ueno

engineer

Nayuta_ja

Nayuta_ja

ブロックチェーン関連のソフトウェア・ハードウェア開発企業です。福岡を拠点にしています。現在、Lightning Network のプロトコルとアプリケーションを開発中です。