From ab50235e390eee013d92a67c175851056cb41b08 Mon Sep 17 00:00:00 2001 From: Steven Gu Date: Mon, 23 Oct 2023 18:29:15 +0800 Subject: [PATCH] Add feature `strict-ccc` for precheck panic. --- bus-mapping/Cargo.toml | 1 + bus-mapping/src/evm/opcodes/create.rs | 3 ++- prover/Cargo.toml | 1 + zkevm-circuits/Cargo.toml | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bus-mapping/Cargo.toml b/bus-mapping/Cargo.toml index 154bf8c0ac..7feaac6f0f 100644 --- a/bus-mapping/Cargo.toml +++ b/bus-mapping/Cargo.toml @@ -48,3 +48,4 @@ test = ["mock", "rand"] scroll = ["eth-types/scroll", "mock?/scroll"] # Enable shanghai feature of mock only if mock is enabled (by test). shanghai = ["eth-types/shanghai", "mock?/shanghai"] +strict-ccc = [] diff --git a/bus-mapping/src/evm/opcodes/create.rs b/bus-mapping/src/evm/opcodes/create.rs index 422809c045..87db5f0b11 100644 --- a/bus-mapping/src/evm/opcodes/create.rs +++ b/bus-mapping/src/evm/opcodes/create.rs @@ -135,7 +135,8 @@ impl Opcode for Create { // ErrNonceUintOverflow occurred. let is_precheck_ok = depth < 1025 && caller_balance >= callee.value && caller_nonce < u64::MAX; - if !is_precheck_ok { + + if cfg!(feature = "strict-ccc") && !is_precheck_ok { panic!("invalid tx: create is_precheck_ok"); } diff --git a/prover/Cargo.toml b/prover/Cargo.toml index 98fdfaf5d2..279e63e0f9 100644 --- a/prover/Cargo.toml +++ b/prover/Cargo.toml @@ -41,4 +41,5 @@ default = [] parallel_syn = ["halo2_proofs/parallel_syn", "zkevm-circuits/parallel_syn"] scroll = ["bus-mapping/scroll", "eth-types/scroll", "zkevm-circuits/scroll"] shanghai = ["bus-mapping/shanghai", "eth-types/shanghai", "zkevm-circuits/shanghai"] +strict-ccc = ["bus-mapping/strict-ccc", "zkevm-circuits/strict-ccc"] test = [] diff --git a/zkevm-circuits/Cargo.toml b/zkevm-circuits/Cargo.toml index 30cab64d05..b76a0228ed 100644 --- a/zkevm-circuits/Cargo.toml +++ b/zkevm-circuits/Cargo.toml @@ -70,6 +70,7 @@ scroll = ["bus-mapping/scroll", "eth-types/scroll", "mock?/scroll", "zktrie", "p # Enable shanghai feature of mock only if mock is enabled (by test). shanghai = ["bus-mapping/shanghai", "eth-types/shanghai", "mock?/shanghai"] +strict-ccc = ["bus-mapping/strict-ccc"] test-circuits = [] warn-unimplemented = ["eth-types/warn-unimplemented"] onephase = [] # debug only