@@ -412,6 +412,14 @@ impl<F: Field> TransferWithGasFeeGadget<F> {
412
412
0 . expr ( ) ,
413
413
Some ( reversion_info) ,
414
414
) ;
415
+ #[ cfg( feature = "scroll" ) ]
416
+ cb. account_write (
417
+ receiver_address. clone ( ) ,
418
+ AccountFieldTag :: KeccakCodeHash ,
419
+ cb. empty_keccak_hash_rlc ( ) ,
420
+ 0 . expr ( ) ,
421
+ Some ( reversion_info) ,
422
+ ) ;
415
423
} ,
416
424
) ;
417
425
// Skip transfer if value == 0
@@ -445,10 +453,11 @@ impl<F: Field> TransferWithGasFeeGadget<F> {
445
453
// +1 Write Account (sender) Balance (Not Reversible tx fee)
446
454
1 . expr ( ) +
447
455
// +1 Write Account (receiver) CodeHash (account creation via code_hash update)
456
+ // feature = "scroll": +1 Write Account (receiver) KeccakCodeHash
448
457
or:: expr ( [
449
458
not:: expr ( self . value_is_zero . expr ( ) ) * not:: expr ( self . receiver_exists . clone ( ) ) ,
450
459
self . must_create . clone ( ) ]
451
- ) * 1 . expr ( ) +
460
+ ) * if cfg ! ( feature = "scroll" ) { 2 . expr ( ) } else { 1 . expr ( ) } +
452
461
// +1 Write Account (sender) Balance
453
462
// +1 Write Account (receiver) Balance
454
463
not:: expr ( self . value_is_zero . expr ( ) ) * 2 . expr ( )
@@ -457,10 +466,11 @@ impl<F: Field> TransferWithGasFeeGadget<F> {
457
466
pub ( crate ) fn reversible_w_delta ( & self ) -> Expression < F > {
458
467
// NOTE: Write Account (sender) Balance (Not Reversible tx fee)
459
468
// +1 Write Account (receiver) CodeHash (account creation via code_hash update)
469
+ // feature = "scroll": +1 Write Account (receiver) KeccakCodeHash
460
470
or:: expr ( [
461
471
not:: expr ( self . value_is_zero . expr ( ) ) * not:: expr ( self . receiver_exists . clone ( ) ) ,
462
472
self . must_create . clone ( ) ]
463
- ) * 1 . expr ( ) +
473
+ ) * if cfg ! ( feature = "scroll" ) { 2 . expr ( ) } else { 1 . expr ( ) } +
464
474
// +1 Write Account (sender) Balance
465
475
// +1 Write Account (receiver) Balance
466
476
not:: expr ( self . value_is_zero . expr ( ) ) * 2 . expr ( )
@@ -542,8 +552,14 @@ impl<F: Field> TransferGadget<F> {
542
552
0 . expr ( ) ,
543
553
Some ( reversion_info) ,
544
554
) ;
545
- // TODO: also write empty keccak code hash? codesize seems not need yet. write a
546
- // test to verify this.
555
+ #[ cfg( feature = "scroll" ) ]
556
+ cb. account_write (
557
+ receiver_address. clone ( ) ,
558
+ AccountFieldTag :: KeccakCodeHash ,
559
+ cb. empty_keccak_hash_rlc ( ) ,
560
+ 0 . expr ( ) ,
561
+ Some ( reversion_info) ,
562
+ ) ;
547
563
} ,
548
564
) ;
549
565
// Skip transfer if value == 0
@@ -582,21 +598,23 @@ impl<F: Field> TransferGadget<F> {
582
598
583
599
pub ( crate ) fn rw_delta ( & self ) -> Expression < F > {
584
600
// +1 Write Account (receiver) CodeHash (account creation via code_hash update)
601
+ // feature = "scroll": +1 Write Account (receiver) KeccakCodeHash
585
602
or:: expr ( [
586
603
not:: expr ( self . value_is_zero . expr ( ) ) * not:: expr ( self . receiver_exists . clone ( ) ) ,
587
604
self . must_create . clone ( ) ]
588
- ) * 1 . expr ( ) +
605
+ ) * if cfg ! ( feature = "scroll" ) { 2 . expr ( ) } else { 1 . expr ( ) } +
589
606
// +1 Write Account (sender) Balance
590
607
// +1 Write Account (receiver) Balance
591
608
not:: expr ( self . value_is_zero . expr ( ) ) * 2 . expr ( )
592
609
}
593
610
594
611
pub ( crate ) fn reversible_w_delta ( & self ) -> Expression < F > {
595
612
// +1 Write Account (receiver) CodeHash (account creation via code_hash update)
613
+ // if feature = "scroll": +1 Write Account (receiver) KeccakCodeHash
596
614
or:: expr ( [
597
615
not:: expr ( self . value_is_zero . expr ( ) ) * not:: expr ( self . receiver_exists . clone ( ) ) ,
598
- self . must_create . clone ( ) ]
599
- ) * 1 . expr ( ) +
616
+ self . must_create . clone ( ) ,
617
+ ] ) * if cfg ! ( feature = "scroll" ) { 2 . expr ( ) } else { 1 . expr ( ) } +
600
618
// +1 Write Account (sender) Balance
601
619
// +1 Write Account (receiver) Balance
602
620
not:: expr ( self . value_is_zero . expr ( ) ) * 2 . expr ( )
0 commit comments