Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

スケーラビリティ問題 ● 全てのノードが同じ処理をする ● 全てのノードが同じ状態を持つ ● ハッシュパワーが上がってもtxスピードは変わらない Node 10tx/s Node 10tx/s New! DatabaseでいうとMulti-Masterの状態 タスク、みんなと一緒。。

Slide 7

Slide 7 text

スケーラビリティの解決方法 ● Raiden ○ 家の外で遊ぶ ● Plasma ○ 隣の部屋で遊びながら都度報告してくれる

Slide 8

Slide 8 text

Raiden ● Off Chainのスケーリングソリューション ○ Lightning NetworkのEthereum版 ● 状態遷移をオフチェーンでやり取りする ● State(Payment) Channelと言われる On-Chain Off-Chain ここでのやり取りは記録さ れない

Slide 9

Slide 9 text

Plasma ● Side Chainのスケーリングソリューション ● Main ChainにPlasma Chainを接続 ● Plasmaに処理を移譲 On-Chain Plasma-Chain ここでのやり取りは Plasma Chainに記録。適 宜Merkle RootをMain Chainに公開する

Slide 10

Slide 10 text

Plasmaの現状 ● 2017年に公開 ● 様々な提案がなされている ○ Plasma ○ Minimal Viable Plasma ○ More Viable Plasma ○ Plasma Cache, Plasma XT, Plasma Debit

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

EthereumのSharding ● On Chainのスケーラビリティソリューション ● Off Chain, Side Chainではなく、Main Chain(Ethereum本体)を改良 ○ ハードフォークの必要性がある ● PoSに移行することが前提

Slide 14

Slide 14 text

Shardingの構成 ● Main ChainをK個の断片に分割する ○ アドレスごとに分割する ● 各断片では全体のtxを並列に処理する ● 理論値 = Main Chainの処理性能 x K

Slide 15

Slide 15 text

Shardingのロードマップ Phase 1 ○ 基本的なshard ○ EVMなし Phase 2 ○ EVM実装 Phase 3 ○ Executor ○ ライトクライアントの実装 Phase 4 ○ Shard間のコミュニケーション Phase 5 ○ Main Chainのセキュリティと密結合 Phase 6 ○ Shard内でのShard ○ ロードバランシング

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

用語の解説 ● Collation ○ Collation Header ● Period ● Proposer ● Collator ● Sharding Manager Contract ● Lookahead Period ● Executor (Phase3)

Slide 18

Slide 18 text

Collation, Collation Header ● Main Chainと異なる用語を使う

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Period ● Main Chainで決めている周期の単位 ○ PERIOD_LENGTH = 5であればMain Chainの5blockごとにPeriod が切られている Period 1 Period 2

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Proposer ● collationを作成してCollatorに渡す collation Proposer Collator

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Collator ● Periodごとにcollation headerをMain Chainに送信する Collator collation header Main Chain(SMC)

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Lookahead Period ● Collatorが先にどこのShardに配属されるかを教える ○ LOOKAHEAD_PERIODS = 4 ○ 4Period前にStateをダウンロード ○ Collatorは準備期間が持てる

Slide 28

Slide 28 text

Executor ● Phase3で実装予定 ○ ProposerがExecutorを兼ねる ● txの処理を行う ● コントラクトのコードを実行する(EVMはphase2で実装予定) ● 状態遷移の結果を提示する

Slide 29

Slide 29 text

流れ Proposer Main Chain(SMC) Collator 1. Proposer -> SMCにdeposit 2. Collator -> SMCにdeposit Shard 1 ... Shard 2 Shard n

Slide 30

Slide 30 text

流れ Main Chain(SMC) Collator 3. Collator -> SMC、どこのShard に割り振られているのか定期的 に確認 4. 割り当てられていたら Lookahead Period期間に ShardのStateをダウンロードす る どこのShard? Shard 1 ... Shard 2 Shard n Download Shard 2 Proposer

Slide 31

Slide 31 text

流れ 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

Slide 32

Slide 32 text

流れ Collator 5. PeriodごとにCollation Header をSMCに送る Proposer collation

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

ZilliqaのSharding ● ZilliqaではShardingを実現している ● Ethereumとの違い ○ ネットワークの分割で並行処理する ○ 状態ごとに分割していない(Full State) ● 特定のアドレスを処理するShardは固定している ● Shard内でブロックを生成し、特権ノードに送信 ● 特権ノードが各Shardにブロックをブロードキャスト

Slide 37

Slide 37 text

KyberNetworkのSharding ● Gormos ○ KyberNetworkが用意する独自のPlasma Chain ○ Plasma Chainの中でShardingする ○ テクニカルペーパーがそろそろ出る

Slide 38

Slide 38 text

● DMMでは様々な人材を募集しています ○ https://dmm-corp.com/recruit/top ● 私はブロックチェーンと AIと量子コンピュータについて対話できる人を募集しています 最後に