Bitcoin Core(bitcoind) を regtest で動かす
最終更新日: 2025/02/19
はじめに
よほど野心的でない限り Bitcoin のフルノードを自作しようとは思わないだろう。
ここでは最も一般的と思われる Bitcoin Core(bitcoind) のビルドとオプションについてメモを残す。
Ubuntu 22.04 (WSL2) で確認しているが、既にいろいろインストールされているのでビルドに不足しているツールがあるかもしれない。
現時点で Bitcoin Core の最新バージョンは v28.1 のためそれを使っていく。
以前のバージョン表記は v0.XX.YY
(v0.21.2まで) だったが、比較的最近から vXX.YY
(v22.0~) に変わった。
もし「v0.」で始まっている記事があっても、それがものすごく古いとは限らないことは覚えておいて良いだろう。
ただ記事の更新日時が新しいのに「v0.」の場合は単に日付だけ新しいだけなので気をつけよう。
基本的に、周辺アプリの互換性の都合以外で Bitcoin Core の古いバージョンを使う必要はほぼない。
リポジトリ
ビルド
前準備
$ sudo apt-get install \
build-essential \
libtool \
autotools-dev \
automake \
pkg-config \
bsdmainutils \
python3 \
libevent-dev \
libboost-dev \
libsqlite3-dev
ZMQ を使うなら libzmq3-dev
もいるだろう。
私の環境ではインストールしていない状態でビルドしたところ、zmqpubrawblock
を設定してもエラーにならずにポートが開いていなかったので無視されたようだ。
DB をどうするか悩むかもしれない。
新規環境だったりウォレットが無いのであればそのままにして、既に使っているウォレットがあるなら Berkeley DB を使うとよいだろう。
mainnet
では内蔵のウォレットを使わない方がよいだろう。
Clone and Build
適当な場所に clone してリリースタグを checkout する。
master
を使いたいかもしれないので、その辺りは自身の判断で。
$ git clone https://github.com/bitcoin/bitcoin.git
$ cd bitcoin
$ git checkout -b v28_1 refs/tags/v28.1
ビルドは configure
のオプションを指定して make
する。
オプションはいろいろあるので configure --help
で確認すると良い。
GUI無しで $HOME/.local
にインストールするならこういう感じだ。
./autogen.sh
./configure --prefix=$HOME/.local --without-gui
make
make install
設定と実行
ノードとして動作する bitcoind
や 操作する bitcoin-cli
は設定ファイル bitcoin.conf
を参照する。
設定ファイルを使わず引数にしても同じことができるので、その辺りは自身の判断で。
regtest でしか使わないならこんな感じでよいだろう。
server=1
txindex=1
regtest=1
rpcuser=ほげほげ
rpcpassword=ふがふが
fallbackfee=0.00001000
rpcuser
と rpcpassword
は JSON-RPC で通信したい場合に設定する。
代わりに rpcauth を使うこともできる。
$ ./share/rpcauth/rpcauth.py user pass
String to be appended to bitcoin.conf:
rpcauth=user:<省略>
Your password:
pass
$ ./share/rpcauth/rpcauth.py user2 pass2
String to be appended to bitcoin.conf:
rpcauth=user2:<省略>
Your password:
pass2
出力された rpcauth
の行を bitcoin.conf
にそれぞれ貼り付けて bitcoind
を起動する。
$ curl --user user:pass --data-binary '{"jsonrpc": "2.0", "id": "curltest", "method": "getblockcount", "params": []}' -H 'content-type: application/json' http://127.0.0.1:18443/
{"jsonrpc":"2.0","result":0,"id":"curltest"}
$ curl --user user2:pass2 --data-binary '{"jsonrpc": "2.0", "id": "curltest", "method": "getblockcount", "params": []}' -H 'content-type: application/json' http://127.0.0.1:18443/
{"jsonrpc":"2.0","result":0,"id":"curltest"}
rpcauth
でやったときは最初失敗していたのだが、気のせいだったのか?
おわりに
regtest で bitcoind
を立ち上げる手順を説明した。