通常起動
$ bitcoind
特にオプションを付けずに起動すると、macOSの場合/Users/<user>/Library/Bitcoinにデータが保存される。
初起動の場合、Bitcoinディレクトリは自動生成される。
実際のチェーンデータはBitcoin/blocks配下にダウンロードされていく。
データディレクトリを指定して起動
$ bitcoind -datadir=<dir_path>
デフォルトの/Users/<user>/Library/Bitcoinではない場所にデータを保存したい場合に使用する。<dir_path>で指定したディレクトリにBitcoinディレクトリが生成される。
Bitcoinのブロックチェーンはとても大きなデータ(2018/9初頭時点で230GB〜)になるため、僕は外部SSDに保存しています。USB接続したSSDのマウントポイントが/Volumes/BITCOIN-SSDとすると以下のようになる。
$ 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オプションを付けます。
$ 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ではそういった制限がありません。
$ bitcoind -regtest
このモードで起動すると、Bitcoinディレクトリ配下にregtestディレクトリが生成され、そこにブロックチェーンデータなどがダウンロードされていきます。その後、ここでは割愛しますがbitcoin-cliで始まりのブロックを生成するなどを経て、実際に使用できるようになります。
regtestディレクトリを削除すれば、再度まっさらな状態から始めることができます。