Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ethereumのチェーン同期法 Full / Fast / Snap
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shigeyuki azuchi
April 13, 2021
Technology
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ethereumのチェーン同期法 Full / Fast / Snap
GBECの解説動画の資料です。
https://goblockchain.network/2021/04/geth_sync_mode/
shigeyuki azuchi
April 13, 2021
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
SLH-DSA (SPHINCS+)
azuchi
0
16
Hyper Tree
azuchi
0
19
FORS
azuchi
0
31
クラスターmempool
azuchi
0
43
W-OTS+
azuchi
0
50
Shorのアルゴリズム
azuchi
0
71
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
56
Fiat-Shamir変換と注意点
azuchi
0
260
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
70
Other Decks in Technology
See All in Technology
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
280
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
140
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
340
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
460
Deep Data Security 機能解説
oracle4engineer
PRO
2
650
プラットフォームを「作る」、 チームに「入り込む」
sansantech
PRO
0
650
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
730
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
150
[2026 Oracle Technical Deep Dive] OCI AI Resilience -OCIのセキュリティ対策機能をきちんと使いこなす- (2026年9月17日開催)
oracle4engineer
PRO
0
100
Amazon Bedrock Agents ClassicからAmazon Bedrock AgentCoreへ移行した際、ガードレール設定が2箇所に割れた話
matsunobu
0
170
Claude起点の仕様駆動開発
tanakaseiya
0
320
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
170
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
290
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
Building Applications with DynamoDB
mza
96
7.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
480
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Agile that works and the tools we love
rasmusluckow
331
22k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
What's in a price? How to price your products and services
michaelherold
247
13k
Transcript
Ethereumのチェーン同期方法 Full / Fast / Snap
1 ブロックチェーンの同期 • Bitcoinの場合 チェーンの同期=UTXOセットの同期 • Ethereumの場合 チェーンの同期=ステートツリーの同期 Node
Node Node Node Node Local chain Local chain Local chain Local chain Local chain ネットワークに参加したばかりのノードは、 接続したピアからブロックをダウンロードし、 ローカルのブロックチェーンのコピーを構築する。 他のノードが持つ全ブロックのコピーが終わると ブロックチェーンの同期が完了する。
2 Ethereumのステート • ステートツリー 各アカウントのステートで構成されるツリー ◦ ストレージツリー 各アカウントのストレージツリー •
トランザクションツリー ブロック内のトランザクションで構成されるツリー • レシートツリー ブロック内のトランザクションレシートで構成されるツリー ↑の解説については、GBEC動画「Coparing Bitcoin and Ethereum」参照↓ https://goblockchain.network/2020/02/comparing-bitcoin-and-ethereum/ 同期のボトルネックになるのはここ
3 Merkle Patricia Trie EthereumでKey-Value形式でデータを格納し、その暗号学的なコミットメントを 提供するhex-aryツリーで、データの挿入・削除が効率的に行える
詳しいデータ構造や仕組みはGBEC動画「RLPとMerkle Patoricia Tree」参照↓ https://goblockchain.network/2020/01/rlp-merkle-patrical-tree/ Root Hash 0 1 2 ... e f 値 Hash 0 1 2 ... e f 値 Hash 0 1 2 ... e f 値 各中間ノードは最大16個の 子ノードのハッシュ値を持つ Hash 5e3(ニブル) 値 ・・・ Hash f(ニブル) 値 Hash 4c21(ニブル) 値 あるキーの値は、ルートノードから キーのデータを辿った先の リーフノードに存在。 キー「1e…f」の値
4 Full sync 最も単純なブロックチェーンの同期方法
ブロック内のトランザクションをすべて実行し、ステートツリーを更新 • 一番トラストレスにステートツリーを構築できる • ジェネシスブロックから最新ブロックまですべてのトランザクションを実行するのはヘビー ◦ 現状、性能の良いマシンで初期同期に1週間から10日 ◦ CPUリソースとディスクIOに負荷 New Block Transactions New Root EVM
5 Fast sync Geth v1.6.0から導入された高速同期モードで、ある時点のツリーを直接ダウンロードする ピボットブロックを選択 ・・ ・・
・・ ・・ IBD Node Peer GetNodeData NodeData ピボットブロックの ステートルートハッシュをトリガーに ツリーのノードデータを要求 NodeDataで対象のノードデータを送信 ルートノードから、下に すべてのノード情報をダウンロードし ステートツリーを復元 ステートツリー復元後はFull syncと同様、 トランザクションを実行してステートツリーを更新
6 Fast syncのメリットとボトルネック • Fast syncのメリット ◦ ジェネシス〜全Txを実行する必要がなくなり、同期速度が向上(約11時間) • Fast
syncのボトルネック ◦ ステートツリーの成長 ・・ ・・ ・・ 現在、mainnetのステートツリーには、約 6億7500万個の ノードが存在し、そのダウンロードがボトルネックに • 最低でも175万回の通信のラウンドトリップが発生。 → ネットワークのRTTの合計が約 150分 • ピアがGetNodeData要求に対応する際の ディスクアクセスが約2700回弱。 →構造上ランダムアクセスになり、 10ピアと並行実行しても約 108分のRead時間 • GetNodeDataによるハッシュのアップロードが約21GB、 NodeDataによ るダウンロードが2倍ちょっと。 →アップロードに56分、ダウンロードに63分 Fast syncではネットワークの帯域幅、レイテンシー、ディスクIOがボトルネックに
7 Snap sync Geth v1.10.0から利用可能になったスナップショットを利用した同期方法 SNAP protocol: https://github.com/ethereum/devp2p/blob/master/caps/snap.md
Peer ・・ ・・ ・・ Snapshot IBD Node チェーンのある時点のViewであるSnapshotを作成 GetAccountRanges AccountRange GetStorageRanges StorageRange GetByteCodes ByteCodes 取得したステートデータから ツリーを再構築 大量のツリーの中間ノードを ダウンロードせずに済み、 Fast syncのボトルネックを解消
8 Snap syncのトレードオフ • Snap syncに同期時間が短縮
• Snap syncのオーバーヘッド ◦ スナップショットの初期作成に1日〜1週間かかる (要:スナップショットを持つピアへの接続) ◦ 現状20〜25GBの追加のディスクスペースが必要 ◦ 巨大なReorgが発生するとスナップショットを再作成する必要がある ▪ Reorgに対応するためスナップショットは永続化レイヤーと インメモリの差分レイヤーで構成される。 再作成は、永続化レイヤーに影響を与えるReorgが発生した場合のみ。