Improved genesis predeploy, allowing initializing immutables and accessing chainID from constructor. #1838
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.
Description
Genesis deploy has restriction that the contract may not use immutable. This restriction can be eliminated by applying a simple fix.
The returndata of contract creation call is the deployed code of the contract, which has initialized immutable values, so instead of the deployedCode from artifact file, using this returndata will allow using immutable in pre-deployed contract.
Additionally, by initializing the EVM context's chainID with the value from the genesis.json file, the constructor can access chainID.
Changes include
Checklist
Testing
Manual tests
Ran predeploy with contract inheriting EIP712, which uses immutables. Checked that it works correctly.