# ZCashのZKEVMについての調査 - [リポジトリ](https://github.com/appliedzkp/zkevm-circuits) ## 技術詳細 - VMの基本的なオペコードやsetupについては大体できている感じ - TXをparseして実行結果をかえし、その状態遷移をbusmapping(後述)に反映することはできない (busmappingとzkEVM本体とのつなぎこみは全体的に出来ていない感じ) - また、Storageまわりについてはどうなっているかみれていない(busmappingとのつなぎ込みが不十分なため正しくステートを書き換えることは現状できないと考えられる) ## [Halo2](https://zcash.github.io/halo2/index.html)について - PLookupベース - FixedLookup(あらかじめ計算結果の表が存在しているLookup)についてはrecursiveにまわせる? - Linearに計算量が増える領域ではrecursiveができない - ZKSyncのZKEVMにくらべるとおそらく複雑な処理(read writeなど)が少ないと早く、多いと遅い印象 - 使い方のdocumentがなさすぎて詳細についてはまだわからない ## [Bus Mapping](https://hackmd.io/AmhZ2ryITxicmhYFyQ0DEw) - ステート遷移の真正性を担保するチェーンのMerkle treeに該当するもの(hashのコストが1000constraintsかかることをふまえ、) - 呼び出されたopcodeを加工したarrayを生成し、```basmapping[選択されたindex] == 正しいvalue```になることを保証するwitnessを生成する - plookup tableに落とし込める(key, value, mappingをそれぞれplookupしたものを比較すれば正しいステートであることをproofできる)ため、こすとがひくい - key, valueおよびそれらをハッシュしたものを結合した値をarrayに格納したもの (hashするのは衝突をさけ、悪意のある改変をふせぐため) ###### tags: `zkEVM`