# Use hyperzexe as a recursive prover ## Work flow 1. $\pi_1$: zkevm with halo2-kzg 2. $\pi_2$: recursive proof of $\pi_1$ over hyperplonk 3. $\pi_3$: recursive proof of $\pi_2$ over halo2-kzg 4. on chain verify $\pi_3$ ## Comparison Assuming zkevm circuit is of size $2^{26}$ rows by $1000$(?) columns. - Existing halo2 non-native snark-verifier requires $2^{24}$ constraints and around $20$ columns - The proposed scheme requires $2^{22}$ rows by $13$ columns. - To verify $\pi_1$ with Hyperplonk, we need to batch verify 1000 KZG commitment and opneings. That is $2000$ group operations to re-randomize and aggregate the commitments and the openings; and 1 pairing (which we may defer to later). Assuming we can do each MSM in 300 constraints (requires dynamic lookups) and 13 columns, we will need $2^{20}$ constraints. - To verify $\pi_2$ with Halo2-KZG, we need to batch verify 13 Hyrax proofs of dimension $2^{20}$. That requires $13 * \sqrt{2^{20}} < 2^{14}$ group operations. Also assuming we can do each MSM in 300 constraints and 13 columns, we will need $300 * 2^{14} \approx 2^{22}$ constraints. - best case -- open all poly at a same point $300 * \sqrt{13 * 2^{20}} = 2^{20.07}$ ## TODOs: - can we batch iop in hyperplonk [optimization] - integrate ~~hyperlonk or~~ any ML-lookup [essential] -