カスタムsignet Bitcoinの立て方

カスタムsignet Bitcoinの立て方

※この記事を書いた時の実行環境はUbuntu 20.04(x86-64)、Bitcoin Core v23.0

元ネタはここ

参考にしたのはここ

これらを参考にカスタムsignet(評価用ビットコイン)を立てる。
これを使わなくてもsignetを始められる。その場合はデフォルトsignet(グローバルsignetとも呼称)となる。faucetもある。
自分でカスタムsignetができれば承認時間も1block10分より短くできるし、自分がマイナーになるのでfaucetも不要。

1.Bitcoin Coreおよびカスタムsignet用マイニングソフトを用意する

Bitcoin Coreは普通にバイナリ版をダウンロードしてくれば良い。
ソースからビルドしてもいいけど。

カスタムsignet用マイニングソフトはbitcoin coreのソース一式に同梱される。
なのでgit cloneしてくればいい。

mkdir src
cd src
git clone https://github.com/bitcoin/bitcoin.git

contrib/signet/minerというパイソンスクリプトとtest/ディレクトリ一式があれば他は無くても動くっぽい。

2.signetchallengeで使用する公開鍵、およびその秘密鍵とビットコインアドレスを用意する

詳しくはここを見よ。

とりあえず公開鍵とその秘密鍵が必要。
ここで作るのが手っ取り早い。mainnet用に作るのは絶対NGだが評価用なのでそこはご愛嬌。
Coin種別を「BTC - Bitcoin Reg test」にしてニーモニック生成。
下の方をみると公開鍵など一式表示される。コピペしておく。

3.カスタムsignet用Bitcoin Coreを立ち上げる

bitcoindやbitcoin-cli、bitcoin-qtがあるディレクトリへパスを通す。
ホームディレクトリに.bitcoinというディレクトリを作り、さらにsignetというディレクトリを作る。そこにbitcoin.confファイルを作る。
そのbitcoin.confファイルを以下のように編集する。

signet=1

[signet]
listen=1
server=1
rpcuser=bitcoiner
rpcpassword=donttrustverify
rpcport     =38332
rpcbind     =0.0.0.0

# 51,21,<pub_key>,51,ae
signetchallenge=5121xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx51ae

上記コメントの通りxxxxの箇所には先程作った公開鍵に置き換えること。

出来たら以下コマンドでBitcoin Coreを起動する。QTつまりGUI版となる。(CUI版はとっつきづらいんだもん)

bitcoin-qt -conf=$HOME/.bitcoin/signet/bitcoin.conf

起動したらウォレットを作る。Descripterのチェックは外す。メニューのウィンドウ→コンソールを選ぶ。importprivkeyでさっき作った秘密鍵をインポートする。

importprivkey <秘密鍵>

メインウィンドウに戻り、受取ボタンを押してマイニングしたコインの受取用アドレスを作る。Base58(Legacy)でも良いしBech32(Segwit)でも良い。

4.カスタムsignetでマイニングする

先程githubからクローンしたcontrib/signetディレクトリに移動する。以下のコマンドを実行して採掘難易度を算出する。--seconds ?? で指定秒間隔となるように難易度を計算させる。

./miner \
--cli="bitcoin-cli -datadir=$HOME/.bitcoin/signet" \
calibrate \
--grind-cmd="bitcoin-util grind" \
--seconds 30

上記例だと30秒間隔となる難易度(正確にはbits)を算出させたが、実際にやってみると2分30秒だった。微調整は・・がんばれ

以下のコマンドでマイニングを始める。
まずはジェネシスブロックを作る。

./miner \
--cli="bitcoin-cli -datadir=$HOME/.bitcoin/signet" \
generate \
--address <受取アドレス> \
--grind-cmd="bitcoin-util grind" \
--nbits=<さっき算出した難易度> \
--set-block-time=$(date +%s)

--set-block-time=$(date +%s)でジェネシスブロックのタイムがこのコマンド実行した時になる。date -d '-1 month' +%sとやると現時刻から1ヶ月前にすることができる。

継続的にマイニングさせたいなら以下コマンド

./miner \
--cli="bitcoin-cli -datadir=$HOME/.bitcoin/signet" \
generate \
--address <受取アドレス> \
--grind-cmd="bitcoin-util grind" \
--nbits=<さっき算出した難易度> \
--ongoing

仮に1ヶ月前をジェネシスブロックの時刻とすると、現時刻まで追いつくのにCPUパワーをフルに使ってマイニングするので注意!追いつくとほぼアイドリング状態まで落ち着く。マイニングしたコインは100ブロック経過すれば利用可能になる。承認間隔にも依るが1週間前でも十分かもしれない。

【メモ】
$HOME/.bitcoin/signet ディレクトリにブロックチェーンやウォレットのデータ一式がある。
今作ったブロックチェーンが気に入らないならbitcoin.conf以外のデータを削除し、上記手順の秘密鍵のインポートからやればよい。

Remaining : 2 characters / 0 images
300

Sign up / Continue after login

Related stories

Writer

甘いもの大好きメタボ猫。マイペースなのはしょうがない。

Share

Popular stories

【Umbrel】BlueWallet Lightning & tailscaleで便利で快適なLightningウォレットを作ろう!

273

【Umbrel】LNURLが使いたいから自分で環境つくってみた

146

【Umbrel】LNDのtls.certってどんな時使うの?

102