bitcoind 覚書き


通常起動

general
$ bitcoind

特にオプションを付けずに起動すると、macOSの場合/Users/<user>/Library/Bitcoinにデータが保存される。
初起動の場合、Bitcoinディレクトリは自動生成される。
実際のチェーンデータはBitcoin/blocks配下にダウンロードされていく。

データディレクトリを指定して起動

datadir1
$ bitcoind -datadir=<dir_path>

デフォルトの/Users/<user>/Library/Bitcoinではない場所にデータを保存したい場合に使用する。<dir_path>で指定したディレクトリにBitcoinディレクトリが生成される。
Bitcoinのブロックチェーンはとても大きなデータ(2018/9初頭時点で230GB〜)になるため、僕は外部SSDに保存しています。USB接続したSSDのマウントポイントが/Volumes/BITCOIN-SSDとすると以下のようになる。

datadir2
$ bitcoind -datadir=/Volumes/BITCOIN-SSD
...起動...

$ cd /Volumes/BITCOINSSD | ls
Bitcoin
$ ls Bitcoin
banlist.dat       blocks            debug.log         mempool.dat
bitcoin.conf      chainstate        fee_estimates.dat peers.dat         wallets

ちなみに、僕は毎度-datadir=xxxxとオプションを付けるのが面倒なので、
/Users/<user>/Library/Bitcoin/Volumes/BITCOIN-SSD/Bitcoinへのシンボリックリンクをつけている。

ln -s /Volumes/BITCOIN-SSD/Bitcoin /Users/<user>/Library/Bitcoin

こうすることで、毎度オプションつけなくてもbitcoindだけで希望のディレクトリを利用している。

Testnet Mode

開発時に、毎度本番データを使う人はまずいないと思います。
Bitcoinも然りで、そのためにtestnetというものがあります。
→ testnet
testnetは本番チェーンとは完全に切り離されており、実際の通貨としては使用できない仕様となっているということです。現在はversion3のTestnet3が運用されています。テストデータとはいえ、世界中の人のテスト取引データが書き込まれているちゃんとしたテストデータなので、本番に準じた環境としてテストできそうです。
testnetのトランザクション履歴はこのサイトで確認することもできます。
→ BLOCKCYPHER

testnetを利用してbitcoindを起動する場合は、-testnetオプションを付けます。

testnet
$ bitcoind -testnet

このモードで起動した場合、Bitcoinディレクトリ配下にtestnet3ディレクトリが生成され、そこにブロックチェーンデータなどがダウンロードされていきます。そのデータサイズは9月初頭現在14GB程度です。
また、bitcoindと対話する際には、bitcoin-cliにも-testnetオプションを付ける必要があります。

ちなみに、testnetもテストとはいえ本番Bitcoinと同じくそのコインの数は有限です。コインは Bitcoin Testnet Faucet などで取得することができますが、このサイトでも言及されているとおり、不要になったら送り返して次の開発者が使えるようにしてあげましょう、とのことです。譲り合い。

Regtest Mode

これはtestnetよりももっとローカル開発寄りなモードです。完全にプライベートデータとして1からチェーンを始めることができます。機能的にはtestnetとほぼ同じです。testnetと大きく異なる点は、任意のタイミングで新しいブロックを追加できるということです。testnetはマイニングによって10分程度おきにブロックに組み込まれていきますが、regtest modeではそういった制限がありません。

regtest
$ bitcoind -regtest

このモードで起動すると、Bitcoinディレクトリ配下にregtestディレクトリが生成され、そこにブロックチェーンデータなどがダウンロードされていきます。その後、ここでは割愛しますがbitcoin-cliで始まりのブロックを生成するなどを経て、実際に使用できるようになります。
regtestディレクトリを削除すれば、再度まっさらな状態から始めることができます。

つづく