Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -118,3 +118,6 @@
| `test_bal_4788_selfdestruct_to_beacon_root` | Ensure BAL captures `SELFDESTRUCT` to beacon root address alongside system call storage writes | Single block: Pre-execution system call writes beacon root to storage. Transaction: Alice calls contract (pre-funded with 100 wei) that selfdestructs with `BEACON_ROOTS_ADDRESS` as beneficiary. | BAL **MUST** include at `block_access_index=0`: `BEACON_ROOTS_ADDRESS` with `storage_changes` (timestamp and root slots from system call). At `block_access_index=1`: Alice with `nonce_changes`, contract with `balance_changes` (100β†’0), `BEACON_ROOTS_ADDRESS` with `balance_changes` (receives 100 wei). | βœ… Completed |
| `test_bal_7702_double_auth_reset_minimal` | Ensure BAL tracks multiple 7702 nonce increments but filters net-zero code change | Single transaction contains two EIP-7702 authorizations for `Alice`: (1) first auth sets delegation `0xef0100\|\|Oracle`, (2) second auth clears delegation back to empty. Transaction sends 10 wei to `Bob`. Two variants: (a) Self-funded: `Alice` is tx sender (one tx nonce bump + two auth bumps β†’ nonce 0β†’3). (b) Sponsored: `Relayer` is tx sender (`Alice` only in auths β†’ nonce 0β†’2 for `Alice`, plus one nonce bump for `Relayer`). | Variant (a): BAL **MUST** include `Alice` with `nonce_changes` 0β†’3. Variant (b): BAL **MUST** include `Alice` with `nonce_changes` 0β†’2 and `Relayer` with its own `nonce_changes`. For both variants, BAL **MUST NOT** include `code_changes` for `Alice` (net code is empty), **MUST** include `Bob` with `balance_changes` (receives 10 wei), and `Oracle` **MUST NOT** appear in BAL. | 🟑 Planned |
| `test_bal_selfdestruct_send_to_sender` | Ensure BAL tracks SELFDESTRUCT sending all funds back to the tx sender (no burn) | Pre-state: contract `C` exists from a prior transaction with non-empty code and balance = 100 wei. EOA `Alice` sends a transaction calling `C`. `C`’s code executes `SELFDESTRUCT(Alice)`. Under EIP-6780, because `C` was not created in this transaction, SELFDESTRUCT does not delete code or storage; it only transfers the entire 100 wei balance from `C` to `Alice`. Final post-state: `C` still exists with the same code and balance = 0; `Alice`’s balance increased by 100 wei (ignoring gas for this test). | BAL **MUST** include `Alice` with `nonce_changes` (tx sender) and `balance_changes` reflecting receipt of 100 wei, and **MUST** include `C` with `balance_changes` 100β†’0 and no `code_changes`. BAL **MUST NOT** include any other accounts. This test ensures SELFDESTRUCT-to-sender is modeled as a pure value transfer (no burn, no code deletion). | 🟑 Planned |
| `test_bal_spurious_entry_index_plus_2_with_cross_tx_read` | Ensure clients reject BALs containing a spurious entry at `bal_index = len(transactions)+2`, even if its slot is legitimately read elsewhere in the block | Block with `N` txs. BAL is modified to include an extra `StorageKey` entry with `block_access_index = N+2` for `(VictimContract, slot=0x01)`. Additionally include another tx in the same block that performs `SLOAD(VictimContract, 0x01)` (legitimate read). | Block **MUST** be rejected with `INVALID_BLOCK_ACCESS_LIST` exception. Clients **MUST** validate that every `block_access_index` in BAL is in-range (≀ `N` plus any allowed system ops), and **MUST NOT** accept out-of-range indices even if the `(address, slot)` appears elsewhere legitimately. | 🟑 Planned |
| `test_bal_spurious_entry_index_plus_2_with_cross_tx_write` | Ensure clients reject BALs containing a spurious entry at `bal_index = len(transactions)+2`, even if its slot is legitimately written elsewhere in the block | Block with `N` txs. BAL is modified to include an extra `StorageKey` entry with `block_access_index = N+2` for `(VictimContract, slot=0x01)`. Additionally include another tx in the same block that performs `SSTORE(VictimContract, 0x01, 0x42)` (legitimate write). | Block **MUST** be rejected with `INVALID_BLOCK_ACCESS_LIST` exception. Clients **MUST** validate `block_access_index` bounds and reject spurious indices regardless of whether the referenced `(address, slot)` is otherwise accessed or mutated in the block. | 🟑 Planned |
| `test_bal_spurious_entry_index_plus_2_no_other_txs` | Ensure clients reject BALs containing a spurious entry at `bal_index = len(transactions)+2` when no other transaction touches the referenced slot | Block with `N` txs that do not access `(VictimContract, slot=0x01)`. BAL is modified to include an extra `StorageKey` entry with `block_access_index = N+2` for `(VictimContract, slot=0x01)`. | Block **MUST** be rejected with `INVALID_BLOCK_ACCESS_LIST` exception. Clients **MUST** reject any BAL that contains out-of-range `block_access_index` values, independent of access patterns in the executed block. | 🟑 Planned |
Loading