Bitcoin Core
ここまでEthereumやSymbolをさわってきましたが、やはり基本はBitcoinということでこのブログの開始にあたり、環境を整えました。
bitcoin-cliを使っていろいろとテストしようと、最初はdockerとか使った簡単な(と思われる)やり方を試しましたが、情報が古かったりうまく動作しなかったため、やはりソースから実装することにしました。
環境) Ubuntu20.4/WSL/ Windows 11
git clone https://github.com/bitcoin/bitcoin.git
cd bitcoinsudo apt install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3
sudo apt install libevent-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev
./contrib/install_db4.sh
pwd
export BDB_PREFIX=’/home/k/work1/bitcoin/db4′
./autogen.sh
./configure BDB_LIBS=”-L${BDB_PREFIX}/lib” BDB_CFLAGS=”-I${BDB_PREFIX}/include” –disable-tests –disable-bench –without-gui –without-miniupnpc –with-utils –with-sqlite=yes –without-bdb
make
sudo make install
walletを作成するときにsqliteが使えるようにする必要があるため上記のようにconfigureオプションに加えました。
signetの起動
$ bitcoind -signet
Walletの作成
$ bitcoin-cli -signet createwallet testwallet
{
“name”: “testwallet”,
“warning”: “”
}
アドレス取得
$ bitcoin-cli -signet getnewaddress
tb1qw8k2tutz36qpfmtes2jny2wcmavh0mt2edvt96
情報取得
$ bitcoin-cli -signet getblockchaininfo
{
“chain”: “signet”,
“blocks”: 71428,
“headers”: 71428,
“bestblockhash”: “000000dc046a49f82b6bb65633ba4650e093f7fd2e7956efa65304c0a545fbdd”,
“difficulty”: 0.002700124394835933,
“time”: 1641274764,
“mediantime”: 1641272545,
“verificationprogress”: 0.9999990656266684,
“initialblockdownload”: false,
“chainwork”: “000000000000000000000000000000000000000000000000000000c98018dd0a”,
“size_on_disk”: 231372553,
“pruned”: false,
“softforks”: {
“bip34”: {
“type”: “buried”,
“active”: true,
“height”: 1 ………
以下サイトでも確認。
次はフォーセットからコインの取得です。
bitcoind では以下のようにtestwalletへの入金のトランザクションが表示され、(フォーセットのページのtxidの値 1e4645….)
2022-01-04T05:17:57Z UpdateTip: new best=000000b99486707164e3ebb0ae6e7a4ab0e63872b79c54a13fa716a3602a3b67 height=71424 version=0x20000000 log2_work=39.654561 tx=734111 date=’2022-01-04T05:17:56Z’ progress=1.000000 cache=0.0MiB(25txo)
2022-01-04T05:22:17Z [testwallet] AddToWallet 1e4645cdc4c9ce729f4b809668ea8ca16071a8b1b82db28372c9f18de3d97698 new
2022-01-04T05:22:30Z UpdateTip: new best=0000001f59a29230b5dc275f6b311ba506e1505d39f01c98ae5d59ada0155d31 height=71425 version=0x20000000 log2_work=39.654581 tx=734223 date=’2022-01-04T05:22:27Z’ progress=1.000000 cache=0.0MiB(192txo)
2022-01-04T05:22:30Z [testwallet] AddToWallet 1e4645cdc4c9ce729f4b809668ea8ca16071a8b1b82db28372c9f18de3d97698 update
コンソールでは、下記のように変化があることを確認できました。
$ bitcoin-cli -signet getbalance
0.00000000
$ bitcoin-cli -signet getbalance
0.01000000
結局、ソースからの構築の方が簡単でした。signetはブロック数がテストネットに比べて少ないので同期がはやく容量も少なく済むため使いやすいです。
まずは環境構築でした。
参考書籍) 「ビットコインとブロックチェーン(Mastering Bitcoin)」(NTT出版)