Add precompile for testing #94
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
1. Background
XLayer is an Optimism-based L2 that requires custom precompiled contracts (Poseidon hash at address
0x100).The challenge is to integrate these custom precompiles into a Reth-based node without modifying upstream Reth code.
Why This Matters
Key Constraint
Reth's EVM configuration is tightly coupled through the
ConfigureEvmtrait. We need to inject customprecompiles at EVM creation time without touching the upstream
reth-optimism-evmcrate.2. Solution Architecture
Key Design Points
crates/evm/,crates/node/, andbin/node/XLayerEvmConfigwrapsOpEvmConfigwith a custom EVM factoryXLayerEvmFactorydelegates toOpEvmFactorythen swaps precompilesxlayer_precompiles()returns&'static Precompilesfor performanceOpHardfork::Jovianand later3. Key Code Call Stack
Startup Path (Node Launch → EVM Creation)
Transaction Execution Path (TX → Precompile)
Verification
Test the precompile with:
Or run the automated test: