LoginSignup
1
2

More than 5 years have passed since last update.

MacにBitcoindをインストールしてテスト送金をしてみる

Posted at

目的

MacにBitcoindをインストールして、bitcoin-cliを使ってテストネット環境で送金をする

環境

macOS High Sierra 10.13.6
Homebrewインストール済み

作成

Bitcoindインストール

MACのコマンドラインツールのインストール

xcode-select --install

依存ライブラリの取得

brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode

Bitcoin Coreのソースコード取得

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

ビルド&インストール

./autogen.sh
./configure
make
sudo make install

インストールが完了すると、bitcoindおよびbitcoin-cliコマンドが使えるようになります。

$ bitcoind -version
Bitcoin Core Daemon version v0.16.99.0-0de7cc848

設定ファイル作成

Bitcoindでテストネットデータを取得するのに必要な設定ファイルを準備します。
設定ファイルの基本的設置場所は~/Library/Application Support/Bitcoin/になります。

デフォルトの設置場所にデータをブロックデータをダウンロードするようにしてもいいのですが、testnetでもデータが21.4GBほど(2018/11/5現在)あるので、今回は別のディレクトリに保存しようと思います。
例としてホームディレクトリ直下に作成しますが、必要に応じて外付けHDDなどにパスを変更してください。

mkdir ~/.bitcoind
cd ~/.bitcoind
touch bitcoin.conf
vi bitcoin.conf
bitcoin.conf
testnet=3
txindex=1

それぞれの設定値の意味は以下の通り
testnet:testnetモードで起動した時の接続先testnetバージョン番号
txindex:indexを作成して全てのトランザクションIDを参照可能にする

bitcoind、bitcoin-cliコマンド実行

以下のbitcoindコマンドを実行することでtestnetのデータを取得を開始します

bitcoind -datadir=/Users/ユーザー名/.bitcoind -daemon -testnet
※ユーザー名は適宜変更してください

それぞれのオプションの意味は以下の通り
-datadir:保存作ディレクトリ
-daemon:バックグラウンド実行状態で起動
-testnet:テストネット環境で実行

bitcoindが動いている状態になることでbitcoin-cliが使えるようになります。
以下がbitcoin-cliの基本形、これだけだと実行するコマンドが無いためなにも実行されません

bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet

それぞれのオプションの意味は以下の通り
-datadir:保存作ディレクトリ
-testnet:テストネット環境で実行

-datadirを設定している場合は毎回打ち込むのがめんどうなのでエイリアスを設定してしまうと楽になります。

alias btc-test="bitcoind -datadir=/Users/ユーザー名/.bitcoind -daemon -testnet"
alias btc-cli-test="bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet"

source ~/.bashrcで反映

bitcoin-cliの追加コマンド紹介

bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnetの後に続くコマンドをいくつが紹介します。

stop:bitcoindを停止します。
getblockchaininfo:ブロックの情報が表示されます。自分の場合これに| grep -e "blocks" -e "headers" -e "size_on_disk"をくっつけて、
「現在のブロック取得状態」「最大ブロック数」「データサイズ」を表示してブロックデータのダウンロード状態を調べたりしてます。
getnewaddress:アドレス作成します。
getbalance:ウォレット残高が確認できます。
sendtoaddress:ビットコインを送金することができます。
getrawtransaction:指定したトランザクションのhex値を表示します。
decoderawtransaction:指定したトランザクションのhex値から詳細を表示します。

testnetのビットコインの送受信

受信用アドレス作成

getnewaddressでアドレスを作成します。

$ bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet getnewaddress
2N54STfB94e9A5LN1ERgnmPySW6zk56MZWw

エイリアスをはった場合はbtc-cli-test getnewaddressとなります。

testnetのコイン取得

まず現時点での残高を確認します。getbalanceを使って残高を確認します。

$ bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet getbalance
0.29766122

テスト用でいくつか取得しているので、現時点では上記の量です。
作ったばかりの状態であればコインは0です。

では、コインを取得します。
こちらのサイトでtestnet3のコインをもらうことができます。
https://testnet.coinfaucet.eu/en/

アドレスを入力し、「Get bitcoins!」ボタンを押せば、テストコインを取得できます。

スクリーンショット 2018-11-05 21.10.16.png

スクリーンショット 2018-11-05 21.10.26.png

0.14910148コインもらえるようです。
数分後、トランザクションが確定されてから再度残高を確認します。

$ bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet getbalance
0.44676270

送られた分だけ増えてることがわかります。

トランザクションの確認

数分たつとブロック情報が確定されます。トランザクション情報の確認は以下のようにおこないます。
トランザクションIDは上記サイトでテスト送金した際に表示されます。
getrawtransactiondecoderawtransactionを使って取引データを確認します。

$ bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet getrawtransaction 2749c8613475b5dbfcf3a0a2bbf26bf3296a0fb169cc48de90a2c724d8174976
0200000000010161fa1e7a55cfed9d0faf0a3efac9c7dfd64fdf9cb79f538e1abf6eaf591a58d20100000017160014f541639ef189db0be5e83c0857a0e4878d3bebeffeffffff026a5f42e42300000017a9140808203a29bac7886d6e2e109a3c2b85c6b9340987c482e3000000000017a9148197584c3cbc3f2ef3b6c1f57d153c097e57297e8702483045022100a84c41de602e3e7858b98e7a9f3255668d99b3a0a47446a0f2125d57903a9de302206e5581eeea29386a3f73a9acf8e5d52f4f458fb9c13fc0264a45d4472e6ea20c012103ef1b2a59d57f9c5befb16426e6f752c19cea1072a19a84fd9a9e56f1c99d895b42011600

$ bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet decoderawtransaction 0200000000010161fa1e7a55cfed9d0faf0a3efac9c7dfd64fdf9cb79f538e1abf6eaf591a58d20100000017160014f541639ef189db0be5e83c0857a0e4878d3bebeffeffffff026a5f42e42300000017a9140808203a29bac7886d6e2e109a3c2b85c6b9340987c482e3000000000017a9148197584c3cbc3f2ef3b6c1f57d153c097e57297e8702483045022100a84c41de602e3e7858b98e7a9f3255668d99b3a0a47446a0f2125d57903a9de302206e5581eeea29386a3f73a9acf8e5d52f4f458fb9c13fc0264a45d4472e6ea20c012103ef1b2a59d57f9c5befb16426e6f752c19cea1072a19a84fd9a9e56f1c99d895b42011600
{
  "txid": "2749c8613475b5dbfcf3a0a2bbf26bf3296a0fb169cc48de90a2c724d8174976",
  "hash": "71438a82abe28aa672c233aa0865f391a93e57995051b91d8b8559b049d9d68d",
  "version": 2,
  "size": 248,
  "vsize": 166,
  "weight": 662,
  "locktime": 1442114,
  "vin": [
    {
      "txid": "d2581a59af6ebf1a8e539fb79cdf4fd6dfc7c9fa3e0aaf0f9dedcf557a1efa61",
      "vout": 1,
      "scriptSig": {
        "asm": "0014f541639ef189db0be5e83c0857a0e4878d3bebef",
        "hex": "160014f541639ef189db0be5e83c0857a0e4878d3bebef"
      },
      "txinwitness": [
        "3045022100a84c41de602e3e7858b98e7a9f3255668d99b3a0a47446a0f2125d57903a9de302206e5581eeea29386a3f73a9acf8e5d52f4f458fb9c13fc0264a45d4472e6ea20c01",
        "03ef1b2a59d57f9c5befb16426e6f752c19cea1072a19a84fd9a9e56f1c99d895b"
      ],
      "sequence": 4294967294
    }
  ],
  "vout": [
    {
      "value": 1541.53410410,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 0808203a29bac7886d6e2e109a3c2b85c6b93409 OP_EQUAL",
        "hex": "a9140808203a29bac7886d6e2e109a3c2b85c6b9340987",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2Msyh8R2qmkvwa5D1qWDnEfufrWuFsgebXB"
        ]
      }
    },
    {
      "value": 0.14910148,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_HASH160 8197584c3cbc3f2ef3b6c1f57d153c097e57297e OP_EQUAL",
        "hex": "a9148197584c3cbc3f2ef3b6c1f57d153c097e57297e87",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2N54STfB94e9A5LN1ERgnmPySW6zk56MZWw"
        ]
      }
    }
  ]
}

テスト送信

もうひとつの送り先になっていた「2Msyh8R2qmkvwa5D1qWDnEfufrWuFsgebXB」宛にコインを送ってみます

$ bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet sendtoaddress 2Msyh8R2qmkvwa5D1qWDnEfufrWuFsgebXB 0.01000000
45c37068286a6441419d5413ec5c15746f0752db8254f912966b2f3118dcc3c7

返り値としてトランザクションIDが返却されます。
このトランザクションIDをもとにトランザクション情報を確認してみます。

$ bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet getrawtransaction 45c37068286a6441419d5413ec5c15746f0752db8254f912966b2f3118dcc3c7
02000000000101ac7fa3f0bf0873cdb5ceed74773000a319a3fdbe169fe6fdd8fca8906861af5a00000000171600145b12e8893f903e9b6f2cb661476b91761d9b7039feffffff02beae93000000000017a914e9d9e509ddb0a6bb43928ce2dafaf11c97ec96c58740420f000000000017a9140808203a29bac7886d6e2e109a3c2b85c6b93409870247304402200e166794d473607c11a0a4dab3335922785e70a0a8c56aebbef5899d9d3453c502200bda32537f2edaf20d3bdf6cc12bcd3cb09e3e7a4c0873154166a46084f9b4a9012102968e23056c7d6d521a11a49af1cb945eff5dde929197747df233b6fcbcd2d04717011600

bitcoin-cli -datadir=/Users/ユーザー名/.bitcoind -testnet decoderawtransaction 02000000000101ac7fa3f0bf0873cdb5ceed74773000a319a3fdbe169fe6fdd8fca8906861af5a00000000171600145b12e8893f903e9b6f2cb661476b91761d9b7039feffffff02beae93000000000017a914e9d9e509ddb0a6bb43928ce2dafaf11c97ec96c58740420f000000000017a9140808203a29bac7886d6e2e109a3c2b85c6b93409870247304402200e166794d473607c11a0a4dab3335922785e70a0a8c56aebbef5899d9d3453c502200bda32537f2edaf20d3bdf6cc12bcd3cb09e3e7a4c0873154166a46084f9b4a9012102968e23056c7d6d521a11a49af1cb945eff5dde929197747df233b6fcbcd2d04717011600
{
  "txid": "45c37068286a6441419d5413ec5c15746f0752db8254f912966b2f3118dcc3c7",
  "hash": "12e248f3c0e581e1246bf2ef089276675e8b8fc0069a72952b08ba82d6996754",
  "version": 2,
  "size": 247,
  "vsize": 166,
  "weight": 661,
  "locktime": 1442071,
  "vin": [
    {
      "txid": "5aaf616890a8fcd8fde69f16befda319a300307774edceb5cd7308bff0a37fac",
      "vout": 0,
      "scriptSig": {
        "asm": "00145b12e8893f903e9b6f2cb661476b91761d9b7039",
        "hex": "1600145b12e8893f903e9b6f2cb661476b91761d9b7039"
      },
      "txinwitness": [
        "304402200e166794d473607c11a0a4dab3335922785e70a0a8c56aebbef5899d9d3453c502200bda32537f2edaf20d3bdf6cc12bcd3cb09e3e7a4c0873154166a46084f9b4a901",
        "02968e23056c7d6d521a11a49af1cb945eff5dde929197747df233b6fcbcd2d047"
      ],
      "sequence": 4294967294
    }
  ],
  "vout": [
    {
      "value": 0.09678526,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 e9d9e509ddb0a6bb43928ce2dafaf11c97ec96c5 OP_EQUAL",
        "hex": "a914e9d9e509ddb0a6bb43928ce2dafaf11c97ec96c587",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2NEZiTZvAkohprqhfK9zLkQYNAWtj2kbVzr"
        ]
      }
    },
    {
      "value": 0.01000000,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_HASH160 0808203a29bac7886d6e2e109a3c2b85c6b93409 OP_EQUAL",
        "hex": "a9140808203a29bac7886d6e2e109a3c2b85c6b9340987",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2Msyh8R2qmkvwa5D1qWDnEfufrWuFsgebXB"
        ]
      }
    }
  ]
}

これでテスト送信ができていることが確認できました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2