Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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と量子コンピュータについて対話できる人を募集しています 最後に