SlideShare a Scribd company logo
1 of 34
BitcoinとEthereumの違い
ブロックチェーンとデータ構造
ちゃーりー(@charlie_rebirth)
2016年9月
ブロックチェーンの構造のこと
Bitcoinのブロックチェーン構造について
Mastering Bitcoinなどでよくまとまっている
(7章「ブロックチェーン」に詳細が解説)
が、Ethereumのブロックチェーンは解説が世の中にあまりない?
それについて話します
Bitcoinのブロックチェーン
・ヘッダー部
・トランザクション部
* すべての取引情報(お金のやり取り)はブロックチェーンに書いてある。
ブロックチェーンのデータさえあれば残高わかる
ブロックの図
HEADER部:ブロックに関するデータ
timestamp
Difficulty:採掘難度
Nonce: PoWの結果の値
Merkle Root: マークルツリーの根(root)の値
Transactions部:取引データ
ex )
Alice to Bob: 1BTC
Bob to Charlie: 0.5 BTC
etc
Merkle Root
ブロックの中のトランザクションデータの要約値
= 取引が改ざんされていないことを確認するための値
マークルツリー(ハッシュ木)
マークル・パス
マークルツリーをたどって特定の取引データにたどり着くための必要最小限の
情報
マークルパス
途中のノードのハッシュ値だけでたどることができる
Bitcoinのおさらい
Merkle Treeが使われる
取引データの整合性の確認ための木構造データ
・通貨を送るだけのシステムではない。
・ユーザーが任意のプログラムを書いてそれを実行させる(万能チューリング・マシン)
・取引データだけでなく、「状態データ」(State)を記憶しないといけない
(全アカウント・コントラクトの情報)
膨大なデータ量!!!
Ethereumは複雑だった
Bitcoin
Ethereum
Ethereum Architecture
参考ページ
Ethereum block architecture
http://ethereum.stackexchange.com/questions/268/ethereum-block-
architecture
> eth.getBlock(2040449)
{
difficulty: 57164803413005,
extraData: "0xe4b883e5bda9e7a59ee4bb99e9b1bc",
gasLimit: 4712380,
gasUsed: 252000,
hash: "0x00a75e75a5a70f7a2550718ae56a34904d63c8a28ef293a18611eb8766a58c92",
logsBloom: "",
miner: "0x61c808d82a3ac53231750dadc13c777b59310bd9",
nonce: "0x5f130ae01311795b",
number: 2040449,
parentHash: "0x5ef63a62aa871d58b8f26cd4acda621557806a943f46ed76e401030f79982b2b",
receiptRoot: "0x42dbcf6a2f8716f63d441459a96b54fdc6d70bc44f6641c144f24647c04c3a97",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 1896,
stateRoot: "0xb4980433b3f53d0dbfffbe833102e0f37296b60081e9e8170975a05a767d7946",
timestamp: 1470749971,
totalDifficulty: 46140009996266484451,
transactions: ["0xf38046731a2268e0558305449f366c49604bccc0c056efda0dac20207cecd802",
"0x8c10abdf63e369d2db09297de90a9d8b2831ad0b796de36be8ef109643e7d6f5",
"0x0a090cc48494aba9ab587e8e0b4d48e632d27578aab333adc37f85b79dbd1684",
"0xaea8cfbae769dd579d274c0ebbf731b182167decf83ac6dd7c0f42f9d7551acf",
"0x0547b8962b4be66a3636be1ad39221d21f4ad630e203ad62b7ac52ef8e5aabaa",
ブロックチェーンに記録されているのはトランザクション情報のみ
✕「ブロックチェーンにコントラクトを書き込んであってすべての変数が保存
されている」
正しくは↓
コントラクトそのものや、内部変数、状態変数のデータは
ブロックチェーン上には無い
大丈夫かそれ?
状態データ、アカウントデータ
各ノードでデータを保持してる
Transactionsを元に、各ノード独自でState Treeを計算して生成
State Tree(全アカウント・コントラクトの状態を記録した木構造のデータ)
容量が大きくなるが、ブロックチェーン本体さえあればいつでも再構築でき
るのがポイント(State Treeを改ざんできない)
Merkle Patricia Tree
データの整合性(改ざんへの耐性)のためのMerkle Tree
×
データの効率的保持のためのState Tree(Patricia Tree)
↓
融合合体
マークルツリー(ハッシュ木)
Radix Tree (基数木、トライ:Trie)
・検索が高速
・必要なノード(節)の数が
多い
⇨
深くなるほどデータ容量が
O(N^2)で増える
非効率
※ハッシュ値は長い文
字列なので非効率
Patricia Tree(パトリシア木)
通常のトライ木と異なり、
辺には1つの文字だけでなく文字の並びが
ラベルとして付与される。
これは長い文字列の集合や
長い接頭部を共有する文字列の集合などで
効果を発揮する。
パトリシア木
・必要なノード(節)の数
が少なくできる。
⇨データ容量を減らせる
・だが、実装は複雑になる
Merkle Patricia Trie
● Patricia Treeのように効率よくデータを格納・取り出しができる
● Merkle Treeのようにハッシュ値を元にしたツリー構造で改ざんされてい
ない証明ができる
(ツリーのどこかのデータが変わるとState Root値が変わってしまう)
⇨ State Treeにも暗号学的な改ざんへの耐性がある(PoWに基づく)
State tree
● state root から分岐する木構造
● 各ノードはハッシュ値を保持し、子ノードのハッシュ値は親ノードのハッシュ値に影響を与
える
● いずれかのノード内の値を変えると、ハッシュ値が変更⇨親ノードのハッシュ値が変更⇨root
hashが変更される
● root hashが与えられた時、そのハッシュ値と整合性のあるState treeのみが正しい。
⇨ 不正な変更は見つかる
Ethereum wiki / Ethereum Development Tutorialより
Ethereum Scalability and Decentralization Updates
Merkle Patricia tree のノードの種類
1. NULL (空文字) [ null ]
2. key-value型 [ key, value]
3. 配列型 [ v0 ... v15, vt ]
例
<以下のkey:valueを記録する場合>
('dog', 'puppy'), ('horse', 'stallion'), ('do', 'verb'), ('doge', 'coin')
key を16進数の値(ASCIIコード)に変換し、配列にする。(その配列は対応するvalueまで辿る経
路を表す)
[ 6, 4, 6, 15, 16 ] : 'verb'
[ 6, 4, 6, 15, 6, 7, 16 ] : 'puppy'
[ 6, 4, 6, 15, 6, 7, 6, 5, 16 ] : 'coin'
Ethereum
基数木(Radix Tree)で値を保存する場合
存在する全経路・分岐でノードを作成する必要が
ある
⇨
分岐(ノード)が多く、深くなればなるだけ記憶
容量をとってしまう。
Merkle Patricia Tree
Patricia Tree状になるように計算(key の値はRLPエンコーディングというもので変換
されている)
ROOT: [ '¥x16', A ]
A: [ '', '', '', '', B, '', '', '', C, '', '', '', '', '', '', '', '' ]
B: [ '¥x00¥x6f', D ]
D: [ '', '', '', '', '', '', E, '', '', '', '', '', '', '', '', '', 'verb' ]
E: [ '¥x17', F ]
F: [ '', '', '', '', '', '', G, '', '', '', '', '', '', '', '', '', 'puppy' ]
G: [ '¥x35', 'coin' ]
C: [ '¥x20¥x6f¥x72¥x73¥x65', 'stallion' ]
この時、子ノードへの参照であるA,B,C,D,E,F,Gは
ハッシュ関数 sha3([..... ]) によって算出される。
そのため、値が変わると参照値が変更され、Rootのハッシュ値も変更される。
Patricia Treeにvalueを格納する図
必要なノード数が少ない
⇨ 記憶容量の節約
詳細は
Understanding the ethereum trie
https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/
または
Ethereum wiki のPatricia Treeの項目参照
まとめ
● Ethereumでは、ブロックチェーンに全データを保持していなくても、改
ざん不可能なデータ構造を各クライアントに保持させることができる。
● 外部記録を有効に活用することで、ブロックチェーンのサイズの肥大化は
抑えられているみたいだー。

More Related Content

What's hot

実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析Yuki Mizuno
 
Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧 Ryosuke Yamazaki
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptotrmr
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理Taiji Suzuki
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」西岡 賢一郎
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたMITSUNARI Shigeo
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Naoaki Okazaki
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat ModelsDeep Learning JP
 
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編MCC CTF講習会 pwn編
MCC CTF講習会 pwn編hama7230
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15Yoichi Ochiai
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...Deep Learning JP
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?ichirin2501
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデルDeep Learning JP
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 

What's hot (20)

プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
 
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
 
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 

Viewers also liked

ブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかけるブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかけるBizuayeu
 
Blockchain@OSC Kyoto 2016
Blockchain@OSC Kyoto 2016Blockchain@OSC Kyoto 2016
Blockchain@OSC Kyoto 2016Masanobu Takagi
 
メイドカフェの歴史と今
メイドカフェの歴史と今メイドカフェの歴史と今
メイドカフェの歴史と今Shinji Ayanami
 
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)pizyumi
 
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...健一 茂木
 
Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解するKenji Urushima
 
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolKindai University
 
Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)CLOUDIAN KK
 

Viewers also liked (8)

ブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかけるブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかける
 
Blockchain@OSC Kyoto 2016
Blockchain@OSC Kyoto 2016Blockchain@OSC Kyoto 2016
Blockchain@OSC Kyoto 2016
 
メイドカフェの歴史と今
メイドカフェの歴史と今メイドカフェの歴史と今
メイドカフェの歴史と今
 
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
 
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
 
Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
 
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
 
Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)
 

Similar to 知らなかった! Bitcoinとethereumの違い

EXE Lite #1:ビットコインとブロックチェーン入門
EXE Lite #1:ビットコインとブロックチェーン入門EXE Lite #1:ビットコインとブロックチェーン入門
EXE Lite #1:ビットコインとブロックチェーン入門blockchainexe
 
170301 いまさら聞けないブロックチェーン①
170301 いまさら聞けないブロックチェーン①170301 いまさら聞けないブロックチェーン①
170301 いまさら聞けないブロックチェーン①勇太 荒瀬
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造Soichiro Takagi
 
ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門Kenta Fujimoto
 
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみるshusuke kakiuchi
 
Blockchain innovation
Blockchain innovationBlockchain innovation
Blockchain innovationYuto Takei
 

Similar to 知らなかった! Bitcoinとethereumの違い (6)

EXE Lite #1:ビットコインとブロックチェーン入門
EXE Lite #1:ビットコインとブロックチェーン入門EXE Lite #1:ビットコインとブロックチェーン入門
EXE Lite #1:ビットコインとブロックチェーン入門
 
170301 いまさら聞けないブロックチェーン①
170301 いまさら聞けないブロックチェーン①170301 いまさら聞けないブロックチェーン①
170301 いまさら聞けないブロックチェーン①
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造
 
ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門
 
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
 
Blockchain innovation
Blockchain innovationBlockchain innovation
Blockchain innovation
 

知らなかった! Bitcoinとethereumの違い