Skip to content
This repository was archived by the owner on Jul 5, 2024. It is now read-only.

Move external_tracer from bus mapping to new crate only for test #303

22 changes: 21 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ members = [
"geth-utils",
"integration-tests",
"circuit-benchmarks",
"eth-types"
"eth-types",
"external-tracer",
"mock"
]

[patch.crates-io]
Expand Down
6 changes: 3 additions & 3 deletions bus-mapping/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ authors = ["CPerezz <c.perezbaro@gmail.com>"]
eth-types = { path = "../eth-types" }
ethers-core = "0.6"
ethers-providers = "0.6"
geth-utils = { path = "../geth-utils" }
itertools = "0.10"
lazy_static = "1.4"
log = "0.4.14"
Expand All @@ -17,6 +16,7 @@ serde = {version = "1.0.130", features = ["derive"] }
serde_json = "1.0.66"

[dev-dependencies]
url = "2.2.2"
tokio = { version = "1.13", features = ["macros"] }
mock = { path = "../mock" }
pretty_assertions = "1.0.0"
tokio = { version = "1.13", features = ["macros"] }
url = "2.2.2"
98 changes: 70 additions & 28 deletions bus-mapping/src/circuit_input_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
//! types from geth / web3 and outputs the circuit inputs.
use crate::evm::opcodes::gen_associated_ops;
use crate::exec_trace::OperationRef;
use crate::external_tracer::BlockConstants;
use crate::geth_errors::*;
use crate::operation::container::OperationContainer;
use crate::operation::{MemoryOp, Op, Operation, RWCounter, StackOp, RW};
use crate::state_db::{self, CodeDB, StateDB};
use crate::Error;
use core::fmt::Debug;
use eth_types::evm_types::{Gas, GasCost, MemoryAddress, OpcodeId, ProgramCounter, StackAddress};
use eth_types::geth_types::BlockConstants;
use eth_types::{
self, Address, ChainConstants, GethExecStep, GethExecTrace, Hash, ToAddress, ToBigEndian, Word,
};
Expand Down Expand Up @@ -1308,9 +1308,9 @@ impl<P: JsonRpcClient> BuilderClient<P> {
#[cfg(test)]
mod tracer_tests {
use super::*;
use crate::{bytecode, bytecode::Bytecode, mock, state_db::Account};
use crate::state_db::Account;
use eth_types::evm_types::{stack::Stack, Gas, OpcodeId};
use eth_types::{address, word, ToWord, Word};
use eth_types::{address, bytecode, word, Bytecode, ToWord, Word};
use lazy_static::lazy_static;
use pretty_assertions::assert_eq;
use std::iter::FromIterator;
Expand All @@ -1327,7 +1327,7 @@ mod tracer_tests {
}

impl CircuitInputBuilderTx {
fn new(block: &mock::BlockData, geth_step: &GethExecStep) -> Self {
fn new(block: &crate::mock::BlockData, geth_step: &GethExecStep) -> Self {
let mut builder = block.new_circuit_input_builder();
let tx = builder.new_tx(&block.eth_tx).unwrap();
Self {
Expand Down Expand Up @@ -1387,9 +1387,9 @@ mod tracer_tests {
PUSH2(0xab)
STOP
};
let block =
mock::BlockData::new_single_tx_trace_code_gas(&code, Gas(1_000_000_000_000_000u64))
.unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_gas(&code, Gas(1_000_000_000_000_000u64)).unwrap(),
);
let struct_logs = &block.geth_trace.struct_logs;

// get last CALL
Expand Down Expand Up @@ -1442,7 +1442,9 @@ mod tracer_tests {

PUSH3(0xbb)
};
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get last CALL
let (index, step) = block
Expand Down Expand Up @@ -1533,7 +1535,9 @@ mod tracer_tests {
PUSH3(0xbb)
};
code_b.append(&code_b_end);
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get last CREATE2
let (index, step) = block
Expand Down Expand Up @@ -1653,7 +1657,9 @@ mod tracer_tests {
PUSH3(0xbb)
};
code_b.append(&code_b_end);
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get last RETURN
let (index, step) = block
Expand Down Expand Up @@ -1739,7 +1745,9 @@ mod tracer_tests {
PUSH3(0xbb)
};
code_b.append(&code_b_end);
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get last RETURN
let (index, step) = block
Expand Down Expand Up @@ -1826,7 +1834,9 @@ mod tracer_tests {
PUSH3(0xbb)
};
code_b.append(&code_b_end);
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get last RETURN
let (index, step) = block
Expand Down Expand Up @@ -1900,7 +1910,9 @@ mod tracer_tests {
PUSH3(0xbb)
};
code_b.append(&code_b_end);
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get first STOP
let (index, step) = block
Expand Down Expand Up @@ -1954,7 +1966,9 @@ mod tracer_tests {
STOP
};
let index = 1; // JUMP
let block = mock::BlockData::new_single_tx_trace_code(&code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code(&code).unwrap(),
);
assert_eq!(block.geth_trace.struct_logs.len(), 2);
let step = &block.geth_trace.struct_logs[index];
let next_step = block.geth_trace.struct_logs.get(index + 1);
Expand All @@ -1981,7 +1995,9 @@ mod tracer_tests {
PUSH2(0xaa)
};
let index = 8; // JUMP
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code).unwrap(),
);
let step = &block.geth_trace.struct_logs[index];
let next_step = block.geth_trace.struct_logs.get(index + 1);
assert!(check_err_invalid_jump(step, next_step));
Expand Down Expand Up @@ -2012,7 +2028,9 @@ mod tracer_tests {
STOP
};
let index = 2; // REVERT
let block = mock::BlockData::new_single_tx_trace_code(&code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code(&code).unwrap(),
);
assert_eq!(block.geth_trace.struct_logs.len(), 3);
let step = &block.geth_trace.struct_logs[index];
let next_step = block.geth_trace.struct_logs.get(index + 1);
Expand Down Expand Up @@ -2040,7 +2058,9 @@ mod tracer_tests {
PUSH2(0xaa)
};
let index = 10; // REVERT
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code).unwrap(),
);
let step = &block.geth_trace.struct_logs[index];
let next_step = block.geth_trace.struct_logs.get(index + 1);
assert!(check_err_execution_reverted(step, next_step));
Expand Down Expand Up @@ -2077,7 +2097,9 @@ mod tracer_tests {
PUSH2(0xaa)
};
let index = 10; // STOP
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code).unwrap(),
);
let step = &block.geth_trace.struct_logs[index];
let next_step = block.geth_trace.struct_logs.get(index + 1);

Expand Down Expand Up @@ -2128,7 +2150,9 @@ mod tracer_tests {
PUSH1(0x00) // offset
RETURN
};
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get last RETURNDATACOPY
let (index, step) = block
Expand Down Expand Up @@ -2163,7 +2187,9 @@ mod tracer_tests {
PUSH32(0x100_0000_0000_0000_0000_u128) // offset
MSTORE
};
let block = mock::BlockData::new_single_tx_trace_code(&code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code(&code).unwrap(),
);

let index = 2; // MSTORE
let step = &block.geth_trace.struct_logs[index];
Expand All @@ -2184,7 +2210,9 @@ mod tracer_tests {
let mut code = bytecode::Bytecode::default();
code.write_op(OpcodeId::PC);
code.write(0x0f);
let block = mock::BlockData::new_single_tx_trace_code(&code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code(&code).unwrap(),
);

let index = block.geth_trace.struct_logs.len() - 1; // 0x0f
let step = &block.geth_trace.struct_logs[index];
Expand Down Expand Up @@ -2226,7 +2254,9 @@ mod tracer_tests {

PUSH3(0xbb)
};
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

let index = 9; // SSTORE
let step = &block.geth_trace.struct_logs[index];
Expand All @@ -2249,7 +2279,9 @@ mod tracer_tests {
PUSH1(0x1)
PUSH1(0x2)
};
let block = mock::BlockData::new_single_tx_trace_code_gas(&code, Gas(4)).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_gas(&code, Gas(4)).unwrap(),
);
let struct_logs = block.geth_trace.struct_logs;

assert_eq!(struct_logs[1].error, Some(GETH_ERR_OUT_OF_GAS.to_string()));
Expand All @@ -2262,7 +2294,9 @@ mod tracer_tests {
for i in 0..1025 {
code.push(2, Word::from(i));
}
let block = mock::BlockData::new_single_tx_trace_code(&code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code(&code).unwrap(),
);

let index = block.geth_trace.struct_logs.len() - 1; // PUSH2
let step = &block.geth_trace.struct_logs[index];
Expand All @@ -2285,7 +2319,9 @@ mod tracer_tests {
let code = bytecode! {
SWAP5
};
let block = mock::BlockData::new_single_tx_trace_code(&code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code(&code).unwrap(),
);

let index = 0; // SWAP5
let step = &block.geth_trace.struct_logs[index];
Expand Down Expand Up @@ -2356,7 +2392,9 @@ mod tracer_tests {
PUSH3(0xbb)
};
code_b.append(&code_b_end);
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get RETURN
let (index_return, _) = block
Expand Down Expand Up @@ -2441,7 +2479,9 @@ mod tracer_tests {
PUSH3(0xbb)
};
code_b.append(&code_b_end);
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);

// get last RETURN
let (index_return, _) = block
Expand Down Expand Up @@ -2513,7 +2553,9 @@ mod tracer_tests {

PUSH3(0xbb)
};
let block = mock::BlockData::new_single_tx_trace_code_2(&code_a, &code_b).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_2(&code_a, &code_b).unwrap(),
);
let access_trace =
gen_state_access_trace(&block.eth_block, &block.eth_tx, &block.geth_trace).unwrap();

Expand Down
12 changes: 5 additions & 7 deletions bus-mapping/src/evm/opcodes/coinbase.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,9 @@ impl Opcode for Coinbase {
#[cfg(test)]
mod coinbase_tests {
use super::*;
use crate::{
bytecode,
circuit_input_builder::{ExecStep, TransactionContext},
mock,
};
use crate::circuit_input_builder::{ExecStep, TransactionContext};
use eth_types::evm_types::StackAddress;
use eth_types::ToWord;
use eth_types::{bytecode, ToWord};
use pretty_assertions::assert_eq;

#[test]
Expand All @@ -43,7 +39,9 @@ mod coinbase_tests {
};

// Get the execution steps from the external tracer
let block = mock::BlockData::new_single_tx_trace_code_at_start(&code).unwrap();
let block = crate::mock::BlockData::new_from_geth_data(
mock::new_single_tx_trace_code_at_start(&code).unwrap(),
);

let mut builder = block.new_circuit_input_builder();
builder.handle_tx(&block.eth_tx, &block.geth_trace).unwrap();
Expand Down
Loading