Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ethereumのシャーディング概論

511 views

Published on

Ethereum 2.0 (Serenity) で導入予定のシャーディングについて概要をお話しします。

Published in: Engineering
  • Be the first to comment

Ethereumのシャーディング概論

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

×