You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(tests): Support for EIP-7928 - Block-Level Access Lists (#2067)
* 🚧 wip(EIP-7928): Block-level Access Lists
* ✨ feat(EIP-7928): Spec params
* 🧹 chore(EIP-7928): Rename package
* ✨ feat(EIP-7928): Test cases
* ✨ feat(EIP-7928): Add BAL header
* 🧹 chore(EIP-7928): bal_hash header
* 🧹 chore: Populate bal_hash env
* ✨ feat(EIP-7928): Add BAL to block body
* ✨ feat(EIP-7928): Add pokebal package
* ✨ feat: update env
* 🚧 wip: Checklist and basic tests
* 🧹 chore: scope
* Add more sophisticated test cases (#2029)
Co-authored-by: raxhvl <[email protected]>
* WIP: Attempt to get EEST + EELS bals PRs talking to each other
* refactor(bal): Use full bal in t8n; verify and build fixtures
- Use the full bal object in the t8n. We can use this to model_validate()
into our pydantic model.
- Also, pass the bal_hash via t8n so that once we do build the BAL, validate
the explicitly defined values, rlp encode it, then hash it, we can compare
the full BAL against the hash and make sure that even though we only validated
the part that was important for our test, the full BAL is also always valid.
Bonus:
- Added a new type for ``StorageKey`` because these were not being rlp encoded
properly without the left padding. This was tricky to find and I think this
can be a common issue. New type here seemed appropriate.
* chore(lint): Fix lint issues, assign method to Frontier to be overridden
* fix(tests,lint): Set up code changes test case; fix remaining lint issues
* refactor(forks): move BAL tests to Amsterdam
- chore(cleanup): Remove reference to told BlockAccessLists fork
- refactor(fork): ``Amsterdam`` above old EOF fork.
* chore: Fix CI lint issues not present locally
- Update some docstrings to remove AI excessive verbosity and add
CodeChanges case to example.
* refactor(bal): Apply comments from first pass at PR
- Use ``Number`` instead of ``int`` where appropriate
- Use ``default_factory=list`` without ``Optional`` and ``None`` where
appropriate
* refactor(bal): Split BAL into two classes
- Use a root model class for the t8n BAL model. This lets us stick
closer to the EIP definition where the BAL itself is a list.
- The class doesn't need to be `RLPSerializable`, just have
simple instructions to serialize its elements (`rlp()`).
- Create a `BlockAccessListExpectation` class to represent the
expected BAL for a given block. This class can describe different
expectations for the test cases, such as defining mutations to
be used for invalid tests.
* refactor(tests): Rename checklist.md -> test_cases.md for BAL test case tracking
* feat(tests,tools): [WIP] initial invalid BAL tests
* chore(spec-resolver): Update commit hash to point to for spec resolver
* fix(lint,resolver): Use latest commit in resolver; fix lint
* Address comments from PR #2067
* chore(docs): Add changelog entries for BAL updates
* refactor(types): Refactor BAL checks for explicit exclusion of acct changes
- From comments on PR #2067, we should allow for an explicit exclusion case
for an entire set of account changes. If a test case warrants a sanity check
that some account might have been impacted but shouldn't be accounted for,
we should be able to specify that explicitly.
* fix(bal): Fix explicit empty checks for account changes; add unit tests
* feat(bal): Extend BAL support within framework
- Add BAL to engine execution payload as defined in:
https://github.com/ethereum/consensus-specs/pull/4526/files#diff-4b950f0c895b4d521c9e8103d638e73a4c7746c6aea51250994425a1efd6f4c8R55
- Add BAL support for state tests to be able to create blockchain tests
* fix(warnings): Silence warning for unused reference in .md file
* fix(bal): Move state test expected bal to Block
* feat(release): Set up BAL work for a feature release
* fix: BAL as object in fixture block so RLP is correct
* chore(pytest): Add Amsterdam to ruleset for simulator plugin
---------
Co-authored-by: raxhvl <[email protected]>
Co-authored-by: Toni Wahrstätter <[email protected]>
Co-authored-by: raxhvl <[email protected]>
Copy file name to clipboardExpand all lines: docs/CHANGELOG.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -141,6 +141,7 @@ Users can select any of the artifacts depending on their testing needs for their
141
141
- 🔀 Move Prague to stable and Osaka to develop ([#1573](https://github.com/ethereum/execution-spec-tests/pull/1573)).
142
142
- ✨ Add a `pytest.mark.with_all_typed_transactions` marker that creates default typed transactions for each `tx_type` supported by the current `fork` ([#1890](https://github.com/ethereum/execution-spec-tests/pull/1890)).
143
143
- ✨ Add basic support for ``Amsterdam`` fork in order to begin testing Glamsterdam ([#2069](https://github.com/ethereum/execution-spec-tests/pull/2069)).
144
+
- ✨ [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928): Add initial framework support for `Block Level Access Lists (BAL)` testing for Amsterdam ([#2067](https://github.com/ethereum/execution-spec-tests/pull/2067)).
144
145
145
146
### 🧪 Test Cases
146
147
@@ -154,12 +155,13 @@ Users can select any of the artifacts depending on their testing needs for their
154
155
- ✨ [EIP-7951](https://eips.ethereum.org/EIPS/eip-7951): add test cases for `P256VERIFY` precompile to support secp256r1 curve [#1670](https://github.com/ethereum/execution-spec-tests/pull/1670).
155
156
- ✨ Introduce blockchain tests for benchmark to cover the scenario of pure ether transfers [#1742](https://github.com/ethereum/execution-spec-tests/pull/1742).
156
157
- ✨ [EIP-7934](https://eips.ethereum.org/EIPS/eip-7934): Add test cases for the block RLP max limit of 10MiB ([#1730](https://github.com/ethereum/execution-spec-tests/pull/1730)).
157
-
- ✨ [EIP-7939](https://eips.ethereum.org/EIPS/eip-7939) Add count leading zeros (CLZ) opcode tests for Osaka ([#1733](https://github.com/ethereum/execution-spec-tests/pull/1733)).
158
+
- ✨ [EIP-7939](https://eips.ethereum.org/EIPS/eip-7939): Add count leading zeros (CLZ) opcode tests for Osaka ([#1733](https://github.com/ethereum/execution-spec-tests/pull/1733)).
158
159
- ✨ [EIP-7934](https://eips.ethereum.org/EIPS/eip-7934): Add additional test cases for block RLP max limit with all typed transactions and for a log-creating transactions ([#1890](https://github.com/ethereum/execution-spec-tests/pull/1890)).
159
160
- ✨ [EIP-7825](https://eips.ethereum.org/EIPS/eip-7825): Pre-Osaka tests have been updated to either (1) dynamically adapt to the transaction gas limit cap, or (2) reduce overall gas consumption to fit the new limit ([#1924](https://github.com/ethereum/EIPs/pull/1924), [#1928](https://github.com/ethereum/EIPs/pull/1928), [#1980](https://github.com/ethereum/EIPs/pull/1980)).
160
161
- ✨ [EIP-7918](https://eips.ethereum.org/EIPS/eip-7918): Blob base fee bounded by execution cost test cases (initial), includes some adjustments to [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) tests ([#1685](https://github.com/ethereum/execution-spec-tests/pull/1685)).
161
162
- 🔀 Adds the max blob transaction limit to the tests including updates to [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) for Osaka ([#1884](https://github.com/ethereum/execution-spec-tests/pull/1884)).
162
163
- 🐞 Fix issues when filling block rlp size limit tests with ``--generate-pre-alloc-groups`` ([#1989](https://github.com/ethereum/execution-spec-tests/pull/1989)).
164
+
- ✨ [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928): Add test cases for `Block Level Access Lists (BAL)` to Amsterdam ([#2067](https://github.com/ethereum/execution-spec-tests/pull/2067)).
Copy file name to clipboardExpand all lines: docs/running_tests/test_formats/blockchain_test_sync.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ The test works by:
15
15
3. Having the sync client synchronize from the client under test.
16
16
4. Verifying that both clients reach the same final state.
17
17
18
-
A single JSON fixture file is composed of a JSON object where each key-value pair is a different [`SyncFixture`](#syncfixture) test object, with the key string representing the test name.
18
+
A single JSON fixture file is composed of a JSON object where each key-value pair is a different [`HiveFixture`](#hivefixture) test object, with the key string representing the test name.
19
19
20
20
The JSON file path plus the test name are used as the unique test identifier, as well as a `{client under test}::sync_{sync client}` identifier.
0 commit comments