前提
- Windows 10 (64bit)
- bitcoind 0.15.1 (regtest)
- libbitcoin explorer
- segwitなし
- regtest
- コマンドプロンプト
ディレクトリ構成
<root>
└─bitcoin-0.15.1
├─bin
├─data
│ └─regtest
│ ├─blocks
│ │ └─index
│ ├─chainstate
│ └─database
├─include
├─lib
└─share
└─man
└─man1
準備
bitcoind
ダウンロード
bitcoin-0.15.1-win64.zipをダウンロード。
解凍する。
起動
コマンドプロンプトを立ち上げる。
> cd bitcoin-0.15.1
> mkdir data
> cd bin
> bitcoind -datadir="..\data" -regtest -printtoconsole -rpcuser=<user> -rpcpassword=<password>
<user>
と<password>
の箇所は何か入れてください。
コマンド確認
使えるコマンドが羅列されるか確認。
> bitcoin-cli -regtest -rpcuser=<user> -rpcpassword=<password> help
== Blockchain ==
getbestblockhash
getblock "blockhash" ( verbosity )
getblockchaininfo
...
以降、-regtest -rpcuser=<user> -rpcpassword=<password>
は記載を省略します。実際のコマンド投入のときは付けてください。それか、aliasを設定するか、bitcoin.confを使うとよいかもしれません。
bitcoin.confを使う場合は、以下のファイルに以下のように記入します。
> notepad.exe %AppData%\Bitcoin\bitcoin.conf
rpcuser=<user>
rpcpassword=<password>
regtest=1
マイニング
100承認ないと、マイニング報酬は使用可能になりません。なので101ブロックを事前にマイニングします。
> bitcoin-cli generate 101
> bitcoin-cli getbalance
50.00000000
libbitoin explorer
ダウンロード
bx-windows-x64-icu.exe
をダウンロード
起動
コマンドプロンプトを立ち上げます。
bx-windows-x64-icu.exe
があるフォルダに移動してください。
使えるコマンドが羅列されるか確認。
> bx-windows-x64-icu.exe help
Usage: bx COMMAND [--help]
Version: 3.2.0
Info: The bx commands are:
address-decode
address-embed
address-encode
...
UTXO
bitcoindが保有している秘密鍵で使えるUTXOを表示します。
> bitcoin-cli listunspent
[
{
"txid": "e9f47fc69c82f798232f267e8afedb274145486b788e98a9d685abf16e62cad9",
"vout": 0,
"address": "mgN7gJqdgvP7wzMUAGyy581jtWyHRucA7G",
"scriptPubKey": "2102d519802343386e8c73c7c6395b5d2af39ef03507cacd290c49ac1bd7162c6c9fac",
"amount": 50.00000000,
"confirmations": 101,
"spendable": true,
"solvable": true,
"safe": true
}
]
mgN7gJqdgvP7wzMUAGyy581jtWyHRucA7G
に50BTCあるようです。
ちなみに、このアドレスの詳しい情報を見るには以下のようにします。
> bitcoin-cli validateaddress mgN7gJqdgvP7wzMUAGyy581jtWyHRucA7G
{
"isvalid": true,
"address": "mgN7gJqdgvP7wzMUAGyy581jtWyHRucA7G",
"scriptPubKey": "76a914094c371a210733be6e977ece1d621ce735d38f8f88ac",
"ismine": true,
"iswatchonly": false,
"isscript": false,
"pubkey": "02d519802343386e8c73c7c6395b5d2af39ef03507cacd290c49ac1bd7162c6c9f",
"iscompressed": true,
"timestamp": 1527927140,
"hdkeypath": "m/0'/0'/1'",
"hdmasterkeyid": "4e2f089e0447ed1214e127a6dd65bcec6a85aa8b"
}
このアドレスの秘密鍵を表示するには以下のようにします。ただし、ウォレットが秘密鍵を持っていた場合にのみ表示されます。
> bitcoin-cli dumpprivkey mgN7gJqdgvP7wzMUAGyy581jtWyHRucA7G
cMiGJFYmKcWmmXAjgv294X8AtgxV2oXk4owP6WeYSJ8xVwFnWUqr
wif形式で表示されます。16進数に変換するには以下のようにします。
> bx-windows-x64-icu.exe wif-to-ec cMiGJFYmKcWmmXAjgv294X8AtgxV2oXk4owP6WeYSJ8xVwFnWUqr
03e401f846cf5060ca812f3dd96109decf0193977be31dcbf07b3c055cb013a3
送り先
> bitcoin-cli getnewaddress
migTFvPH42S3ho4q8axgtzqvxfhMb6eyX3
トランザクション作成
先ほどの送り先に1BTC、おつりとして48.99BTCを設定します。残りの0.01BTCは手数料となります。
> bitcoin-cli createrawtransaction ^
"[{\"txid\":\"e9f47fc69c82f798232f267e8afedb274145486b788e98a9d685abf16e62cad9\",\"vout\":0}]" ^
"{\"migTFvPH42S3ho4q8axgtzqvxfhMb6eyX3\":1, \"mgN7gJqdgvP7wzMUAGyy581jtWyHRucA7G\":48.99}"
0200000001d9ca626ef1ab85d6a9988e786b48454127dbfe8a7e262f2398f7829cc67ff4e90000000000ffffffff0200e1f505000000001976a91422b44c5ce463fe601d106ed03a257d016c5ba94a88acc0ce0024010000001976a914094c371a210733be6e977ece1d621ce735d38f8f88ac00000000
トランザクション署名
ウォレットが秘密鍵を持っている場合は、対応した秘密鍵で署名してくれます。
> bitcoin-cli signrawtransaction 0200000001d9ca626ef1ab85d6a9988e786b48454127dbfe8a7e262f2398f7829cc67ff4e90000000000ffffffff0200e1f505000000001976a91422b44c5ce463fe601d106ed03a257d016c5ba94a88acc0ce0024010000001976a914094c371a210733be6e977ece1d621ce735d38f8f88ac00000000
{
"hex": "0200000001d9ca626ef1ab85d6a9988e786b48454127dbfe8a7e262f2398f7829cc67ff4e90000000049483045022100ecd7ce8052ec7eb26f8ea5a5403db24c1df372faab8074f73304c951663e09910220699477fd659b931f2d441b4bebffc66c2171cc9b0d164642b9f9df0e10dd8a5c01ffffffff0200e1f505000000001976a91422b44c5ce463fe601d106ed03a257d016c5ba94a88acc0ce0024010000001976a914094c371a210733be6e977ece1d621ce735d38f8f88ac00000000",
"complete": true
}
持っていない場合は、UTXOの情報と秘密鍵を指定する必要があります。
> bitcoin-cli signrawtransaction 0200000001d9ca626ef1ab85d6a9988e786b48454127dbfe8a7e262f2398f7829cc67ff4e90000000000ffffffff0200e1f505000000001976a91422b44c5ce463fe601d106ed03a257d016c5ba94a88acc0ce0024010000001976a914094c371a210733be6e977ece1d621ce735d38f8f88ac00000000 ^
"[{\"txid\":\"e9f47fc69c82f798232f267e8afedb274145486b788e98a9d685abf16e62cad9\",\"vout\":0,\"scriptPubKey\":\"2102d519802343386e8c73c7c6395b5d2af39ef03507cacd290c49ac1bd7162c6c9fac\",\"amount\":50}]" ^
"[\"cMiGJFYmKcWmmXAjgv294X8AtgxV2oXk4owP6WeYSJ8xVwFnWUqr\"]"
{
"hex": "0200000001d9ca626ef1ab85d6a9988e786b48454127dbfe8a7e262f2398f7829cc67ff4e90000000049483045022100ecd7ce8052ec7eb26f8ea5a5403db24c1df372faab8074f73304c951663e09910220699477fd659b931f2d441b4bebffc66c2171cc9b0d164642b9f9df0e10dd8a5c01ffffffff0200e1f505000000001976a91422b44c5ce463fe601d106ed03a257d016c5ba94a88acc0ce0024010000001976a914094c371a210733be6e977ece1d621ce735d38f8f88ac00000000",
"complete": true
}
トランザクション送信
成功すると、トランザクションIDが返ってきます。
> bitcoin-cli sendrawtransaction 0200000001d9ca626ef1ab85d6a9988e786b48454127dbfe8a7e262f2398f7829cc67ff4e90000000049483045022100ecd7ce8052ec7eb26f8ea5a5403db24c1df372faab8074f73304c951663e09910220699477fd659b931f2d441b4bebffc66c2171cc9b0d164642b9f9df0e10dd8a5c01ffffffff0200e1f505000000001976a91422b44c5ce463fe601d106ed03a257d016c5ba94a88acc0ce0024010000001976a914094c371a210733be6e977ece1d621ce735d38f8f88ac00000000
5a94d7dd97b8c1547b9d50f3a3e5ebf0deb8471202faada59e4ac90fee31ef09
マイニング
送ったトランザクションをブロックに取り込みます。
> bitcoin-cli generate 1
[
"0cc6baf17028e7641c40b4e1cbf92635c827e2b8d8d8a19fd59af16933a8e2f4"
]
トランザクション確認
先ほどマイニングしたブロックを確認します。トランザクションが入っているのが分かります。
> bitcoin-cli getblock 0cc6baf17028e7641c40b4e1cbf92635c827e2b8d8d8a19fd59af16933a8e2f4
{
"hash": "0cc6baf17028e7641c40b4e1cbf92635c827e2b8d8d8a19fd59af16933a8e2f4",
"confirmations": 1,
"strippedsize": 419,
"size": 419,
"weight": 1676,
"height": 105,
"version": 536870912,
"versionHex": "20000000",
"merkleroot": "c9a115a84518e8bd69b757e59704db39c3843df4904c440fc99c9534a9e1bb45",
"tx": [
"1ca6d235d8962d8f4e96803b545ea988789f84df1b2256d63bc3e0f72661fb25",
"5a94d7dd97b8c1547b9d50f3a3e5ebf0deb8471202faada59e4ac90fee31ef09"
],
"time": 1527931653,
"mediantime": 1527927165,
"nonce": 0,
"bits": "207fffff",
"difficulty": 4.656542373906925e-010,
"chainwork": "00000000000000000000000000000000000000000000000000000000000000d4",
"previousblockhash": "44520f6c0ff71be72df52d1da16284009c1d9acd50c0b66dff0db92fc890abdf"
}
先ほど送ったトランザクションを確認します。1承認になっていることが確認できます。また、detailsには、ウォレットが持っているアカウントに関するものが表示されるようです。
> bitcoin-cli gettransaction 5a94d7dd97b8c1547b9d50f3a3e5ebf0deb8471202faada59e4ac90fee31ef09
{
"amount": 0.00000000,
"fee": -0.01000000,
"confirmations": 1,
"blockhash": "0cc6baf17028e7641c40b4e1cbf92635c827e2b8d8d8a19fd59af16933a8e2f4",
"blockindex": 1,
"blocktime": 1527931653,
"txid": "5a94d7dd97b8c1547b9d50f3a3e5ebf0deb8471202faada59e4ac90fee31ef09",
"walletconflicts": [
],
"time": 1527931624,
"timereceived": 1527931624,
"bip125-replaceable": "no",
"details": [
{
"account": "",
"address": "migTFvPH42S3ho4q8axgtzqvxfhMb6eyX3",
"category": "send",
"amount": -1.00000000,
"label": "",
"vout": 0,
"fee": -0.01000000,
"abandoned": false
},
{
"account": "",
"address": "migTFvPH42S3ho4q8axgtzqvxfhMb6eyX3",
"category": "receive",
"amount": 1.00000000,
"label": "",
"vout": 0
}
],
"hex": "0200000001d9ca626ef1ab85d6a9988e786b48454127dbfe8a7e262f2398f7829cc67ff4e90000000049483045022100ecd7ce8052ec7eb26f8ea5a5403db24c1df372faab8074f73304c951663e09910220699477fd659b931f2d441b4bebffc66c2171cc9b0d164642b9f9df0e10dd8a5c01ffffffff0200e1f505000000001976a91422b44c5ce463fe601d106ed03a257d016c5ba94a88acc0ce0024010000001976a914094c371a210733be6e977ece1d621ce735d38f8f88ac00000000"
}