カスタムsignet Bitcoinの立て方 Umbrel v0.5版
これを参考にしてUmbrelのBitcoin Nodeをカスタムsignetノードにする。
以下メモ書きご容赦。備忘録程度に書き留めました。
メインネットとは共存できない。Bitcoinに依存する全てのアプリを削除しなければならない。よって実験機に導入すべき。
<手順>
1.Umbrel Bitcoin Nodeアプリのadvance settingでsignetを選択。
2.CLI appスクリプトでbitcoinを止める。
cd umbrel/scripts
./app stop bitcoin
3.bitcoin.conf, umbrel-bitcoin.conf以外を削除
ディレクトリの場所は
~/umbrel/app-data/bitcoin/data/bitcoin
4.umbrel-bitcoin.confをsu権限で編集。末尾にsignetchallengeを追加。
[signet]
bind=0.0.0.0:8333
bind=10.21.21.8:8334=onion
# 51,21,<公開鍵>,51,ae
signetchallenge=5121<公開鍵>51ae
5.appスクリプトでbitcoinを開始。
cd ~/umbrel/scripts
./app start bitcoin
6.適当にディレクトリを作りgithubからbitcoindのソースをクローン。
7.bitcoindのバイナリをダウンロード、bitcoin-cliおよびbitcoin-utilを~/.local/binに置く。6.のソースからビルドしても良い。ビルド方法は自分で調べて。
8.bitcondにマイニング用のウォレットを作成。
alias bcli='docker exec -it bitcoin_bitcoind_1 bitcoin-cli -signet -rpcconnect=10.21.21.8 -rpcport=8332 -rpcuser=umbrel -rpcpassword=<パスワード>'
# ウォレットを作る。
bcli createwallet "mining" false true "" false false
# 秘密鍵をインポート
bcli importprivkey "<秘密鍵>"
RPCパスワードは以下で確認
cat ~/umbrel/.env | grep BITCOIN_RPC_PASS
9.ソースにあるbitcoin/contrib/signet/minerスクリプトを使ってマイニング
cd <ダウンロードしたディレクトリ>/bitcoin/contrib/signet
# 難易度の算出
./miner \
--cli="bitcoin-cli -signet -rpcconnect=10.21.21.8 -rpcport=8332 -rpcuser=umbrel -rpcpassword=<パスワード>" calibrate \
--grind-cmd="bitcoin-util grind" --seconds 30
★私の環境で30秒指定したら nbits=1d4271e7 と算出された。実際にこれで動かすと2分30になるけど...
# ジェネシスブロック生成
./miner \
--cli="bitcoin-cli -signet -rpcconnect=10.21.21.8 -rpcport=8332 -rpcuser=umbrel -rpcpassword=<パスワード>" generate \
--address <ビットコインアドレス> \
--grind-cmd="bitcoin-util grind" --nbits=1d4271e7 \
--set-block-time=$(date +%s)
# 継続的にマイニング
./miner \
--cli="bitcoin-cli -signet -rpcconnect=10.21.21.8 -rpcport=8332 -rpcuser=umbrel -rpcpassword=<パスワード>" generate \
--address <ビットコインアドレス> \
--grind-cmd="bitcoin-util grind" --nbits=1d4271e7 \
--ongoing
ここまでやればカスタムsignetでビットコインノードが稼働する。
electrs, mempool.spaceアプリを入れればグラフィカルに目視で確認できるようになるが、electrsにちょっとひと工夫必要。
1.bitcoindのdebug.logからマジックナンバーを確認
Signet derived magic (message start): XXXXXXXX
bitcoindの起動直後のログに上記のようなのがあるのでXXXXXXXXを控えておく。
2.electrsアプリをインストールし、appスクリプトで止める。
3.electrsのdocker-compose.ymlを編集してマジックナンバーを指定する。
ELECTRS_DB_DIRの直下に以下を追加。
ELECTRS_SIGNET_MAGIC: "XXXXXXXX"
4.appスクリプトで再開する。