Skip to content

Conversation

advaita-saha
Copy link
Contributor

@advaita-saha advaita-saha commented Aug 15, 2025

Fixes #3523
Built on top of #3564

Adds the following commands for running full EEST releases

  • make -j12 eest_engine_test : Runs engineAPI tests for Mainnet ( static, stable develop ) & current devnet release of EEST fixtures
  • make -j12 eest_blockchain_test : Runs block import tests for Mainnet ( static, stable develop ) & current devnet release of EEST fixtures
  • make -j12 eest_full_test : Runs all of the above tests

TODO

  • More verbosity in testcase for debugging
  • Add blockchain tests
  • Add devnet and any new EEST release support
  • Make the testing infra extensible to new type of future EEST vectors
  • fix failing tests
  • ctrl-c should break all tests ( move away from cmd execution )
  • Add all eest types to CI cache
  • Add getAppFilename and remove debugEcho

@jangko
Copy link
Contributor

jangko commented Aug 15, 2025

FYI, cache key in CI:

- name: Restore EEST test vectors from cache
if: inputs.eest-cache == 'true'
uses: actions/cache@v4
with:
path: tests/fixtures/eest
# EEST release version contained in eest_ci_cache.sh.
# Each time we bump EEST version, it should invalidate the cache too.
key: eest-${{ hashFiles('scripts/eest_ci_cache.sh') }}

@advaita-saha
Copy link
Contributor Author

EEST needs fork based testing, but fork timings not available directly in EEST test vectors
Halting work on this, until further clarification received from the EEST/hive team how they handle it

@jangko
Copy link
Contributor

jangko commented Aug 19, 2025

Isn't in the fixtures they have something like "network": "Cancun" or "network": "Prague"? It's the ChainConfig object that must be created to satisfy the expected network. And then execute the block one by one.

You can use this function to create the expected ChainConfig object:

func getChainConfig*(network: string): ChainConfig =
let c = ChainConfig()
getChainConfig(network, c)
result = c

@advaita-saha
Copy link
Contributor Author

Isn't in the fixtures they have something like "network": "Cancun" or "network": "Prague"? It's the ChainConfig object that must be created to satisfy the expected network. And then execute the block one by one.

You can use this function to create the expected ChainConfig object:

func getChainConfig*(network: string): ChainConfig =
let c = ChainConfig()
getChainConfig(network, c)
result = c

Had a chat with the EEST team, Yes it changed a bit after the introduction of BPO fork along with blobSchedules
So I am currently working on changing the getChainConfig function to accommodate the changes

@advaita-saha
Copy link
Contributor Author

100% EEST release coverage support

@jangko
Copy link
Contributor

jangko commented Aug 24, 2025

Found where the bug is:
https://eips.ethereum.org/EIPS/eip-7702#set-code-transaction

... outer transaction follow the same semantics as EIP-4844. Note, this implies a null destination is not valid.

@advaita-saha advaita-saha marked this pull request as ready for review August 25, 2025 11:02
@advaita-saha advaita-saha merged commit e54fca4 into master Aug 25, 2025
26 checks passed
@advaita-saha advaita-saha deleted the eest-in-ci branch August 25, 2025 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for EEST test vectors for both local test and CI test
3 participants