Submit Search
Upload
知らなかった! Bitcoinとethereumの違い
•
Download as PPTX, PDF
•
4 likes
•
2,957 views
Shinji Ayanami
Follow
EthereumのブロックチェーンとState Treeのデータ構造について
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 34
Download now
Recommended
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
Optimistic Rollupとは何か
Optimistic Rollupとは何か
Syuhei Hiya
モデル高速化百選
モデル高速化百選
Yusuke Uchida
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
AGIRobots
楽天における機械学習アルゴリズムの活用
楽天における機械学習アルゴリズムの活用
Rakuten Group, Inc.
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
Carnot Inc.
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
Recommended
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII2022 [OS3-02] Federated Learningの基礎と応用
SSII
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
Optimistic Rollupとは何か
Optimistic Rollupとは何か
Syuhei Hiya
モデル高速化百選
モデル高速化百選
Yusuke Uchida
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
AGIRobots
楽天における機械学習アルゴリズムの活用
楽天における機械学習アルゴリズムの活用
Rakuten Group, Inc.
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
Carnot Inc.
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
実践イカパケット解析
実践イカパケット解析
Yuki Mizuno
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
Ryosuke Yamazaki
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
trmr
深層学習の数理
深層学習の数理
Taiji Suzuki
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
西岡 賢一郎
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
Deep Learning JP
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
Yoichi Ochiai
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル
Deep Learning JP
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
ブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかける
Bizuayeu
Blockchain@OSC Kyoto 2016
Blockchain@OSC Kyoto 2016
Masanobu Takagi
More Related Content
What's hot
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
実践イカパケット解析
実践イカパケット解析
Yuki Mizuno
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
Ryosuke Yamazaki
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
trmr
深層学習の数理
深層学習の数理
Taiji Suzuki
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
西岡 賢一郎
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
Deep Learning JP
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
Yoichi Ochiai
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル
Deep Learning JP
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
What's hot
(20)
プログラムを高速化する話
プログラムを高速化する話
実践イカパケット解析
実践イカパケット解析
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
深層学習の数理
深層学習の数理
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
【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編
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
Viewers also liked
ブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかける
Bizuayeu
Blockchain@OSC Kyoto 2016
Blockchain@OSC Kyoto 2016
Masanobu Takagi
メイドカフェの歴史と今
メイドカフェの歴史と今
Shinji Ayanami
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...
健一 茂木
Bitcoinを技術的に理解する
Bitcoinを技術的に理解する
Kenji Urushima
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
Kindai University
Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)
CLOUDIAN KK
Viewers also liked
(8)
ブロックチェーンに冷水をぶっかける
ブロックチェーンに冷水をぶっかける
Blockchain@OSC Kyoto 2016
Blockchain@OSC Kyoto 2016
メイドカフェの歴史と今
メイドカフェの歴史と今
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Bitcoinを技術的に理解する
Bitcoinを技術的に理解する
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
Nosqlの基礎知識(2013年7月講義資料)
Nosqlの基礎知識(2013年7月講義資料)
Similar to 知らなかった! Bitcoinとethereumの違い
EXE Lite #1:ビットコインとブロックチェーン入門
EXE Lite #1:ビットコインとブロックチェーン入門
blockchainexe
170301 いまさら聞けないブロックチェーン①
170301 いまさら聞けないブロックチェーン①
勇太 荒瀬
ブロックチェーンの基本構造
ブロックチェーンの基本構造
Soichiro Takagi
ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門
Kenta Fujimoto
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
shusuke kakiuchi
Blockchain innovation
Blockchain innovation
Yuto Takei
Similar to 知らなかった! Bitcoinとethereumの違い
(6)
EXE Lite #1:ビットコインとブロックチェーン入門
EXE Lite #1:ビットコインとブロックチェーン入門
170301 いまさら聞けないブロックチェーン①
170301 いまさら聞けないブロックチェーン①
ブロックチェーンの基本構造
ブロックチェーンの基本構造
ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
垣内のひとりプレゼン★ブロックチェーンをちゃんと理解してみる
Blockchain innovation
Blockchain innovation
知らなかった! Bitcoinとethereumの違い
1.
BitcoinとEthereumの違い ブロックチェーンとデータ構造 ちゃーりー(@charlie_rebirth) 2016年9月
2.
ブロックチェーンの構造のこと Bitcoinのブロックチェーン構造について Mastering Bitcoinなどでよくまとまっている (7章「ブロックチェーン」に詳細が解説) が、Ethereumのブロックチェーンは解説が世の中にあまりない? それについて話します
3.
Bitcoinのブロックチェーン ・ヘッダー部 ・トランザクション部 * すべての取引情報(お金のやり取り)はブロックチェーンに書いてある。 ブロックチェーンのデータさえあれば残高わかる
4.
ブロックの図 HEADER部:ブロックに関するデータ timestamp Difficulty:採掘難度 Nonce: PoWの結果の値 Merkle Root:
マークルツリーの根(root)の値 Transactions部:取引データ ex ) Alice to Bob: 1BTC Bob to Charlie: 0.5 BTC etc
5.
Merkle Root ブロックの中のトランザクションデータの要約値 = 取引が改ざんされていないことを確認するための値
6.
マークルツリー(ハッシュ木)
7.
マークル・パス マークルツリーをたどって特定の取引データにたどり着くための必要最小限の 情報
8.
マークルパス 途中のノードのハッシュ値だけでたどることができる
9.
Bitcoinのおさらい Merkle Treeが使われる 取引データの整合性の確認ための木構造データ
10.
・通貨を送るだけのシステムではない。 ・ユーザーが任意のプログラムを書いてそれを実行させる(万能チューリング・マシン) ・取引データだけでなく、「状態データ」(State)を記憶しないといけない (全アカウント・コントラクトの情報) 膨大なデータ量!!! Ethereumは複雑だった
11.
Bitcoin
12.
Ethereum
13.
14.
15.
Ethereum Architecture 参考ページ Ethereum block
architecture http://ethereum.stackexchange.com/questions/268/ethereum-block- architecture
16.
> 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",
17.
ブロックチェーンに記録されているのはトランザクション情報のみ ✕「ブロックチェーンにコントラクトを書き込んであってすべての変数が保存 されている」 正しくは↓ コントラクトそのものや、内部変数、状態変数のデータは ブロックチェーン上には無い 大丈夫かそれ?
18.
状態データ、アカウントデータ 各ノードでデータを保持してる Transactionsを元に、各ノード独自でState Treeを計算して生成 State Tree(全アカウント・コントラクトの状態を記録した木構造のデータ) 容量が大きくなるが、ブロックチェーン本体さえあればいつでも再構築でき るのがポイント(State
Treeを改ざんできない)
19.
Merkle Patricia Tree データの整合性(改ざんへの耐性)のためのMerkle
Tree × データの効率的保持のためのState Tree(Patricia Tree) ↓ 融合合体
20.
マークルツリー(ハッシュ木)
21.
Radix Tree (基数木、トライ:Trie) ・検索が高速 ・必要なノード(節)の数が 多い ⇨ 深くなるほどデータ容量が O(N^2)で増える 非効率 ※ハッシュ値は長い文 字列なので非効率
22.
Patricia Tree(パトリシア木) 通常のトライ木と異なり、 辺には1つの文字だけでなく文字の並びが ラベルとして付与される。 これは長い文字列の集合や 長い接頭部を共有する文字列の集合などで 効果を発揮する。
23.
パトリシア木 ・必要なノード(節)の数 が少なくできる。 ⇨データ容量を減らせる ・だが、実装は複雑になる
24.
Merkle Patricia Trie ●
Patricia Treeのように効率よくデータを格納・取り出しができる ● Merkle Treeのようにハッシュ値を元にしたツリー構造で改ざんされてい ない証明ができる (ツリーのどこかのデータが変わるとState Root値が変わってしまう) ⇨ State Treeにも暗号学的な改ざんへの耐性がある(PoWに基づく)
25.
State tree ● state
root から分岐する木構造 ● 各ノードはハッシュ値を保持し、子ノードのハッシュ値は親ノードのハッシュ値に影響を与 える ● いずれかのノード内の値を変えると、ハッシュ値が変更⇨親ノードのハッシュ値が変更⇨root hashが変更される ● root hashが与えられた時、そのハッシュ値と整合性のあるState treeのみが正しい。 ⇨ 不正な変更は見つかる
26.
27.
Ethereum wiki /
Ethereum Development Tutorialより
28.
Ethereum Scalability and
Decentralization Updates
29.
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
30.
基数木(Radix Tree)で値を保存する場合 存在する全経路・分岐でノードを作成する必要が ある ⇨ 分岐(ノード)が多く、深くなればなるだけ記憶 容量をとってしまう。
31.
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のハッシュ値も変更される。
32.
Patricia Treeにvalueを格納する図 必要なノード数が少ない ⇨ 記憶容量の節約
33.
詳細は Understanding the ethereum
trie https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/ または Ethereum wiki のPatricia Treeの項目参照
34.
まとめ ● Ethereumでは、ブロックチェーンに全データを保持していなくても、改 ざん不可能なデータ構造を各クライアントに保持させることができる。 ● 外部記録を有効に活用することで、ブロックチェーンのサイズの肥大化は 抑えられているみたいだー。
Download now