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

Commit 07ecfe0

Browse files
dedup busmapping transfer
1 parent 62cfc19 commit 07ecfe0

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
@@ -560,13 +560,13 @@ impl<'a> CircuitInputStateRef<'a> {
560560
/// balance by `value`. If `fee` is existing (not None), also need to push 1
561561
/// non-reversible [`AccountOp`] to update `sender` balance by `fee`.
562562
#[allow(clippy::too_many_arguments)]
563-
pub fn transfer_with_fee(
563+
pub fn transfer(
564564
&mut self,
565565
step: &mut ExecStep,
566566
sender: Address,
567567
receiver: Address,
568568
receiver_exists: bool,
569-
must_create: bool,
569+
opcode_is_create: bool,
570570
value: Word,
571571
fee: Option<Word>,
572572
) -> Result<(), Error> {
@@ -624,44 +624,22 @@ impl<'a> CircuitInputStateRef<'a> {
624624
value_prev: sender_balance_prev,
625625
},
626626
)?;
627-
self.transfer_to(step, receiver, receiver_exists, must_create, value, true)?;
627+
self.transfer_to(step, receiver, receiver_exists, opcode_is_create, value, true)?;
628628

629629
Ok(())
630630
}
631631

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