23. ブロックチェーンは
“Block” と “Chain” から出来ている
23
Tx1 = 0x4AC01
Tx2 = 0xBE772
Bob to Mike (2BTC)
Tx3 = 0x88FE4
Bob to Alice (1BTC)
block #102
1つ前のブロックハッシュ
= 0x00...D5
You to Alice (1BTC)
Tx1 = 0x359BB
Tx2 = 0x22447
Mike to Alice (0.1BTC)
Tx3 =0x1119F
Alice to Bob (0.2BTC)
block #101
ブロックハッシュ = 0x00…D5
マークル・ルート = 0xA3224
乱数 = 0x111111
1つ前のブロックハッシュ
= 0x00...FF
You to Alice (3BTC)
block
#100 ブロックハッシュ = 0x00…A1
マークル・ルート = 0x5F0E7
乱数 = 0x34567
29. 2nd ステップ :
作成したやりとりを基にハッシュ値を生成
29
Date : 2017/12/13
From : You (0x0001)
To : Alice (0x0002)
Amount : 1BTC
あなたと Alice の
電子署名
ハッシュ
生成器
入力 出力
0x4AC01
ハッシュ値
30. Date : 2017/12/13
From : You (0x0001)
To : Alice (0x0002)
Amount : 1BTC
あなたと Alice の
電子署名
ハッシュ
生成器
入力 出力
0x4AC01
ハッシュ値
30
Date : 2017/11/01
From : You (0x0001)
To : Alice (0x0002)
Amount : 1BTC
あなたと Alice の
電子署名
ハッシュ
生成器
input output
0xBE772
ハッシュ値
全く異なる値
が出力される
つまり何をしているか?
ひとつひとつのやりとりに特定のIDをつける
34. 34
0x4AC01
You to Alice (1BTC)
0xBE772 0x88FE4 0xCCD90
Bob to Mike (2BTC) Bob to Alice (1BTC) Alice to Bob(3BTC)
+
0x09373 0x55D74
+
0x5F0E7
マークル・ルート
(やりとりの集合の代表値)
* このデータ構造を「マークル木」と呼びます
4th ステップ :
マイナーはいくつかのやりとりを自分の手元へ集める
そして,集めたやりとりをひとつにまとめる
+
35. 5th ステップ :
マイナーは マークル・ルートと組み合わせると
N個の ”0” で始まるハッシュ値を生成する乱数を探し当てる
35
0x4AC01
You to Alice (1BTC)
0xBE772
Bob to Mike (2BTC)
0x88FE4
Bob to Alice (1BTC)
0xCCD90
Alice to Bob(3BTC)
マークル・ルート = 0x5F0E7
ハッシュ化マークル・ルート
0x5F0E7 + 乱数
0x12345
0x24EF09
+ 乱数
0x23456
0x3E0711
+ 乱数
0x34567
0x000AB1
* ルール :3つの “0” から始まるハッシュ値
Block 1
マークル・ルート
0x5F0E7
マークル・ルート
0x5F0E7
37. 6th ステップ :
正しい乱数を見つけた人はブロックを作って
新たにチェーンへつなげることができる
37
Tx1 = 0x4AC01
Tx2 = 0xBE772
Bob to Mike (2BTC)
Tx3 = 0x88FE4
Bob to Alice (1BTC)
block #102
1つ前のブロックハッシュ
= 0x00...D5
You to Alice (1BTC)
Tx1 = 0x359BB
Tx2 = 0x22447
Mike to Alice (0.1BTC)
Tx3 =0x1119F
Alice to Bob (0.2BTC)
block #101
ブロックハッシュ = 0x00…D5
マークル・ルート = 0xA3224
乱数 = 0x111111
1つ前のブロックハッシュ
= 0x00...FF
You to Alice (3BTC)
block
#100 ブロックハッシュ = 0x00…A1
マークル・ルート = 0x5F0E7
乱数 = 0x34567
41. 41
え?!
やっぱりやりとりを書き換えたい?
Tx1 = 0x4AC01
Tx2 = 0xBE772
Bob to Mike (2BTC)
Tx3 = 0x88FE4
Bob to Alice (1BTC)
block #102
1つ前のブロックハッシュ
= 0x00...D5
You to Alice (1BTC)
Tx1 = 0x359BB ⇨ 0x234AA
Tx2 = 0x22447
Mike to Alice (0.1BTC)
Tx3 =0x1119F
Alice to Bob (0.2BTC)
block #101
ブロックハッシュ = 0x00…D5
マークル・ルート = 0xA3224
乱数 = 0x111111
1つ前のブロックハッシュ
= 0x00...FF
You to Alice(3BTC ⇨100BTC)
block
#100 ブロックハッシュ = 0x00…A1
マークル・ルート = 0x5F0E7
乱数 = 0x34567