forked from rust-ethereum/evm
-
Notifications
You must be signed in to change notification settings - Fork 10
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
Feat: mega EOF #63
Open
mrLSD
wants to merge
41
commits into
feat/prague-hard-fork
Choose a base branch
from
feat/mega-eof
base: feat/prague-hard-fork
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Feat: mega EOF #63
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…tnikvm into feat/eip-7702
…tnikvm into feat/eip-7702
mrLSD
added
enhancement
New feature or request
hard-fork
HF-Prague
Prague hard fork
labels
Oct 11, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
EVM Object Format (EOFv1)
The EVM Object Format (EOFv1) is a significant upgrade to the Ethereum Virtual Machine (EVM) that introduces a structured, versioned container format for smart contracts. This new format aims to improve the efficiency, security, and extensibility of EVM bytecode by enabling features such as code and data separation, enhanced validation, and easier introduction of future changes.
The EOFv1 is part of the broader initiative known as the Mega EOF Endgame, which is a collection of Ethereum Improvement Proposals (EIPs) designed to evolve the EVM in a cohesive and backward-compatible manner.
You can find the detailed specifications in the "Mega EOF Endgame" Specification (EOFv1).
Key Features of EOFv1
Ethereum Improvement Proposals (EIPs)
The EOFv1 encompasses several EIPs, each addressing specific aspects of the EVM's functionality. Below is a summary of these proposals:
EIP-7692: EVM Object Format (EOFv1) Meta
Serves as a meta-proposal that coordinates all EOFv1-related EIPs, ensuring they work together cohesively.
EIP-3540: EOF - EVM Object Format v1
Introduces the initial EOF structure, defining the container format, versioning mechanism, and basic validation rules.
EIP-3670: EOF - Code Validation
Specifies the code validation rules for EOF-formatted contracts, enforcing constraints that enhance security and reliability.
EIP-4200: EOF - Static Relative Jumps
Introduces static relative jump instructions, improving control flow and enabling better optimization and analysis.
EIP-4750: EOF - Functions
Adds support for functions within smart contracts, promoting modularity and code reuse.
EIP-5450: EOF - Stack Validation
Implements stack size validation to prevent stack underflows and overflows, enhancing execution safety.
EIP-6206: EOF -
JUMPF
and Non-returning FunctionsAdds new instructions for conditional jumps (
JUMPF
) and non-returning function calls, refining control flow mechanisms.EIP-7480: EOF - Data Section Access Instructions
Defines instructions for accessing the data sections within EOF-formatted bytecode, facilitating better data management.
EIP-663:
SWAPN
,DUPN
, andEXCHANGE
InstructionsIntroduces advanced stack manipulation instructions, improving the expressiveness and efficiency of smart contract code.
EIP-7069: Revamped
CALL
InstructionsProposes enhancements to the
CALL
instruction set, optimizing inter-contract communication and execution.EIP-7620: EOF Contract Creation
Details the process of creating contracts under the EOF format, including deployment and initialization procedures.
EIP-7698: EOF - Creation Transaction
Specifies changes to transaction processing for contract creation within the EOF context, ensuring seamless integration.
Implementation Considerations
Implementing EOFv1 involves updates to EVM clients and tooling:
Benefits of EOFv1
The EVM Object Format (EOFv1) represents a significant step forward in the evolution of the Ethereum Virtual Machine, laying the groundwork for future enhancements while maintaining compatibility with the existing ecosystem. By adopting EOFv1, developers and users alike can benefit from improved performance, security, and flexibility in smart contract development and execution.