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

Commit 0ee4aa4

Browse files
dedup busmapping transfer
1 parent 52e80c4 commit 0ee4aa4

File tree

4 files changed

+9
-29
lines changed

4 files changed

+9
-29
lines changed

bus-mapping/src/circuit_input_builder/input_state_ref.rs

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -559,13 +559,13 @@ impl<'a> CircuitInputStateRef<'a> {
559559
/// balance by `value`. If `fee` is existing (not None), also need to push 1
560560
/// non-reversible [`AccountOp`] to update `sender` balance by `fee`.
561561
#[allow(clippy::too_many_arguments)]
562-
pub fn transfer_with_fee(
562+
pub fn transfer(
563563
&mut self,
564564
step: &mut ExecStep,
565565
sender: Address,
566566
receiver: Address,
567567
receiver_exists: bool,
568-
must_create: bool,
568+
opcode_is_create: bool,
569569
value: Word,
570570
fee: Option<Word>,
571571
) -> Result<(), Error> {
@@ -623,44 +623,22 @@ impl<'a> CircuitInputStateRef<'a> {
623623
value_prev: sender_balance_prev,
624624
},
625625
)?;
626-
self.transfer_to(step, receiver, receiver_exists, must_create, value, true)?;
626+
self.transfer_to(step, receiver, receiver_exists, opcode_is_create, value, true)?;
627627

628628
Ok(())
629629
}
630630

631-
/// Same functionality with `transfer_with_fee` but with `fee` set zero.
632-
pub fn transfer(
633-
&mut self,
634-
step: &mut ExecStep,
635-
sender: Address,
636-
receiver: Address,
637-
receiver_exists: bool,
638-
must_create: bool,
639-
value: Word,
640-
) -> Result<(), Error> {
641-
self.transfer_with_fee(
642-
step,
643-
sender,
644-
receiver,
645-
receiver_exists,
646-
must_create,
647-
value,
648-
None,
649-
)
650-
}
651-
652631
/// Transfer to an address. Create an account if it is not existed before.
653632
pub fn transfer_to(
654633
&mut self,
655634
step: &mut ExecStep,
656635
receiver: Address,
657636
receiver_exists: bool,
658-
must_create: bool,
637+
opcode_is_create: bool,
659638
value: Word,
660639
reversible: bool,
661640
) -> Result<(), Error> {
662-
// If receiver doesn't exist, create it
663-
if !receiver_exists && (!value.is_zero() || must_create) {
641+
if !receiver_exists && (!value.is_zero() || opcode_is_create) {
664642
self.account_write(
665643
step,
666644
receiver,

bus-mapping/src/evm/opcodes/begin_end_tx.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ fn gen_begin_tx_steps(state: &mut CircuitInputStateRef) -> Result<ExecStep, Erro
122122
}
123123

124124
// Transfer with fee
125-
state.transfer_with_fee(
125+
state.transfer(
126126
&mut exec_step,
127127
call.caller_address,
128128
call.address,

bus-mapping/src/evm/opcodes/callop.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> {
195195
callee_exists,
196196
false,
197197
call.value,
198+
None,
198199
)?;
199200
}
200201

bus-mapping/src/evm/opcodes/create.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,9 @@ impl<const IS_CREATE2: bool> Opcode for Create<IS_CREATE2> {
217217
caller.address,
218218
callee.address,
219219
callee_exists,
220-
!callee_exists,
220+
true,
221221
callee.value,
222+
None,
222223
)?;
223224

224225
// EIP 161, increase callee's nonce

0 commit comments

Comments
 (0)