-
Notifications
You must be signed in to change notification settings - Fork 1
Circleci project setup #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- add ``fixtures_eest`` as a submodule; use ``v4.1.0`` tarball develop fixtures - update ``fixtures`` to v14.1 - update fixture loader to pull in EEST and ethereum test fixtures - take Pyspecs fixtures out entirely, rather than collecting & skipping.
- Initial 7702 Commit - ExtCode* opcodes - 7702 CallCode opcode - Update EXTCODE* opcodes - 7702 StaticCall and DelegateCall opcodes - Adds to Prague fork classes - Comment out 7702 opcodes for now - Transaction tests are running - not correct yet - Fix lint issues; add 7702 TODOs
- Implement block requests and compute the block request hash for the block header, post-prague. - Extend the block header for Prague blocks to include the ``requests_hash``. - Some refactoring of block preprocessing to get ready for EIP-7002. This takes in the ``block``, not just the ``block.header`` as an argument so that we have access to the block requests.
- STANDARD_TOKEN_COST as per EIP-7623 is really just another way of calculating the current gas schedule. It factors the 4 out of (4 * zero_bytes) + (16 * non_zero_bytes), leaving (zero_bytes + 4 * non_zero_bytes). Leave the current schedule untouched and instead compare this to the new data_floor when finalizing the computation, subtracting more gas if necessary until we reach the data floor cost.
- g1 add, msm, and map fp to g1 - g2 add, msm, and map fp2 to g2 - pairing - bonus: bump py_ecc version - newsfragment for ethereum#2204
- Still missing some eips so some test failures are expected
- For ethereum/tests, this is provided in the pre state. If users want this functionality for testing, we need to deploy these as the respective EIPs define.
- newsfragments for ethereum#2205
- Some precompiles passing - Add chainId check - fix error msg typo - Put back process_authorizations, use correct ecrecover - Old Call tests passing - Tests for extcodesize, extcodehash, and extcodecopy passing - StaticCall tests down to 10 failing, some cleanup
- (DRY) Refactor ``BaseCall`` logic to accommodate some smaller changes to call opcodes so we don't have to re-write a bunch of code for Prague, only overwrite certain methods. - Keep static call logic unchanged. - Track message refunds separately. Even if computation fails, apply message refunds. - Fix some logic to match EIP. Along the way: - Logic for ``secp256k1n/2`` seems to have been wrong in py-evm. Fixed that check and added it to the auth validation.
- Do not pull data floor diff from refunds, nor attempt to use it from the computation gas itself. This should be calculated after refunds and separate from the computation gas. - Add an extra ``data_floor_gas`` property to the computation that is calculated by the transaction executor. This value can be used to calculate the total gas used by the transaction at any point in the processing of the computation. This is useful when issueing refunds and when making the transaction receipt.
- Add simple test to catch this error in future fork implementations, starting from Berlin when TypedTransaction was introduced. - Turn on PragueVM for other relevant core tests.
Authorizations should not be expected to be built using the ``Authorization`` class in the unsigned version of set code transaction. Expect these as python types (dicts) and build them into the class from the dict.
- Address any attribute errors if the parent header is not Cancun or Prague, coming into a Prague header. - Add mainnet block for Cancun.
Removed Discord and build status badges from README.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry @Dargon789, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
Summary of ChangesHello @Dargon789, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly updates the Ethereum Virtual Machine (EVM) implementation to support the upcoming Prague hard fork. It introduces several new Ethereum Improvement Proposals (EIPs) that expand transaction capabilities, enhance cryptographic operations, and refine block processing mechanisms. The changes reflect a major evolution in the EVM's functionality and its interaction with the broader Ethereum ecosystem. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces extensive changes to add support for the Prague hard fork, including implementations for several EIPs like EIP-7702 (Set code transaction), EIP-2537 (BLS12-381 precompiles), and others. The changes span from CI configuration to core VM logic and are generally well-structured. However, I've identified a critical issue with outdated gas costs for the EIP-2537 precompiles, which could lead to consensus failures and must be addressed. I've also included a medium-severity suggestion to improve performance in the block processing logic by avoiding redundant database lookups. Overall, this is a significant and well-executed effort to keep the client up-to-date with the latest Ethereum specifications.
Dargon789
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What was wrong?
Related to Issue #
Closes #
How was it fixed?
Todo:
Cute Animal Picture