bitcoinの基本と体験¨...目標 1. bitcoin-cliの体験 2. bitcoin全般の話...
TRANSCRIPT
![Page 1: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/1.jpg)
Bitcoinの基本と体験
@ DG Lab - Anditto Heristyo
© 2017 Digital Garage. All rights reserved. Redistribution or public display not permitted without written permission from Digital Garage.
![Page 2: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/2.jpg)
Agenda
1. 目標
2. BC2のBitcoin3. Bitcoin-cliの体験
4. Bitcoinの概要
2
![Page 3: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/3.jpg)
このセッションの目標
3
![Page 4: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/4.jpg)
目標
1. Bitcoin-cliの体験
2. Bitcoin全般の話
全般的な話ですので、今は全部わからなくても大丈夫です。
4
![Page 5: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/5.jpg)
事前チェック
- ソースコードはダウンロードしましたか?
- ちゃんとコンパイル出来ましたか?
- まだ問題がある方は、はやめに声をかけてください。
完了しなかったら続けないよ。。。
本当に困っている人はスタッフに声をかけてください。5
![Page 6: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/6.jpg)
BC2のBitcoinバージョン
6
![Page 7: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/7.jpg)
ワークショップで使うBitcoin
https://www.github.com/dgarage/bc2
- Bitcoin Coreのフォークです。
- 中身はほぼ同じですが。。。
7
![Page 8: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/8.jpg)
BC2バージョン
BitcoinのP2Pネットワーク → プライベートネットワーク
マジックナンバーが異なる
マイニングは難しい → 簡単に設定した
(10分ごとに生成する) → 1分にする
アドレスの頭は1または3 → BまたはCになる
8
![Page 9: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/9.jpg)
BC2とBitcoin Core
Bitcoin Coreネットワーク
BC2
全く別のネットワーク
9
![Page 10: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/10.jpg)
注意点
操作は本物のbitcoindおよび
bitcoin-cliと全く同じです。
両方持っている人は間違わないように、
ご注意をお願いします。
10
![Page 11: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/11.jpg)
早速始めましょう!
まず、ターミナルを開いて、bitcoind を実行します。
$ cd ~/bc2/src
$ ./bitcoind -printtoconsole
あるいは:
$ ./bitcoind -daemon
11
![Page 12: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/12.jpg)
最初の出力
- ウォレット(秘密鍵)の作成
- ネットワークに繋ぐ
- ブロック情報の更新
12
![Page 13: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/13.jpg)
確認
別のウインドウで:
$ ./bitcoin-cli getblockchaininfo
13
![Page 14: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/14.jpg)
(BC2)Bitcoinをゲットしましょう!
アドレスを作成します:
$ ./bitcoin-cli getnewaddress
14
![Page 15: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/15.jpg)
Bitcoinをゲットしましょう!
出力されたアドレスはここに入力してください:
http://172.16.120.201:8888/faucet.html
出力された TxID をどこかに保存してください。
残高のチェック:
$ ./bitcoin-cli getbalance
→ 何が出ましたか? 15
![Page 16: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/16.jpg)
Mempool
トランザクション(Tx)が有効であれば、Mempool に入れます。
そして、ノードに送信します。
$ ./bitcoin-cli getrawmempool
16
![Page 17: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/17.jpg)
マイニングします
$ ./bitcoin-cli generate 1
(マイニングは後ほど説明します)
$ ./bitcoin-cli generate 1 50000000
もう一度やってみると:
$ ./bitcoin-cli getbalance
17
![Page 18: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/18.jpg)
BTCを送ってみよう
もう一度アドレスを作成して、グループ内の人にアドレスを聞い
て、送ってみてください。
一番シンプルなやり方:
$ ./bitcoin-cli sendtoaddress <アドレス> <金額>
18
![Page 20: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/20.jpg)
データの信用性
結局自分のデータしか信用できません。
でも、他の人に頼らなくて、自分のデータがあるからこそ 分散台
帳技術(Distributed Ledger Technology )には価値がありま
す。
20
![Page 21: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/21.jpg)
bitcoin-cliのコマンド
$ ./bitcoin-cli help
$ ./bitcoin-cli help <コマンド>
https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
注意点:
ウォレットの”account”系のコマンドはバグっています。
21
![Page 22: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/22.jpg)
Bitcoinの概要
22
![Page 23: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/23.jpg)
3つのネットワーク
23
![Page 24: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/24.jpg)
Bitcoinのネットワーク
Peer-to-Peer (P2P) Icon by Creative StallFrom Noun Project 24
![Page 25: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/25.jpg)
3つのネットワーク
1. Mainnet - メインネットワーク
$ bitcoin-cli <コマンド>
注意点
Mainnetはリアルなお金なので、気をつけてください。
25
![Page 26: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/26.jpg)
3つのネットワーク
2. Testnet - テストネットワーク
$ bitcoin-cli -testnet <コマンド>
- 機能などは Mainnet とほぼ同じ。
- マイニングの難しさは低く設定されている。
- BTC は価値が無い。(だから価値がある)
- よく壊れている。
26
![Page 27: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/27.jpg)
3つのネットワーク
3. Regtest - Regression Test用のネットワーク
$ bitcoin-cli -regtest <コマンド>
- 自分のローカル環境のみ。
- 自分でマイニングしないといけない。
27
![Page 28: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/28.jpg)
ブロックチェーンの中身
28
![Page 29: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/29.jpg)
ブロックチェーン
ブロック44121
ブロック44122
ブロック44123
もっと詳しく見よう
29
![Page 30: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/30.jpg)
ブロックの中身
マジックナンバー4 bytes
ブロックサイズ4 bytes
ブロック ヘッダー80 bytes
トランザクションの数1-9 bytes
全トランザクションのデータ
もっと詳しく見よう
$ ./bitcoin-cli getbestblockhash
$ ./bitcoin-cli getblock 30
![Page 31: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/31.jpg)
ブロックのヘッダー
バージョン
4 bytes
hashPrevBlock
前ブロックヘッダーの256-bit ハッシュ
32 bytes
hashMerkleRoot
トランザクションデータのMerkleRoot
32 bytes
タイムスタンプ4 bytes
Bits
ターゲット(難しさ)
4 bytes
Nonce
32-bitの数値
4 bytes
$ ./bitcoin-cli getbestblockhash
$ ./bitcoin-cli getblockheader
31
![Page 32: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/32.jpg)
Merkle Root
https://ja.wikipedia.org/wiki/ハッシュ木
Tx 1 Tx 2 Tx 3 Tx 4
32
![Page 33: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/33.jpg)
マイニング
33
![Page 34: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/34.jpg)
マイニング
Bitcoin Coreの場合、自分の Regtest ネットワー
クであれば、先ほどと同じく:
$ ./bitcoin-cli -regtest generate 1
34
![Page 35: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/35.jpg)
ASIC マイニング
Application Specific Integrated Circuit
Bitcoin(あるいは他のコイン)のためだけ
のIC。
例えば、Antminer S9は 14TH/s。
一方、現在私たちのネットワークは:
$ ./bitcoin-cli getmininginfoAntminer S9
https://www.bitmain.com/
35
![Page 36: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/36.jpg)
マイニング(実際は)
一番大きなマイナー Antpool、2015年2月の記事http://qntra.net/2015/02/inside-the-bitcoin-mine-of-antpool-bw-com/ 36
![Page 37: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/37.jpg)
マイニングのインセンティブ
リソースを大量に使ってまで何故マイニングするのでしょう?
1. Block Reward(報酬)
a. 現在は12.5 BTCb. CoinbaseのTxになる(TxInが無い)
2. Transaction Fee (手数料)a. ブロック全Txのデータから集める
b. Block Reward は4年毎に半減し2140年頃ゼロになる37
![Page 38: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/38.jpg)
マイニングプール
基本的に:
参加者のプロセッシングパワーを合わせて、目指す
ハッシュ値が出る確率を高め、マイニングで獲得し
た報酬や手数料を分配します。
仕組みはマイニングプール毎に様々なので、ここでは説明しませ
ん。38
![Page 39: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/39.jpg)
Proof of Work
39
![Page 40: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/40.jpg)
Proof of Work(PoW)
ブロックのハッシュ < ターゲット
例えば:
0x0000000000000000029d053e0ebe6a40db0fb47c5b24e30dbd751f0d767cfcda
<0x00000000FFFF0000000000000000000000000000000000000000000000000000
40
![Page 41: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/41.jpg)
もっと説明すると
0x0000000000000000029d053e0...
1. 出力したハッシュの値は完全ランダム
2. 1番目のビットが “0” である確率は1/23. 2番目のビットも “0” である確率は更に1/2(つまり1/4)4. ...
考え方:コインを投げ続けて、何回も勝ち続けている。
41
![Page 42: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/42.jpg)
Proof of Work(PoW)
$ ./bitcoin-cli getdifficulty$ ./bitcoin-cli getblockchaininfo
difficulty = 最大のターゲット / 現在のターゲットhttps://en.bitcoin.it/wiki/Difficulty
あるいは:$ ./bitcoin-cli getblocktemplate$ ./bitcoin-cli convertcompact <bits> #BC2のみ
42
![Page 43: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/43.jpg)
Proof of Work(PoW)
- Hashcash (Adam Back, 1997)
(https://en.wikipedia.org/wiki/Hashcash)
- BTC Mainnet :1ブロック → 10分ぐらい
- 2016ブロックごとに再計算(2週間分)
- BC2 : 1ブロック → 1分ぐらい
- 60ブロックごとに再計算(1時間分)
43
![Page 44: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/44.jpg)
ブロックのデータを作成
結果はターゲット範囲ですか?
ハッシュ
ブロックを完成して、送信する
はい
Nonce++
44
Proof of Work(PoW)
![Page 45: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/45.jpg)
ブロックのデータを作成
結果はターゲット範囲ですか?
ハッシュ
ブロックを完成して、送信する
はい
Nonce++
32-bit Nonceが限界になったら?(よくあること)
→ ExtraNonce(時間++)未来時間は2時間まで許されている→MerkleRootの一番左のTxを変更
(Coinbase Tx)
45
Proof of Work(PoW)
![Page 46: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/46.jpg)
トランザクション(Tx)
46
![Page 47: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/47.jpg)
トランザクションの中身
バージョン
4 bytes
TxInの数
1-9 bytes
TxIn 0TxIn 1
...
TxOutの数
1-9 bytes
ロックタイム
4 bytes
TxIn 0 TxIn 1 ...前のTx
TxOut 0TxOut 1
...
TxOut 0 TxOut 1 ...午後のセッションで詳しく見ましょう。47
![Page 48: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/48.jpg)
TxInの中身
前のTxのハッシュ
32 bytes
そのTxのTxOutのインデックス
4 bytes
TxIn-スクリプトの長さ
1-9 bytes
シーケンス番号
(0xFFFFFFFF)
4 bytes
scriptSig
TxIn-スクリプト
scriptSig → Unlocking Script
48
![Page 49: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/49.jpg)
TxOutの中身
バリュー
8 bytes
TxOut-スクリプトの長さ
1-9 bytes
scriptPubKey
ロックのスクリプト
scriptPubKey → Locking Script
49
![Page 50: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/50.jpg)
UTXO
Unspent Transaction Output
まだ使われてない / 他のTxInとして使えるTxOut
ネットワーク全体のUTXO情報:
$ ./bitcoin-cli gettxoutsetinfo
50
![Page 51: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/51.jpg)
手数料(Transaction Fee)
任意の値ですが、手数料を高く設定する理由は:
1. Txのサイズが大きい
2. 早めにブロックに入れて欲しい
1A1AAA...Tx
1B2BBB...
1 BTC
Tx
0.99998 BTC
0.00002 BTC
余り / 手数料
51
![Page 52: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/52.jpg)
トランザクションの流れ
1. Txの作成
2. Verify3. ノードに送信する
4. 他のノードもVerifyする
5. Mempoolに入る
6. ノードの中にマイナーがいたらブロック作成時に組み入れる
7. ブロック作成が成功したら、ブロックチェーンに入る(confirmation=1)8. その後ブロックが積み重なっていくとconfirmationの回数も上がる
52
![Page 53: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/53.jpg)
ブロックチェーン
Block 44121 Block 44122 Block 44123
Tx
TxTx
Tx
ブロックとTxの連鎖であり、ブロックとブロックの連鎖である。53
![Page 54: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/54.jpg)
コンセンサス
54
![Page 55: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/55.jpg)
コンセンサス
複数の意味があります:
- プロトコル?
- デベロッパー?
基本的に:皆が持っているブロックを同じにするためのルール。
55
![Page 56: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/56.jpg)
考え方
望ましい(正しい)行動のほうがインセンティブが高い。
例:
Tx をわざと却下するより、OKを出したほうが儲かる。
マイナー A
マイナー B Feeをもらう
Tx送信
56
![Page 57: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/57.jpg)
考え方
例:
マイナーはブロックを却下するより、一番長い連鎖を作った方が
儲かる。
マイナー A
マイナー B
マイナー C
57
![Page 58: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/58.jpg)
コンセンサス
- どのチェーンが一番正しい?
- どういうブロックが有効(あるいは無効)?
- どのトランザクションが有効(あるいは無効)?
2日目にデモがあります!
58
![Page 59: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/59.jpg)
アドレス
59
![Page 60: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/60.jpg)
Bitcoin アドレス
Mainnet の場合は現在:
- P2PKH (Pay to Public Key Hash)- P2SH (Pay to Script Hash)
60
![Page 61: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/61.jpg)
Bitcoin アドレスの基本的な作り方
(ECDSA) Public KeyPrivate Key
160-bitデータ
RIPEMD160( SHA256( Key ) )
160-bitデータ
バージョン + Checksum
SHA256( SHA256( X ) )
アドレス
0 4-byteデータ
最初の4-byte
Base58 Encode
Main: 1Test: m/n
161
![Page 62: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/62.jpg)
注意点
アドレスを使うのは1回のみ!(Address Re-use)
先ほども毎回 getnewaddress をやるべき。
問題:匿名性、セキュリティ、...
62
![Page 63: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/63.jpg)
Address Re-use 問題
例:
1. あなたのウォレットの残高はバレています
2. あなたの全てのTxがバレています
3. 自分が今はOKでも、次のTxを持ってる人は違うかも
別のセッションで、もっと詳しく説明します。
63
![Page 64: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/64.jpg)
よくある間違い
- アドレスは “口座” ではありません
- アドレスにある金額は残高ではありません
1A1AAA...Tx
1B2BBB...
1 BTC
Tx
0.5 BTC
残高:0.5 BTC0.5 BTC
1C3CCC...
64
![Page 65: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/65.jpg)
UTXOモデル
Tx1
Tx2
...自分のウォレット
Tx3
ネットワークの UTXO Set65
![Page 66: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/66.jpg)
なぜUTXOモデル?
1. アカウンティング
a. 通知
b. インプットとアウトプットの管理
2. セキュリティ
a. ダブルスペンド攻撃の防止
b. プライバシー
3. スケーラビリティなど
アカウントモデルとは別のパラダイム 66
![Page 67: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/67.jpg)
ウォレット
67
![Page 68: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/68.jpg)
ウォレット
Bitcoinはオープンなシステムなので、鍵の管理シ
ステムは一番重要なセキュリティのポイント
注意
自分で鍵を管理していないことは自分のお金では
無いのと同じです。
68
![Page 69: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/69.jpg)
よくあるパターン
ユーザがエクスチェンジ(交換所)で円からBTCに交換した後、秘
密鍵をそのまま同じサービスに放置する。
1つの解決方法:交換後に自分のウォレットに移動する。
今までの大きな事件:MtGox、Bitfinexなど
Exchange Service¥BTC
69
![Page 70: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/70.jpg)
自分のBitcoindのウォレットの場合
- 環境にウイルス、Malware、キーロガーなどが無いことを確
認する。
- ハードディスクを暗号化する。
- ウォレットの暗号化:- $ ./bitcoin-cli encryptwallet “PASSPHRASE”- $ ./bitcoin-cli walletpassphrase “PASSPHRASE” TIMEOUT
カリキュラムの都合上、BC2ではウォレットの暗号化は
行わないでください。70
![Page 71: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/71.jpg)
HD (Hierarchical Deterministic) ウォレット
BIP 32
71
![Page 72: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/72.jpg)
ハードウェア・ウォレット
https://trezor.io/ https://www.ledgerwallet.com/
72
![Page 73: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック](https://reader035.vdocuments.us/reader035/viewer/2022071014/5fcc930153be9b090a3f6c28/html5/thumbnails/73.jpg)
ハードウェア・ウォレット
メリット:
1. 秘密鍵をハードウェア外に持ち出せない。
2. HDウォレットなので、ハードウェアを無くしてもウォレットを再
現することが出来る。
3. Plausible Deniability / 犠牲ウォレット (Ledgerのみ)。
73