ビットバンク株式会社
Ethereumのシャーディング概論
@d-yokoi
Bitbank LT Night #4 ~Blockchain~
❏ ビットバンクでサーバーサイドを担当
❏ Node.js, TypeScript
❏ 前職ではモバイルゲームを開発
❏ C++, C#, PHP, etc.
❏ 最近の趣味
❏ Ethereum
自己紹介
Daiki Yokoi
Copyright © bitbank, inc.
テーマとアジェンダ
Copyright © bitbank, inc.
Ethereumのシャーディングの全体像を理解する
❏ 開発ロードマップ
❏ シャーディングの必要性
❏ シャーディングの全体像
❏ Beacon Chain
❏ シャード間コミュニケーション
開発ロードマップ
Copyright © bitbank, inc.
4つの開発ステージの最終段階に迫って
いる
❏ Frontier (2015/07)
❏ 開発者向けの実験版
❏ Homestead (2016/03)
❏ 初めてのプロダクションリリース
❏ Metropolis (2017/10)
❏ より軽量に、高速に、そして安全に
❏ Serenity (TBD)
❏ Proof-of-Stake, シャーディング
SerenityはEthereum2.0とも呼ばれる大型プロジェクト
開発ロードマップ
Copyright © bitbank, inc.
オンチェーンでのスループット向上が課題
❏ なぜボトルネックになってしまうのか
❏ 各ノードが全てのトランザクションを検証する
❏ ノードの数が増えても検証スピードは上がらない
❏ State Channel, Plasmaなどではダメなのか
❏ これらはオフチェーンによるスケーリング対策
❏ オンチェーンへの依存はなくならない
❏ 並行して対策することでより効果的なスケーリングが可能となる
Copyright © bitbank, inc.
シャーディングの必要性
シャーディングの全体像
Copyright © bitbank, inc.
多数のShard Chainとそれらを管理するBeacon Chain
❏ ネットワークは複数のシャードに分割される
❏ シャードごとにStateとブロックチェーン (Shard Chain) が存在
❏ コンセンサスアルゴリズムはPoSに変更される
❏ ブロックの生成はETHをステーキングしたバリデータが行う
❏ バリデータを管理するためのブロックチェーンが登場する
❏ Shard Chainに対してBeacon Chainと呼ばれる
❏ こちらもPoSによって稼働する
シャーディングの全体像
Original diagram from 『 What you can do for Ethereum 2.0 a.k.a. sharding 』 by Hsiao-Wei Wang.
Copyright © bitbank, inc.
Proof-of-Stakeを実現するための様々な機能を提供
❏ 最初に導入されるコンポーネント
❏ 後のフェーズでShard Chainが登場する
❏ PoSの中核としてシャーディング実現をサポート
❏ PoSはBeacon Chain, Shard Chain双方のコンセンサスに適用される
❏ 非中央集権性は維持される
❏ シャードから見ると中心的役割だがこれ自体が分散して稼働する
Copyright © bitbank, inc.
Beacon Chain
バリデータを管理する
❏ バリデータの登録
❏ 32ETHをデポジットすることでバリデータになれる
❏ デポジット先はMain Chainにデプロイされる特定のコントラクト
❏ このコントラクトを監視して各アカウントの残高を管理する
❏ バリデータの解除
❏ バリデータは特に制約なくバリデータをやめることができる
❏ リワードとペナルティを考慮した上でデポジットが返却される
❏ 返却先はいずれかのシャードであり、Main Chainには戻せない
Copyright © bitbank, inc.
Beacon Chain
Block Proposer, Committeeを抽選する
❏ Block Proposer
❏ 事前にBeacon Chainによってバリデータから抽選される
❏ Beacon Chainと各Shard Chainにそれぞれ1名ずつ割り当てられる
❏ Committeeの投票をもって正当なブロックチェーンを判断する
❏ 正当なブロックチェーンの最後尾に新たなブロックを生成する
❏ Committee
❏ 事前にBeacon Chainによってバリデータから抽選される
❏ Beacon Chainと各Shard Chainにそれぞれ複数名ずつ割り当てられる
❏ 合意形成のため正当なブロックチェーンに投票する
Copyright © bitbank, inc.
Beacon Chain
ランダム性を提供する
❏ 乱数生成はPoSの肝となる
❏ Block Proposerの抽選
❏ Committeeの抽選
❏ RANDAOを活用
❏ スマートコントラクトによる乱数生成の仕組み
❏ 複数の参加者による任意の秘密値をインプットにするため予測が困難
❏ インセンティブや罰則の仕組みが備わっている
Copyright © bitbank, inc.
Beacon Chain
リワードとペナルティを付与する
❏ リワード
❏ PoSに参加して正直に振る舞うことでリワードを得ることができる
❏ リワードはデポジットに追加される
❏ ペナルティ
❏ 不正を働くと32ETHのデポジットを没収される
❏ ブロックへの投票を怠った場合も小額のデポジットを没収される
❏ デポジットが16ETHを下回るとバリデータ群から排除される
Copyright © bitbank, inc.
Beacon Chain
Crosslinksの生成
❏ Crosslinkとは
❏ Beacon BlockとShard Blockを紐づけるもの
❏ 対象のShard BlockはCommitteeの投票により決定する
❏ これによりBeacon Blockと同時にファイナリティを得る
Copyright © bitbank, inc.
Beacon Chain
Beacon Chain
epoch
slot
6 seconds
Epoch, Slotという単位時間ごとに各処理を行う
ブロックの生成・投票
64 slots = 6.4 minutes
o バリデータの整理
o Block Proposer, Committee抽選
o リワード・ペナルティ
o Crosslinks生成
Copyright © bitbank, inc.
異なるシャードのアカウントに送金する方法
❏ Beacon Chainを介して非同期的に処理
❏ [ 例 ] Alice (Shard M) 100ETH => Bob (Shard N)
❏ Aliceの残高を100減らすトランザクションがMに送られる
❏ Mにトランザクションのレシートが作成される
❏ レシートをデータにしたトランザクションがNに送られる
❏ Nはレシートが未処理であることを確認してBobの残高を100増やす
Copyright © bitbank, inc.
シャード間コミュニケーション
シャード間コミュニケーション
Source: Ethereum Sharding FAQ
Copyright © bitbank, inc.
シャード間トランザクションの課題
❏ 非同期のトランザクション処理には時間がかかる
❏ 結果がオンチェーンで処理されるまでに5Epoch(26min~)はかかる
❏ 一定時間内に通信できることを前提とするアプリが成立しない
❏ train-and-hotel problem
Copyright © bitbank, inc.
シャード間コミュニケーション
シャード間コミュニケーション
Copyright © bitbank, inc.
課題克服に向けてリサーチが続いている
❏ Yanking
❏ スマートコントラクトを別シャードに移動するアイデア
❏ レシートのデータ領域を利用
❏ コードやストレージを含めて丸ごと移動する
❏ 移動中はコントラクトの実行が不可能になる
❏ データ量に従って移動コストが増える
シャード間コミュニケーション
Copyright © bitbank, inc.
課題克服に向けてリサーチが続いている
❏ Shard Pairings
❏ ブロック生成のたびにランダムにシャードのペアを作るアイデア
❏ この間はペアのシャードのStateにアクセス可能
❏ 特定のシャードとペアになる確率が低い
❏ 3つ以上のシャードが関わることができない
❏ Shard Zones
❏ Shard Pairingsのペアをより多くのグループに拡張するアイデア
❏ 複数シャードにまたがったコントラクトを実行可能
❏ 多くのシャードがStateを共有するとシャーディングの効果が薄れる
❏ Proof-of-Stakeは徐々に形が見えてきている
Copyright © bitbank, inc.
❏ シャーディングは非常にチャレンジングなテーマ
❏ まだまだリサーチ段階
❏ 仕様や用語が頻繁に変わるので学習コストが高い
❏ 長期的な視点で関わっていきたい
感想
最後に
ご静聴ありがとうございました (
Copyright © bitbank, inc.
́6 ` )
参考資料
Copyright © bitbank, inc.
❏ Proof of Stake FAQs
https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs
❏ Sharding FAQs
https://github.com/ethereum/wiki/wiki/Sharding-FAQs
❏ Sharding roadmap
https://github.com/ethereum/wiki/wiki/Sharding-roadmap
❏ Ethereum 2.0 Phase 0 -- The Beacon Chain
https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md
❏ Ethereum 2.0 Phase 0 -- Honest Validator
https://github.com/ethereum/eth2.0-specs/blob/dev/specs/validator/0_beacon-chain-
validator.md
❏ Ethereum 2.0 Phase 1 -- Shard Data Chains
https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/1_shard-data-
chains.md
❏ Prysmatic Labs Main Sharding Reference
https://github.com/prysmaticlabs/prysm/blob/master/docs/SHARDING.md
参考資料
Copyright © bitbank, inc.
❏ Mastering Ethereum
https://github.com/ethereumbook/ethereumbook
❏ What you can do for Ethereum 2.0 a.k.a. sharding
https://docs.google.com/presentation/d/1G5UZdEL71XAkU5B2v-
TC3lmGaRIu2P6QSeF8m3wg6MU/edit#slide=id.p4
❏ State of Ethereum Protocol #1
https://media.consensys.net/state-of-ethereum-protocol-1-d3211dd0f6
❏ State of Ethereum Protocol #2: The Beacon Chain
https://media.consensys.net/state-of-ethereum-protocol-2-the-beacon-chain-
c6b6a9a69129
❏ How to Scale Ethereum: Sharding Explained
https://medium.com/prysmatic-labs/how-to-scale-ethereum-sharding-explained-
ba2e283b7fce
❏ What to Expect When ETHʼsExpecting
https://hackernoon.com/what-to-expect-when-eths-expecting-80cb4951afcd

Ethereumのシャーディング概論