From 163d892fa307b2b37db84d734dbb827b5884349b Mon Sep 17 00:00:00 2001 From: han0110 Date: Mon, 14 Mar 2022 21:49:02 +0800 Subject: [PATCH 1/2] fix: add block proposer to AccessSet and comment unimplemented! in BeginTx --- bus-mapping/src/circuit_input_builder.rs | 8 +++++++- bus-mapping/src/evm/opcodes.rs | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/bus-mapping/src/circuit_input_builder.rs b/bus-mapping/src/circuit_input_builder.rs index 5bfc7cf0d3..01498c6056 100644 --- a/bus-mapping/src/circuit_input_builder.rs +++ b/bus-mapping/src/circuit_input_builder.rs @@ -1741,7 +1741,13 @@ impl BuilderClient

{ eth_block: &EthBlock, geth_traces: &[eth_types::GethExecTrace], ) -> Result { - let mut block_access_trace = Vec::new(); + let mut block_access_trace = vec![Access { + step_index: None, + rw: RW::WRITE, + value: AccessValue::Account { + address: eth_block.author, + }, + }]; for (tx_index, tx) in eth_block.transactions.iter().enumerate() { let geth_trace = &geth_traces[tx_index]; let tx_access_trace = gen_state_access_trace(eth_block, tx, geth_trace)?; diff --git a/bus-mapping/src/evm/opcodes.rs b/bus-mapping/src/evm/opcodes.rs index d68743c213..c80fa59d51 100644 --- a/bus-mapping/src/evm/opcodes.rs +++ b/bus-mapping/src/evm/opcodes.rs @@ -324,10 +324,11 @@ pub fn gen_begin_tx_ops(state: &mut CircuitInputStateRef) -> Result<(), Error> { }, )?; + #[allow(clippy::if_same_then_else)] if call.is_create() { - unimplemented!("Creation transaction is not yet implemented") + // TODO: Implement creation transaction } else if state.is_precompiled(&call.address) { - unimplemented!("Call to precompiled is not yet implemented") + // TODO: Implement calling to precompiled } else { state.push_op( RW::READ, From 5d2c6a6a0ddb50f982b289b48cb9527db3501454 Mon Sep 17 00:00:00 2001 From: han0110 Date: Mon, 14 Mar 2022 23:56:08 +0800 Subject: [PATCH 2/2] refactor: use match instead of if/if-else/else --- bus-mapping/src/evm/opcodes.rs | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/bus-mapping/src/evm/opcodes.rs b/bus-mapping/src/evm/opcodes.rs index c80fa59d51..e0102367a4 100644 --- a/bus-mapping/src/evm/opcodes.rs +++ b/bus-mapping/src/evm/opcodes.rs @@ -324,21 +324,24 @@ pub fn gen_begin_tx_ops(state: &mut CircuitInputStateRef) -> Result<(), Error> { }, )?; - #[allow(clippy::if_same_then_else)] - if call.is_create() { - // TODO: Implement creation transaction - } else if state.is_precompiled(&call.address) { - // TODO: Implement calling to precompiled - } else { - state.push_op( - RW::READ, - AccountOp { - address: call.address, - field: AccountField::CodeHash, - value: code_hash.to_word(), - value_prev: code_hash.to_word(), - }, - ); + match (call.is_create(), state.is_precompiled(&call.address)) { + (true, _) => { + // TODO: Implement creation transaction + } + (_, true) => { + // TODO: Implement calling to precompiled + } + _ => { + state.push_op( + RW::READ, + AccountOp { + address: call.address, + field: AccountField::CodeHash, + value: code_hash.to_word(), + value_prev: code_hash.to_word(), + }, + ); + } } for (field, value) in [