Daily Archive2022-01-04

Bitcoin Core

ここまでEthereumやSymbolをさわってきましたが、やはり基本はBitcoinということでこのブログの開始にあたり、環境を整えました。

bitcoin-cliを使っていろいろとテストしようと、最初はdockerとか使った簡単な(と思われる)やり方を試しましたが、情報が古かったりうまく動作しなかったため、やはりソースから実装することにしました。

参考) [bitcoin]自分のsignetを立てよう

環境) Ubuntu20.4/WSL/ Windows 11

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

sudo 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出版)