この資料について
OSC2021 Online/Fallの資料になります。
↓アーカイブ動画はこちら
自己紹介
小渕 周(こぶち しゅう)
システムエンジニア、暗号資産事業者向けウォレットベンダーを経て、現在、暗号資産交換業者のブロックチェーンエンジニア。
Twitter:
https://twitter.com/shu_kob
Facebook:
https://www.facebook.com/shu.kobuchi
コミュニティの紹介
ビットコインをはじめとする暗号通貨(暗号資産・仮想通貨)、ブロックチェーンの技術勉強会
月1〜2回、平日の19:30〜オンライン勉強会を開催中!
お気軽にご参加ください
次回は10/29(金)19:30〜、Symbol(XYM)について扱います!(connpass公開準備中)
11/13(土)KOF(Kansai Open Forum)<オンライン>でもセミナー発表予定!
ビットコインとは
過去のOSCで発表した資料をご覧ください
初心者のためのビットコイン送金体験
動画
資料
ビットコイン・ブロックチェーン入門
動画
資料
Signetとは
ビットコインとか勉強会第34回
動画
※アーカイブ動画はありません
### 資料
ビットコインとか勉強会第52回
動画
資料
ハンズオン
Docker
Dockerをインストールしてください
ソースコードをgit clone
git clone https://github.com/crypto-users-jp/signet-platform
cd signet-platform/fullnode
Dockerコンテナをビルド
./build.sh
起動
ビルドしたら起動します
./run.sh
bitcoin-cliの操作準備
別のターミナルを開き、Dockerの中を操作するためコンテナのIDを取得
docker ps
CONTAINER IDを取得し、変数に設定
ID=XXX
XXXはCONTAINER ID
起動中のコンテナが一つだけの場合は以下で取得
ID=$(docker ps -q)
Dockerコンテナ内でコマンドを打ちやすくするためにエイリアスを設定
alias bcli="docker exec $ID bitcoin-cli"
bitcoindの状態を確認
bcli getblockchaininfo
{
"chain": "signet",
"blocks": 61016,
"headers": 61016,
"bestblockhash": "00000026773e38138fa574ee17d5d6a4c17506d8058b480eae2ce5f4a8ea7967",
"difficulty": 0.002848325401108194,
"mediantime": 1634949922,
"verificationprogress": 0.9999994641678087,
"initialblockdownload": false,
"chainwork": "000000000000000000000000000000000000000000000000000000ac2a0fe5bb",
"size_on_disk": 193311268,
"pruned": false,
"softforks": {
"bip34": {
"type": "buried",
"active": true,
"height": 1
},
"bip66": {
"type": "buried",
"active": true,
"height": 1
},
"bip65": {
"type": "buried",
"active": true,
"height": 1
},
"csv": {
"type": "buried",
"active": true,
"height": 1
},
"segwit": {
"type": "buried",
"active": true,
"height": 1
},
"taproot": {
"type": "bip9",
"bip9": {
"status": "active",
"start_time": -1,
"timeout": 9223372036854775807,
"since": 0,
"min_activation_height": 0
},
"height": 0,
"active": true
}
},
"warnings": ""
}
参考 Dockerの中に入る場合は、別のターミナルを開き下記のコマンド
ID=$(docker ps -q)
docker exec -i -t $ID bash
Docker内で下記コマンドを打つ
bitcoin-cli getblockchaininfo
同期の確認
bcli getblockchaininfo
で、"blocks"と"headers"のブロック高が一致すれば最新のブロックに追いつけています
Blockchain Explorerはブロックチェーンの状態を確認できるWebサイトです。
Faucetでコインをもらう
ウォレットを作成
bcli createwallet "default"
アドレスを発行
bcli getnewaddress
例
tb1qe5mcekhlg3jgyultyprkz55t2x3870sg70np8f
得たアドレスと金額を0.001-0.1sBTCの範囲で入力し、キャプチャを入力したらSendを押して入手
入手できたら、薄緑背景のところにトランザクション(TX)リンクが出てくるので押下
ExplorerでTXの情報を見ることができます
※入手してからTXのページが出るまでしばらく時間がかかる場合があります
bitcoin.confの設定
configの設定は、bitcoin coreが停止しているときに行ってください
bcli stop
cd ~/docker-signet/
vi bitcoin.conf
wallet=default
を一番下の行に追記
再び起動
cd signet-platform/fullnode
./run.sh
コンテナを再起動するとコンテナIDが変わるのでIDの再設定が必要です
ID=$(docker ps -q)
あるいは(XXXはCONTAINER ID)
docker ps
ID=XXX
alias bcli="docker exec $ID bitcoin-cli"
bcli getblockchaininfo
トランザクション情報の取得
bcli getrawtransaction 598edd5425c6be72fa5d77baf6af8cbb22d5144bec263ce30ecb61156d57ab1f
02000000000101a974c186ca6f11fe92c6f72ee0511a8c8f877aa4979f166b56ea839540de2c490000000000feffffff028096980000000000160014cd378cdaff44648273eb204761528b51a27f3e081f7e23fa5a060000160014cca38883afe536ddfca2540dcdd23f743e413fcd0247304402200f6f388e2016d7422c72a1be5181be505748173dba4b095b09d057f97719883c0220463ff178983bcb48334dca4dd918aefb3ef25ea96e741d1a135b697fcbc130a5012103357ca314f0abf320fde1d1a9a291c557611a3cfec9a81ac9dd87710943389f2a5bee0000
bcli decoderawtransaction 02000000000101a974c186ca6f11fe92c6f72ee0511a8c8f877aa4979f166b56ea839540de2c490000000000feffffff028096980000000000160014cd378cdaff44648273eb204761528b51a27f3e081f7e23fa5a060000160014cca38883afe536ddfca2540dcdd23f743e413fcd0247304402200f6f388e2016d7422c72a1be5181be505748173dba4b095b09d057f97719883c0220463ff178983bcb48334dca4dd918aefb3ef25ea96e741d1a135b697fcbc130a5012103357ca314f0abf320fde1d1a9a291c557611a3cfec9a81ac9dd87710943389f2a5bee0000
{
"txid": "598edd5425c6be72fa5d77baf6af8cbb22d5144bec263ce30ecb61156d57ab1f",
"hash": "2a4441e290a2489496567a8d7848a8ddfa3b1d2666723eb22b51b5a7fe98046b",
"version": 2,
"size": 222,
"vsize": 141,
"weight": 561,
"locktime": 61019,
"vin": [
{
"txid": "492cde409583ea566b169f97a47a878f8c1a51e02ef7c692fe116fca86c174a9",
"vout": 0,
"scriptSig": {
"asm": "",
"hex": ""
},
"txinwitness": [
"304402200f6f388e2016d7422c72a1be5181be505748173dba4b095b09d057f97719883c0220463ff178983bcb48334dca4dd918aefb3ef25ea96e741d1a135b697fcbc130a501",
"03357ca314f0abf320fde1d1a9a291c557611a3cfec9a81ac9dd87710943389f2a"
],
"sequence": 4294967294
}
],
"vout": [
{
"value": 0.10000000,
"n": 0,
"scriptPubKey": {
"asm": "0 cd378cdaff44648273eb204761528b51a27f3e08",
"hex": "0014cd378cdaff44648273eb204761528b51a27f3e08",
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"tb1qe5mcekhlg3jgyultyprkz55t2x3870sg70np8f"
]
}
},
{
"value": 69878.13453343,
"n": 1,
"scriptPubKey": {
"asm": "0 cca38883afe536ddfca2540dcdd23f743e413fcd",
"hex": "0014cca38883afe536ddfca2540dcdd23f743e413fcd",
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"tb1qej3c3qa0u5mdml9z2sxum53lwslyz07dc8evtr"
]
}
}
]
}
Bitcoin Coreで送金
bcli getnewaddress
tb1ql7a0647gu0af0dwgmdawrgqk5znkemcnafphtg
bcli getbalance
0.10000000
発行したアドレスに残高範囲内で送金
bcli sendtoaddress tb1ql7a0647gu0af0dwgmdawrgqk5znkemcnafphtg 0.01
e342f6c6c6530f2e08488b77392efe80fbd31d97ae2792da6993b9c7f1a93204
bcli getrawtrnsaction e342f6c6c6530f2e08488b77392efe80fbd31d97ae2792da6993b9c7f1a93204
020000000001011fab576d1561cb0ee33c26ec4b14d522bb8caff6ba775dfa72bec62554dd8e590000000000feffffff028953890000000000160014f0a4f3bb5e488459461e49eb5645574b7286dc0f40420f0000000000160014ffbafd57c8e3fa97b5c8db7ae1a016a0a76cef1302473044022043519f07c7956e14aee503b7e1a5ab0d93a0fe35d8fa2446adc54498aff633ed022056a9d5abf7c35c17261b97f324a5bf8bfbf6b2c8769360e01809eaef0b37b66e0121035bfc648d1794eb548e45016449d801ce5c0121c58ef654b3f10725a11d839ffd5eee0000
bcli decoderawtransaction 020000000001011fab576d1561cb0ee33c26ec4b14d522bb8caff6ba775dfa72bec62554dd8e590000000000feffffff028953890000000000160014f0a4f3bb5e488459461e49eb5645574b7286dc0f40420f0000000000160014ffbafd57c8e3fa97b5c8db7ae1a016a0a76cef1302473044022043519f07c7956e14aee503b7e1a5ab0d93a0fe35d8fa2446adc54498aff633ed022056a9d5abf7c35c17261b97f324a5bf8bfbf6b2c8769360e01809eaef0b37b66e0121035bfc648d1794eb548e45016449d801ce5c0121c58ef654b3f10725a11d839ffd5eee0000
{
"txid": "e342f6c6c6530f2e08488b77392efe80fbd31d97ae2792da6993b9c7f1a93204",
"hash": "e7a9cc630fbb0edf208bfaa54c4f3989d4b452dd3af0adbd6128b77b2f9f052c",
"version": 2,
"size": 222,
"vsize": 141,
"weight": 561,
"locktime": 61022,
"vin": [
{
"txid": "598edd5425c6be72fa5d77baf6af8cbb22d5144bec263ce30ecb61156d57ab1f",
"vout": 0,
"scriptSig": {
"asm": "",
"hex": ""
},
"txinwitness": [
"3044022043519f07c7956e14aee503b7e1a5ab0d93a0fe35d8fa2446adc54498aff633ed022056a9d5abf7c35c17261b97f324a5bf8bfbf6b2c8769360e01809eaef0b37b66e01",
"035bfc648d1794eb548e45016449d801ce5c0121c58ef654b3f10725a11d839ffd"
],
"sequence": 4294967294
}
],
"vout": [
{
"value": 0.08999817,
"n": 0,
"scriptPubKey": {
"asm": "0 f0a4f3bb5e488459461e49eb5645574b7286dc0f",
"hex": "0014f0a4f3bb5e488459461e49eb5645574b7286dc0f",
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"tb1q7zj08w67fzz9j3s7f844v32hfdegdhq03wj6ey"
]
}
},
{
"value": 0.01000000,
"n": 1,
"scriptPubKey": {
"asm": "0 ffbafd57c8e3fa97b5c8db7ae1a016a0a76cef13",
"hex": "0014ffbafd57c8e3fa97b5c8db7ae1a016a0a76cef13",
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"tb1ql7a0647gu0af0dwgmdawrgqk5znkemcnafphtg"
]
}
}
]
}
help
コマンドの一覧を見ます
bcli help
== Blockchain ==
getbestblockhash
getblock "blockhash" ( verbosity )
getblockchaininfo
getblockcount
helpコマンドの引数にコマンド名を取ることで詳細な説明が見られます
bcli help getblock