mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-13 08:24:27 +00:00
In src/ethereum/forks/amsterdam/vm/interpreter.py:299-304, the caller
address is
only tracked for block level accessList when there's a value transfer:
```python
if message.should_transfer_value and message.value != 0:
# Track value transfer
sender_balance = get_account(state, message.caller).balance
recipient_balance = get_account(state, message.current_target).balance
track_address(message.state_changes, message.caller) # Line 304
```
Since system transactions have should_transfer_value=False and value=0,
this condition is never met, so the caller (SYSTEM_ADDRESS) is not
tracked.
This condition is applied for the syscall in the geth implementation,
aligning with the spec of EIP7928.
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
|
||
|---|---|---|
| .. | ||
| program | ||
| runtime | ||
| testdata | ||
| analysis_legacy.go | ||
| analysis_legacy_test.go | ||
| common.go | ||
| contract.go | ||
| contracts.go | ||
| contracts_fuzz_test.go | ||
| contracts_test.go | ||
| doc.go | ||
| eips.go | ||
| errors.go | ||
| evm.go | ||
| gas.go | ||
| gas_table.go | ||
| gas_table_test.go | ||
| instructions.go | ||
| instructions_test.go | ||
| interface.go | ||
| interpreter.go | ||
| interpreter_test.go | ||
| jump_table.go | ||
| jump_table_export.go | ||
| jump_table_test.go | ||
| jumpdests.go | ||
| memory.go | ||
| memory_table.go | ||
| memory_test.go | ||
| opcodes.go | ||
| operations_acl.go | ||
| operations_verkle.go | ||
| stack.go | ||
| stack_table.go | ||