litテスト環境の構築

btcdはgolangで書かれているので、lightning networkのlndやlitもbtcdを参照している処理が多い。だから色々やりやすいと思って、最初はbtcdのsimnet環境を構築した。けど、ダメだった。

結論から言うと、bitcoin coreのregtest環境を構築するのが早い。 基本的には、lit setupを参照すれば良い。

Bitcoinのフルノードといえば、公式クライアントであるBitcoin coreがほとんどである。btcdは、2018年8月現在世界で45nodesしか稼働していない。
詳細は、coin danceを参照するのが良い。

Bitcoinのテスト環境

Bitcoinには大体のクライアントで2種類のテストネットが用意されている。
btcdでは3種類になる。

testnet

開発の際に一般的に使われる環境。価値がないbitcoinを使って実験できる。bitcoinは開発者が公開しているfaucetから取得できるけど、しっかり返却する必要がある。ちなみに昔はmainnetのbitcoinもfaucetでもらえたらしい。

regtestnet

今回構築する環境である。
regression test modeの略。testnetと同じルールで動作するプライベートブロックチェーンを新規に作成することができる。testnetと1つ大きく違うのは、regtest modeでは任意のタイミングで新しいブロックを追加することができる。このため、testnetではマイニングによって新しいブロックが作られるのに10分くらいかかるけど、regtest modeではそういった制限なく自由にブロックの追加のタイミングがコントロールできる。

他のnetと構築の仕方はかわらないのだけれど、プライベートチェーンになるので、自分でブロックをマイニングしないと行けないところが大きく違う。

simnet

普通、regtestを使うが、btcdでは別に用意されているsimnetを使う。 regtestと意図としては同じだが、btcdではこちらの方がサポートが充実している。詳細のパラメータはparamsを参照。多分色々regtestとも違いがあるはず。

btcdで環境構築する際の課題

一回トライしたんだけど、断念した。simnetの環境まではうまく言ったんだけど。
litは現状simnetには対応していない。けど、btcdはregtestをあまりサポートしていない。なので、アプローチは2つ。

  1. litをsimnetに対応させる
  2. btcdのregtestnetを頑張る

1の対応については、これからやってみたいと思う。simnetの構築方法と合わせてまた別掲しようと思う。