Shasper概要
goal:7月のJustinの動画をベースに現状のShasperの概要、方向性を理解する
https://www.youtube.com/watch?v=J6xO7DH20Js
少し古いが全体像がしっかりと分かる
現在はRNG(VDFs)、fork choice rule、同期的crosjs-shard、accumulator、データ構造、P2Pレイヤ、などの仕様改善が進められているフェーズ
shasperの仕様は超頻繁に変わる
ethereum researchのスレを追うのが基本的な学習方法なので学習コストが無駄に高い
細かい仕様、トップリサーチャーのうわべの議論を追うのではなく目指している方向性、重要な技術的トピックをまずは理解していくことが重要
sharding1.0 → sharding2.0へ
shasper = sharding + casper
元々はcasper FFGとShardingが別々にR&Dされていたが、sharding ver.1の仕様だとshard chainのブロック生成時間がメインチェーンのブロック生成時間に依存してしまうので、スケールしにくいという課題点があった。
そのために、shardとmain chainの間にbeacon chainを挟むことで、beacon chainのブロック生成時間に依存したよりblock timeが早いshard chainを作れるようにした。
beacon chainはランダム値を生成するので、casperのバリデーター選出にも用いることができるので統合した実装した方が良さげ。→ sharding 2.0
Shasper
コンセンサスに参加するには、main chainで32ETHをデポジットすることでbeacon chainのvalidation poolに参加することができる。
shardsごとに状態を管理。
https://gyazo.com/14984bbfbc2b72b7c2fdd8598179c7df
validation poolから、以下のentityをRNGにより選出。
beacon proposer:beacon chainのブロック生成者
shard proposer:shard chainのブロック生成者
Notary:ブロックのバリデーション、shardとbeaconの架け橋
Beacon chain
beacon chainの役割は、
Randomness:shardingのエンジン。
Crosslinks:shardsとbeacon chainの架け橋になるとともにcasper voteにも使われFinalityを与える。
Accounting:バリデーターの残高の状態を管理。(deposit + reward - penalty)
実装事例
Randomness
RANDAO + VDFsが現状かなり有力。(VDF = Verifiable Delay Functions)
RANDAOは参加者がデポジットとともにhash(secret)をcommitして、secretをrevealしそれらのXORを計算することでランダム値として利用する。ただ、このような現状の実装のRANDAOだと最後にrevealする人がランダム値を予測して、revealするかしないかを選択することができてしまう。
そこで、RANDAOとVDFsを組み合わせることで良いランダム値生成を実現する。(BLSだとsetupや常時onlineを要求)
つまり、RANDAOにおけるrevealフェーズの後(weak entropy)に、ランダム値をinputする関数をVDFsにしてそのoutputをランダム値とすることで、最後のrevealerはランダム値を予測するための計算リソースを有していない(はず?)のでbiasがかからない。(strong entropy)。VDFsはPoWと違い独占的。
VDFs(Verifiable Delay Functions)
VDFは計算(証明)するためにはとても多くの計算が必要で、そのoutputを検証するのは少ない計算量で行うことができる関数。
VDFとPoWが似ている点
計算が大変なこと
検証が簡単なこと
VDFとPoWが異なる点
PoWは、
proof of parallelizable work:並列的な仕事の証明
probabilistic:確率論的
関数でない
VDFは、
Proof of Sequential work:連続的な仕事の証明
determinisitic functions:決定論的関数
並列的 VS 連続的
GPU vs CPUと一緒。
VDFの計算をより大変により長くするためには、連続的な計算のサイクルを多く回していく必要があることが必要。つまり、Nサイクル目の計算を行うためのはN-1サイクルの計算が終わっていることが必要。
連続的計算をより早く行うためには、PoWのように大量のハードウェアで並列的に計算するのでは意味なく、より性能の良いハードウェアを利用するしかない。
確率論的 vs 決定論的関数
VDFは関数なので、あるinputに対して検証可能な1つの正当なoutputが出力する。PoWアルゴリズムは、閾値以上のたくさんの正解があり、並列的に大量に計算することで検証を満たすある1つの正解に確率的にヒットする。
つまり、PoWは並列的かつ確率論的な性質により計算パワーを多く有してるほど競争に勝つ確率が高くなるので並列的計算パワーを多く得ることにインセンティブが働くように設計されているのに対し、VDFは一番さいきょーのハードウェア(VDFをsolveするスピードが早い)人が常に勝ち続けるという厳しい世界になってしまう。つまり、最速のユーザーの95%のスピードであっても勝つことができない。
具体的なVDFsの提案として、Square Roots Chain with "incrementally Verifiable" SNARK
https://www.youtube.com/watch?v=qUoagL7OZ1k
Shard growth
Validator poolからより小さいshardごとのProposal poolsを作る。
proposerはトランザクションのgasをインセンティブに働くため、Txが正当か検証する必要があるので、shardのstateにアクセスする必要がある。
https://gyazo.com/d05d5ef89e1ce4c849e178df1c222b9f
なので頻繁にシャッフルしてしまうとProposerの負担がやばいので1ヶ月に1回程度。
1epochごとに128人のProposersがランダムにリスト化される。
それぞれのブロック生成は不正なフォークを防ぐため、一定数閾値数の他のProposerによる署名が必要。
Notarization
https://gyazo.com/4a7b5fb9875b8158429f2a46c9176b91
データ可用性問題の解決。
2/3がhonestな1MのバリデーターがいるValidator poolから1000 notariesをランダムに選出した時、Notary committeeで1/2がhonestである確率は非常に高い。
Notary committeeが128-period epochごとのチェックポイントでそのepochのブロックが可用であるか(DL可能か)チェックし、半数以上のnotaryが署名→この署名がCrosslinksにkなる。
Crosslinks
https://gyazo.com/0db3e2e582522957a4ca79ac6267abe7
非同期なシャード間コミュニケーション
デメリット:遅い。ファイナリティを得たTxしか使えない。
train-and-hotel問題を解決した同期cross-shardコミュニケーションはむずく、以下のような方法が提案されている。
casperの32ETHステーキング投票に使われる。
https://gyazo.com/29b69ece3462a561f8f902854acaaf01
Proof of Custody
honestなNotaryが経済合理的な行動を仮定すると、計算コストなどをかけずに(ブロックチェーンをダウンロードせずに)多くの投票(署名)が集まった段階でcrossLinksのための署名を送ろうとしてしまう。
解決策として、Notaryが実際のブロックチェーンデータを持っていないで投票することはかなりコストがかかるように設計する。
https://gyazo.com/8e4b60f9d6baa76be615c2c46279782a
データを複数に分割し、それぞれのデータにsecret saltを結合しマークルルートにまとめ、その最初の1bitを投票に使う。
https://gyazo.com/c7eb95318199a7f4ade76579b5d98f72
commit-reveal方式の投票になるので、最初にhash(secret)をコミットしている。もし、データ取得計算を他の人にやってもらおうとすると、その人はsecretを使ってslash/rewardすることができる。
bit提示後にsecretをrevealし、そのrevealを使って提示したbit投票が間違っていることがチャレンジされたらslash。
Aggregation
cross linksには以下の役割があり400bytes以下。
データ可用性に関する投票(Data availability votes)
Casper Votes
Shard checkpoints(beacon chainとshards間のコミュニケーション)
Proofs of custody
→BLS署名による集約
よい資料
勉強会スレ
mosa-san < 32ETHデポジットした人はどっちに割り振られて要る?