From be67b9753a2ae1550bb6456df5518fbe4aad1033 Mon Sep 17 00:00:00 2001 From: Zhang Zhuo Date: Mon, 8 Apr 2024 16:55:09 +0800 Subject: [PATCH] commit --- common/libzkp/impl/src/batch.rs | 13 ++++++++++--- common/libzkp/impl/src/evm_verifier_fork_1.bin | Bin 0 -> 18047 bytes 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 common/libzkp/impl/src/evm_verifier_fork_1.bin diff --git a/common/libzkp/impl/src/batch.rs b/common/libzkp/impl/src/batch.rs index 059112945..836567e12 100644 --- a/common/libzkp/impl/src/batch.rs +++ b/common/libzkp/impl/src/batch.rs @@ -12,6 +12,7 @@ use prover::{ utils::{chunk_trace_to_witness_block, init_env_and_log}, BatchProof, BlockTrace, ChunkHash, ChunkProof, }; +use snark_verifier_sdk::verify_evm_calldata; use std::{cell::OnceCell, env, ptr::null}; static mut PROVER: OnceCell = OnceCell::new(); @@ -148,11 +149,17 @@ pub unsafe extern "C" fn gen_batch_proof( /// # Safety #[no_mangle] -pub unsafe extern "C" fn verify_batch_proof(proof: *const c_char) -> c_char { +pub unsafe extern "C" fn verify_batch_proof(proof: *const c_char, hardfork_id: usize) -> c_char { let proof = c_char_to_vec(proof); let proof = serde_json::from_slice::(proof.as_slice()).unwrap(); - - let verified = panic_catch(|| VERIFIER.get().unwrap().verify_agg_evm_proof(proof)); + let verified = panic_catch(|| { + if hardfork_id == 1 { + // before upgrade#2: 4844 + verify_evm_calldata(include!("evm_verifier_fork_1.bin"), proof.calldata()) + } else { + VERIFIER.get().unwrap().verify_agg_evm_proof(proof) + } + }); verified.unwrap_or(false) as c_char } diff --git a/common/libzkp/impl/src/evm_verifier_fork_1.bin b/common/libzkp/impl/src/evm_verifier_fork_1.bin new file mode 100644 index 0000000000000000000000000000000000000000..6b38f5da83da78e9c2c522986b97e0e3e43093f7 GIT binary patch literal 18047 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