bitcoinの基本と体験¨...目標 1. bitcoin-cliの体験 2. bitcoin全般の話...

74
Bitcoinの基本と体験 @ DG Lab - Anditto Heristyo © 2017 Digital Garage. All rights reserved. Redistribution or public display not permitted without written permission from Digital Garage.

Upload: others

Post on 21-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

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 事前チェック

Agenda

1. 目標

2. BC2のBitcoin3. Bitcoin-cliの体験

4. Bitcoinの概要

2

Page 3: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

このセッションの目標

3

Page 4: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

目標

1. Bitcoin-cliの体験

2. Bitcoin全般の話

全般的な話ですので、今は全部わからなくても大丈夫です。

4

Page 5: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

事前チェック

- ソースコードはダウンロードしましたか?

- ちゃんとコンパイル出来ましたか?

- まだ問題がある方は、はやめに声をかけてください。

完了しなかったら続けないよ。。。

本当に困っている人はスタッフに声をかけてください。5

Page 6: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

BC2のBitcoinバージョン

6

Page 7: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ワークショップで使うBitcoin

https://www.github.com/dgarage/bc2

- Bitcoin Coreのフォークです。

- 中身はほぼ同じですが。。。

7

Page 8: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

BC2バージョン

BitcoinのP2Pネットワーク → プライベートネットワーク

 マジックナンバーが異なる

マイニングは難しい → 簡単に設定した

(10分ごとに生成する) → 1分にする

アドレスの頭は1または3 → BまたはCになる

8

Page 9: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

BC2とBitcoin Core

Bitcoin Coreネットワーク

BC2

全く別のネットワーク

9

Page 10: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

注意点

操作は本物のbitcoindおよび

bitcoin-cliと全く同じです。

両方持っている人は間違わないように、

ご注意をお願いします。

10

Page 11: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

早速始めましょう!

まず、ターミナルを開いて、bitcoind を実行します。

$ cd ~/bc2/src

$ ./bitcoind -printtoconsole

あるいは:

$ ./bitcoind -daemon

11

Page 12: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

最初の出力

- ウォレット(秘密鍵)の作成

- ネットワークに繋ぐ

- ブロック情報の更新

12

Page 13: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

確認

別のウインドウで:

$ ./bitcoin-cli getblockchaininfo

13

Page 14: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

(BC2)Bitcoinをゲットしましょう!

アドレスを作成します:

$ ./bitcoin-cli getnewaddress

14

Page 15: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

Bitcoinをゲットしましょう!

出力されたアドレスはここに入力してください:

http://172.16.120.201:8888/faucet.html

出力された TxID をどこかに保存してください。

残高のチェック:

$ ./bitcoin-cli getbalance

→ 何が出ましたか? 15

Page 16: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

Mempool

トランザクション(Tx)が有効であれば、Mempool に入れます。

そして、ノードに送信します。

$ ./bitcoin-cli getrawmempool

16

Page 17: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

マイニングします

$ ./bitcoin-cli generate 1

(マイニングは後ほど説明します)

$ ./bitcoin-cli generate 1 50000000

もう一度やってみると:

$ ./bitcoin-cli getbalance

17

Page 18: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

BTCを送ってみよう

もう一度アドレスを作成して、グループ内の人にアドレスを聞い

て、送ってみてください。

一番シンプルなやり方:

$ ./bitcoin-cli sendtoaddress <アドレス> <金額>

18

Page 19: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ブロックチェーン・エクスプローラ

BC2は: http://explorer.bc-2.jp

Bitcoinは: 検索すれば色々と見つかります。

19

Page 20: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

データの信用性

結局自分のデータしか信用できません。

でも、他の人に頼らなくて、自分のデータがあるからこそ 分散台

帳技術(Distributed Ledger Technology )には価値がありま

す。

20

Page 21: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

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 事前チェック

Bitcoinの概要

22

Page 23: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

3つのネットワーク

23

Page 24: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

Bitcoinのネットワーク

Peer-to-Peer (P2P) Icon by Creative StallFrom Noun Project 24

Page 25: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

3つのネットワーク

1. Mainnet - メインネットワーク

$ bitcoin-cli <コマンド>

注意点

Mainnetはリアルなお金なので、気をつけてください。

25

Page 26: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

3つのネットワーク

2. Testnet - テストネットワーク

$ bitcoin-cli -testnet <コマンド>

- 機能などは Mainnet とほぼ同じ。

- マイニングの難しさは低く設定されている。

- BTC は価値が無い。(だから価値がある)

- よく壊れている。

26

Page 27: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

3つのネットワーク

3. Regtest - Regression Test用のネットワーク

$ bitcoin-cli -regtest <コマンド>

- 自分のローカル環境のみ。

- 自分でマイニングしないといけない。

27

Page 28: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ブロックチェーンの中身

28

Page 29: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ブロックチェーン

ブロック44121

ブロック44122

ブロック44123

もっと詳しく見よう

29

Page 30: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ブロックの中身

マジックナンバー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 事前チェック

ブロックのヘッダー

バージョン

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 33: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

マイニング

33

Page 34: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

マイニング

Bitcoin Coreの場合、自分の Regtest ネットワー

クであれば、先ほどと同じく:

$ ./bitcoin-cli -regtest generate 1

34

Page 35: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

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 事前チェック

マイニング(実際は)

一番大きなマイナー 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 事前チェック

マイニングのインセンティブ

リソースを大量に使ってまで何故マイニングするのでしょう?

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 事前チェック

マイニングプール

基本的に:

参加者のプロセッシングパワーを合わせて、目指す

ハッシュ値が出る確率を高め、マイニングで獲得し

た報酬や手数料を分配します。

仕組みはマイニングプール毎に様々なので、ここでは説明しませ

ん。38

Page 39: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

Proof of Work

39

Page 40: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

Proof of Work(PoW)

ブロックのハッシュ < ターゲット

例えば:

0x0000000000000000029d053e0ebe6a40db0fb47c5b24e30dbd751f0d767cfcda

<0x00000000FFFF0000000000000000000000000000000000000000000000000000

40

Page 41: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

もっと説明すると

0x0000000000000000029d053e0...

1. 出力したハッシュの値は完全ランダム

2. 1番目のビットが “0” である確率は1/23. 2番目のビットも “0” である確率は更に1/2(つまり1/4)4. ...

考え方:コインを投げ続けて、何回も勝ち続けている。

41

Page 42: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

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 事前チェック

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 事前チェック

ブロックのデータを作成

結果はターゲット範囲ですか?

ハッシュ

ブロックを完成して、送信する

はい

Nonce++

44

Proof of Work(PoW)

Page 45: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ブロックのデータを作成

結果はターゲット範囲ですか?

ハッシュ

ブロックを完成して、送信する

はい

Nonce++

32-bit Nonceが限界になったら?(よくあること)

→ ExtraNonce(時間++)未来時間は2時間まで許されている→MerkleRootの一番左のTxを変更

(Coinbase Tx)

45

Proof of Work(PoW)

Page 46: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

トランザクション(Tx)

46

Page 47: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

トランザクションの中身

バージョン

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 事前チェック

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 事前チェック

TxOutの中身

バリュー

8 bytes

TxOut-スクリプトの長さ

1-9 bytes

scriptPubKey

ロックのスクリプト

scriptPubKey → Locking Script

49

Page 50: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

UTXO

Unspent Transaction Output

まだ使われてない / 他のTxInとして使えるTxOut

ネットワーク全体のUTXO情報:

$ ./bitcoin-cli gettxoutsetinfo

50

Page 51: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

手数料(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 事前チェック

トランザクションの流れ

1. Txの作成

2. Verify3. ノードに送信する

4. 他のノードもVerifyする

5. Mempoolに入る

6. ノードの中にマイナーがいたらブロック作成時に組み入れる

7. ブロック作成が成功したら、ブロックチェーンに入る(confirmation=1)8. その後ブロックが積み重なっていくとconfirmationの回数も上がる

52

Page 53: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ブロックチェーン

Block 44121 Block 44122 Block 44123

Tx

TxTx

Tx

ブロックとTxの連鎖であり、ブロックとブロックの連鎖である。53

Page 54: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

コンセンサス

54

Page 55: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

コンセンサス

複数の意味があります:

- プロトコル?

- デベロッパー?

基本的に:皆が持っているブロックを同じにするためのルール。

55

Page 56: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

考え方

望ましい(正しい)行動のほうがインセンティブが高い。

例:

Tx をわざと却下するより、OKを出したほうが儲かる。

マイナー A

マイナー B Feeをもらう

Tx送信

56

Page 57: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

考え方

例:

マイナーはブロックを却下するより、一番長い連鎖を作った方が

儲かる。

マイナー A

マイナー B

マイナー C

57

Page 58: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

コンセンサス

- どのチェーンが一番正しい?

- どういうブロックが有効(あるいは無効)?

- どのトランザクションが有効(あるいは無効)?

2日目にデモがあります!

58

Page 59: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

アドレス

59

Page 60: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

Bitcoin アドレス

Mainnet の場合は現在:

- P2PKH (Pay to Public Key Hash)- P2SH (Pay to Script Hash)

60

Page 61: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

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 事前チェック

注意点

アドレスを使うのは1回のみ!(Address Re-use)

先ほども毎回 getnewaddress をやるべき。

問題:匿名性、セキュリティ、...

62

Page 63: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

Address Re-use 問題

例:

1. あなたのウォレットの残高はバレています

2. あなたの全てのTxがバレています

3. 自分が今はOKでも、次のTxを持ってる人は違うかも

別のセッションで、もっと詳しく説明します。

63

Page 64: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

よくある間違い

- アドレスは “口座” ではありません

- アドレスにある金額は残高ではありません

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 事前チェック

UTXOモデル

Tx1

Tx2

...自分のウォレット

Tx3

ネットワークの UTXO Set65

Page 66: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

なぜUTXOモデル?

1. アカウンティング

a. 通知

b. インプットとアウトプットの管理

2. セキュリティ

a. ダブルスペンド攻撃の防止

b. プライバシー

3. スケーラビリティなど

アカウントモデルとは別のパラダイム 66

Page 67: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ウォレット

67

Page 68: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ウォレット

Bitcoinはオープンなシステムなので、鍵の管理シ

ステムは一番重要なセキュリティのポイント

注意

自分で鍵を管理していないことは自分のお金では

無いのと同じです。

68

Page 69: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

よくあるパターン

ユーザがエクスチェンジ(交換所)で円からBTCに交換した後、秘

密鍵をそのまま同じサービスに放置する。

1つの解決方法:交換後に自分のウォレットに移動する。

今までの大きな事件:MtGox、Bitfinexなど

Exchange Service¥BTC

69

Page 70: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

自分のBitcoindのウォレットの場合

- 環境にウイルス、Malware、キーロガーなどが無いことを確

認する。

- ハードディスクを暗号化する。

- ウォレットの暗号化:- $ ./bitcoin-cli encryptwallet “PASSPHRASE”- $ ./bitcoin-cli walletpassphrase “PASSPHRASE” TIMEOUT

カリキュラムの都合上、BC2ではウォレットの暗号化は

行わないでください。70

Page 72: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ハードウェア・ウォレット

https://trezor.io/ https://www.ledgerwallet.com/

72

Page 73: Bitcoinの基本と体験¨...目標 1. Bitcoin-cliの体験 2. Bitcoin全般の話 全般的な話ですので、今は全部わからなくても大丈夫です。4 事前チェック

ハードウェア・ウォレット

メリット:

1. 秘密鍵をハードウェア外に持ち出せない。

2. HDウォレットなので、ハードウェアを無くしてもウォレットを再

現することが出来る。

3. Plausible Deniability / 犠牲ウォレット (Ledgerのみ)。

73