@@ -110,6 +110,9 @@ def generic_create(
110110
111111 evm .accessed_addresses .add (contract_address )
112112
113+ # Track address access for BAL
114+ track_address_access (state .change_tracker , contract_address )
115+
113116 if account_has_code_or_nonce (
114117 state , contract_address
115118 ) or account_has_storage (state , contract_address ):
@@ -145,8 +148,6 @@ def generic_create(
145148 parent_evm = evm ,
146149 )
147150
148- track_address_access (state .change_tracker , contract_address )
149-
150151 child_evm = process_create_message (child_message )
151152
152153 if child_evm .error :
@@ -341,8 +342,6 @@ def generic_call(
341342 parent_evm = evm ,
342343 )
343344
344- track_address_access (evm .message .block_env .state .change_tracker , to )
345-
346345 child_evm = process_message (child_message )
347346
348347 if child_evm .error :
@@ -396,6 +395,9 @@ def call(evm: Evm) -> None:
396395 evm .accessed_addresses .add (to )
397396 access_gas_cost = GAS_COLD_ACCOUNT_ACCESS
398397
398+ # Track address access for BAL
399+ track_address_access (evm .message .block_env .state .change_tracker , to )
400+
399401 code_address = to
400402 (
401403 disable_precompiles ,
@@ -485,6 +487,11 @@ def callcode(evm: Evm) -> None:
485487 evm .accessed_addresses .add (code_address )
486488 access_gas_cost = GAS_COLD_ACCOUNT_ACCESS
487489
490+ # Track address access for BAL
491+ track_address_access (
492+ evm .message .block_env .state .change_tracker , code_address
493+ )
494+
488495 (
489496 disable_precompiles ,
490497 code_address ,
@@ -503,10 +510,6 @@ def callcode(evm: Evm) -> None:
503510 )
504511 charge_gas (evm , message_call_gas .cost + extend_memory .cost )
505512
506- track_address_access (
507- evm .message .block_env .state .change_tracker , code_address
508- )
509-
510513 # OPERATION
511514 evm .memory += b"\x00 " * extend_memory .expand_by
512515 sender_balance = get_account (
@@ -560,6 +563,11 @@ def selfdestruct(evm: Evm) -> None:
560563 evm .accessed_addresses .add (beneficiary )
561564 gas_cost += GAS_COLD_ACCOUNT_ACCESS
562565
566+ # Track address access for BAL
567+ track_address_access (
568+ evm .message .block_env .state .change_tracker , beneficiary
569+ )
570+
563571 if (
564572 not is_account_alive (evm .message .block_env .state , beneficiary )
565573 and get_account (
@@ -635,6 +643,11 @@ def delegatecall(evm: Evm) -> None:
635643 evm .accessed_addresses .add (code_address )
636644 access_gas_cost = GAS_COLD_ACCOUNT_ACCESS
637645
646+ # Track address access for BAL
647+ track_address_access (
648+ evm .message .block_env .state .change_tracker , code_address
649+ )
650+
638651 (
639652 disable_precompiles ,
640653 code_address ,
@@ -648,10 +661,6 @@ def delegatecall(evm: Evm) -> None:
648661 )
649662 charge_gas (evm , message_call_gas .cost + extend_memory .cost )
650663
651- track_address_access (
652- evm .message .block_env .state .change_tracker , code_address
653- )
654-
655664 # OPERATION
656665 evm .memory += b"\x00 " * extend_memory .expand_by
657666 generic_call (
@@ -708,6 +717,9 @@ def staticcall(evm: Evm) -> None:
708717 evm .accessed_addresses .add (to )
709718 access_gas_cost = GAS_COLD_ACCOUNT_ACCESS
710719
720+ # Track address access for BAL
721+ track_address_access (evm .message .block_env .state .change_tracker , to )
722+
711723 code_address = to
712724 (
713725 disable_precompiles ,
0 commit comments