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

Commit 21f3450

Browse files
make balance update readable
1 parent 2723775 commit 21f3450

File tree

3 files changed

+28
-24
lines changed

3 files changed

+28
-24
lines changed

zkevm-circuits/src/evm_circuit/execution/end_tx.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,9 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> {
7575
tx_gas_price.clone(),
7676
effective_refund.min() + cb.curr.state.gas_left.expr(),
7777
);
78-
let gas_fee_refund = UpdateBalanceGadget::construct(
79-
cb,
78+
let gas_fee_refund = cb.increase_balance(
8079
tx_caller_address.to_word(),
81-
vec![mul_gas_price_by_refund.product().clone()],
80+
mul_gas_price_by_refund.product().clone(),
8281
None,
8382
);
8483

zkevm-circuits/src/evm_circuit/util/common_gadget.rs

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ impl<F: Field, const N_ADDENDS: usize, const INCREASE: bool>
309309
pub(crate) fn construct(
310310
cb: &mut EVMConstraintBuilder<F>,
311311
address: WordLoHi<Expression<F>>,
312-
updates: Vec<Word32Cell<F>>,
312+
updates: &[Word32Cell<F>],
313313
reversion_info: Option<&mut ReversionInfo<F>>,
314314
) -> Self {
315315
debug_assert!(updates.len() == N_ADDENDS - 1);
@@ -397,12 +397,7 @@ impl<F: Field> TransferToGadget<F> {
397397
);
398398
}
399399
let receiver = cb.condition(not::expr(value_is_zero.expr()), |cb| {
400-
UpdateBalanceGadget::construct(
401-
cb,
402-
receiver_address,
403-
vec![value.clone()],
404-
reversion_info,
405-
)
400+
cb.increase_balance(receiver_address, value.clone(), reversion_info)
406401
});
407402

408403
Self {
@@ -495,8 +490,7 @@ impl<F: Field> TransferWithGasFeeGadget<F> {
495490
gas_fee: Word32Cell<F>,
496491
reversion_info: &mut ReversionInfo<F>,
497492
) -> Self {
498-
let sender_sub_fee =
499-
UpdateBalanceGadget::construct(cb, sender_address.to_word(), vec![gas_fee], None);
493+
let sender_sub_fee = cb.decrease_balance(sender_address.to_word(), gas_fee, None);
500494
let value_is_zero = cb.is_zero_word(&value);
501495
// If receiver doesn't exist, create it
502496
TransferToGadget::create_account(
@@ -509,12 +503,7 @@ impl<F: Field> TransferWithGasFeeGadget<F> {
509503
);
510504
// Skip transfer if value == 0
511505
let sender_sub_value = cb.condition(not::expr(value_is_zero.expr()), |cb| {
512-
UpdateBalanceGadget::construct(
513-
cb,
514-
sender_address,
515-
vec![value.clone()],
516-
Some(reversion_info),
517-
)
506+
cb.decrease_balance(sender_address, value.clone(), Some(reversion_info))
518507
});
519508
let receiver = TransferToGadget::construct(
520509
cb,
@@ -630,12 +619,7 @@ impl<F: Field> TransferGadget<F> {
630619
);
631620
// Skip transfer if value == 0
632621
let sender = cb.condition(not::expr(value_is_zero.expr()), |cb| {
633-
UpdateBalanceGadget::construct(
634-
cb,
635-
sender_address,
636-
vec![value.clone()],
637-
Some(reversion_info),
638-
)
622+
cb.decrease_balance(sender_address, value.clone(), Some(reversion_info))
639623
});
640624
let receiver = TransferToGadget::construct(
641625
cb,

zkevm-circuits/src/evm_circuit/util/constraint_builder.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use super::{
2+
common_gadget::UpdateBalanceGadget,
23
math_gadget::{
34
ConstantDivisionGadget, IsEqualGadget, IsEqualWordGadget, IsZeroGadget, IsZeroWordGadget,
45
LtGadget, LtWordGadget, MinMaxGadget,
@@ -639,6 +640,26 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> {
639640
ConstantDivisionGadget::construct(self, numerator, denominator)
640641
}
641642

643+
// Common Gadget
644+
645+
pub(crate) fn increase_balance(
646+
&mut self,
647+
address: WordLoHi<Expression<F>>,
648+
value: Word32Cell<F>,
649+
reversion_info: Option<&mut ReversionInfo<F>>,
650+
) -> UpdateBalanceGadget<F, 2, true> {
651+
UpdateBalanceGadget::construct(self, address, &[value], reversion_info)
652+
}
653+
654+
pub(crate) fn decrease_balance(
655+
&mut self,
656+
address: WordLoHi<Expression<F>>,
657+
value: Word32Cell<F>,
658+
reversion_info: Option<&mut ReversionInfo<F>>,
659+
) -> UpdateBalanceGadget<F, 2, false> {
660+
UpdateBalanceGadget::construct(self, address, &[value], reversion_info)
661+
}
662+
642663
// Fixed
643664

644665
pub(crate) fn range_lookup(&mut self, value: Expression<F>, range: u64) {

0 commit comments

Comments
 (0)