---
# System prepended metadata

title: ZCashのZKEVMについての調査
tags: [zkEVM]

---

# 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`