Sharding

F4a94c818da7c943420763ba0541d0cf?s=47 wshino
June 26, 2018

 Sharding

6/26のビットコインとか勉強会#19の発表資料です。

F4a94c818da7c943420763ba0541d0cf?s=128

wshino

June 26, 2018
Tweet

Transcript

  1. sharding ビットコインとか勉強会 2018.6 DMM.comラボ スマートコントラクト事業部 篠原航

  2. 本日のアジェンダ • スケーラビリティ問題 • shardingとは • sharding phase 1

  3. 自己紹介 篠原航 DMMスマートコントラクト事業 部テックリード。計算リソース の効率化、継続的デリバリや デプロイの開発を支える仕組 み作り、ウォレットの実装を担 当。最近ヨーヨーにはまってい て、ループザループを習得し たい。

    https://www.amazon.co.jp/dp/4839965137/
  4. Caution! 6/24に発表された Casper + Shardingの同時実装の話ではありません。 こちらはまた追って解説します。 https://ethresear.ch/t/convenience-link-to-full-casper-chain-v2-spec/2332

  5. スケーラビリティ問題 Shardingとは Sharding Phase 1 Section01 Section02 Section03

  6. スケーラビリティ問題 • 全てのノードが同じ処理をする • 全てのノードが同じ状態を持つ • ハッシュパワーが上がってもtxスピードは変わらない Node 10tx/s Node

    10tx/s New! DatabaseでいうとMulti-Masterの状態 タスク、みんなと一緒。。
  7. スケーラビリティの解決方法 • Raiden ◦ 家の外で遊ぶ • Plasma ◦ 隣の部屋で遊びながら都度報告してくれる

  8. Raiden • Off Chainのスケーリングソリューション ◦ Lightning NetworkのEthereum版 • 状態遷移をオフチェーンでやり取りする •

    State(Payment) Channelと言われる On-Chain Off-Chain ここでのやり取りは記録さ れない
  9. Plasma • Side Chainのスケーリングソリューション • Main ChainにPlasma Chainを接続 • Plasmaに処理を移譲

    On-Chain Plasma-Chain ここでのやり取りは Plasma Chainに記録。適 宜Merkle RootをMain Chainに公開する
  10. Plasmaの現状 • 2017年に公開 • 様々な提案がなされている ◦ Plasma ◦ Minimal Viable

    Plasma ◦ More Viable Plasma ◦ Plasma Cache, Plasma XT, Plasma Debit
  11. スケーラビリティ問題 Shardingとは Sharding Phase 1 Section01 Section02 Section03

  12. データベースのSharding • MySQLであれば、PartitioningとかSpider Engineとか ◦ データを水平に分割してデータ容量と処理性能をかせぐ Alice Bob Charlie Dave

  13. EthereumのSharding • On Chainのスケーラビリティソリューション • Off Chain, Side Chainではなく、Main Chain(Ethereum本体)を改良

    ◦ ハードフォークの必要性がある • PoSに移行することが前提
  14. Shardingの構成 • Main ChainをK個の断片に分割する ◦ アドレスごとに分割する • 各断片では全体のtxを並列に処理する • 理論値

    = Main Chainの処理性能 x K
  15. Shardingのロードマップ Phase 1 ◦ 基本的なshard ◦ EVMなし Phase 2 ◦

    EVM実装 Phase 3 ◦ Executor ◦ ライトクライアントの実装 Phase 4 ◦ Shard間のコミュニケーション Phase 5 ◦ Main Chainのセキュリティと密結合 Phase 6 ◦ Shard内でのShard ◦ ロードバランシング
  16. スケーラビリティ問題 Shardingとは Sharding Phase 1 Section01 Section02 Section03

  17. 用語の解説 • Collation ◦ Collation Header • Period • Proposer

    • Collator • Sharding Manager Contract • Lookahead Period • Executor (Phase3)
  18. Collation, Collation Header • Main Chainと異なる用語を使う

  19. Collation内部構造 shard_id : Collationの番号 parent_hash : 前のCollationのハッシュ chunk_root : txをmerklizeしたroot

    period : Collationが入るPeriodの番号 proposer_address : Collationを提出したユーザーアドレス proposer_bid : Collatorに渡す報酬 proposer_signature : Proposerの署名 Collation Header Collation Body collation_body : txを32byteのchunkにしたもの Collation
  20. Period • Main Chainで決めている周期の単位 ◦ PERIOD_LENGTH = 5であればMain Chainの5blockごとにPeriod が切られている

    Period 1 Period 2
  21. Proposer • blob(tx)を拾いchunkにエンコードする • chunkをchunk treeにしてchunk rootをcollation headerに入れる blob 1

    blob 2 ... blob i chunk 1 chunk 2 ... chunk j 32byte単位 chunk 1 chunk 2 chunk 3 chunk 4 chunk root
  22. Proposer • collationを作成してCollatorに渡す collation Proposer Collator

  23. Collator • Proposerから受け取ったcollationを検証する • 検証後、shard内のチェーンにcollationを繋げる Collator collation Validate collation collation

    collation New! chaining
  24. Collator • Periodごとにcollation headerをMain Chainに送信する Collator collation header Main Chain(SMC)

  25. Sharding Manager Contract(SMC) • PeriodごとにCollatorを各shardに割り振る

  26. Sharding Manager Contract(SMC) • PeriodごとにProposerを登録する • Collatorのdepositを管理し、collationを検証し、不正なら提出した Collatorからdepositを没収する Collator invalid

    collation header SMC No!
  27. Lookahead Period • Collatorが先にどこのShardに配属されるかを教える ◦ LOOKAHEAD_PERIODS = 4 ◦ 4Period前にStateをダウンロード

    ◦ Collatorは準備期間が持てる
  28. Executor • Phase3で実装予定 ◦ ProposerがExecutorを兼ねる • txの処理を行う • コントラクトのコードを実行する(EVMはphase2で実装予定) •

    状態遷移の結果を提示する
  29. 流れ Proposer Main Chain(SMC) Collator 1. Proposer -> SMCにdeposit 2.

    Collator -> SMCにdeposit Shard 1 ... Shard 2 Shard n
  30. 流れ Main Chain(SMC) Collator 3. Collator -> SMC、どこのShard に割り振られているのか定期的 に確認

    4. 割り当てられていたら Lookahead Period期間に ShardのStateをダウンロードす る どこのShard? Shard 1 ... Shard 2 Shard n Download Shard 2 Proposer
  31. 流れ Collator 5. Proposer -> Collator、 Proposal Bidと署名を入れて collationを提出 6.

    Collator、collationを検証して Proposal bidをもらう 7. 前のcollationに5で受け取った collcationを繋げる Proposer collation Validate collation collation collation New! Get bid Shard 2
  32. 流れ Collator 5. PeriodごとにCollation Header をSMCに送る Proposer collation

  33. 悪意のあるCollatorがいた時は • シャッフルされた後のCollatorがheadのCollationの不正を見つける • 遡って検証してフォークする • フォークした正しいcollation headerをMain Chainに送信する

  34. • PeriodごとにSMCでCollatorを入れ替える ◦ 入れ替え作業はMain Chainで行う Phase1の問題 入れ替えはtxの承認を待つので、 その間shard側の処理ができない

  35. Phase1の問題 • Shardは常にCollatorによって処理をしつつ、適切なタイミングでMain Chainから値を受け取るようなcross-linkにできないか? • S2MC link

  36. ZilliqaのSharding • ZilliqaではShardingを実現している • Ethereumとの違い ◦ ネットワークの分割で並行処理する ◦ 状態ごとに分割していない(Full State)

    • 特定のアドレスを処理するShardは固定している • Shard内でブロックを生成し、特権ノードに送信 • 特権ノードが各Shardにブロックをブロードキャスト
  37. KyberNetworkのSharding • Gormos ◦ KyberNetworkが用意する独自のPlasma Chain ◦ Plasma Chainの中でShardingする ◦

    テクニカルペーパーがそろそろ出る
  38. • DMMでは様々な人材を募集しています ◦ https://dmm-corp.com/recruit/top • 私はブロックチェーンと AIと量子コンピュータについて対話できる人を募集しています 最後に