Tags: evmts/tevm-monorepo
Tags
feat: Add EVM execution frame (#1665) ## Description Implemented the EVM execution frame system, which is a core component of the Ethereum Virtual Machine. This PR adds: 1. A new `Frame` module that represents a single execution context in the EVM 2. Memory and stack implementations for the EVM 3. State management interfaces for handling blockchain state 4. Updated the EVM implementation to use the new frame system 5. Added dedicated test modules for frame and EVM execution 6. Implemented a logging system for better debugging The implementation supports both contract calls and contract creation, with proper handling of execution results and gas accounting. ## Testing - Added comprehensive unit tests for the frame system - Created separate test modules for frame and EVM functionality - Added dedicated test steps in the build system for testing specific components - Implemented debug logging to verify execution flow ## Additional Information - [ ] I read the [contributing docs](../docs/contributing.md) (if this is your first contribution) Your ENS/address: <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a modular EVM execution framework with support for execution frames, stack and memory management, and detailed logging. - Added new standalone tests for frame, EVM call, and contract creation execution. - Centralized logging configuration with customizable log levels and formatted output. - Refined the main application flow to initialize the EVM with state management and execute detailed call inputs. - **Bug Fixes** - Improved error handling for stack overflows, underflows, and invalid opcodes during EVM execution. - **Tests** - Comprehensive unit tests for frame lifecycle, stack/memory operations, and basic EVM call/create flows. - **Chores** - Enhanced build process to support modular test targets and improved test granularity. - Updated module imports for consistency and absolute referencing. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
feat: Add abi encoding/decoding (#1662) ## Description Added Ethereum ABI (Application Binary Interface) encoding and decoding functionality to the codebase. This implementation provides comprehensive support for interacting with Ethereum smart contracts, including: - Function call data encoding/decoding - Event topic encoding and log decoding - Parameter encoding/decoding according to the Ethereum ABI spec - Function selector computation - Human-readable ABI parsing The implementation includes support for various data types (uint, int, address, bool, bytes, string) and handles both static and dynamic types according to the Ethereum specification. ## Testing The code includes comprehensive test suites for each component: - Basic round-trip encoding/decoding tests - Complex type handling and edge cases - Bytecode and value conversion tests - Function selector computation validation - Event topic encoding/decoding tests Each module has its own test cases that verify correct behavior against known examples from the Ethereum ecosystem. ## Additional Information - [x] I read the [contributing docs](../docs/contributing.md) (if this is your first contribution) Your ENS/address: <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added comprehensive support for encoding and decoding Ethereum ABI function calls, function results, and event logs. - Introduced utilities for computing function selectors and event topics from ABI signatures. - Enabled parsing of human-readable ABI signatures into structured items. - Provided functions to retrieve ABI items by name or selector. - Added robust error handling and validation for all ABI operations. - **Tests** - Implemented extensive test coverage for ABI encoding, decoding, parsing, and event handling functionalities. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Upgrade Node setup action to latest version (#1656) v4 is the latest stable version of setup-node from GitHub Actions team. It includes performance improvements, better caching, and support for updated Node versions. Keeping CI tools up to date ensures smoother workflows and compatibility. 🔗 Official release reference: [actions/setup-node v4.0.0](https://github.com/actions/setup-node/releases/tag/v4.0.0) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Chores** - Updated the GitHub Actions workflow to use the latest version of the Node.js setup action for improved reliability and support. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
feat: Start rolling our own minimal evm (#1661) ## Description _Concise description of proposed changes_ ## Testing Explain the quality checks that have been done on the code changes ## Additional Information - [ ] I read the [contributing docs](../docs/contributing.md) (if this is your first contribution) Your ENS/address: <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added comprehensive Ethereum address and fixed-length byte array modules with validation, conversion utilities, and effectful operations. - Introduced extensive EVM opcode mappings for both TypeScript and Zig, including stack and gas cost utilities. - Expanded Zig EVM implementation with detailed execution parameters, result structures, error handling, and hard fork enumeration. - Added thorough documentation for the Zig EVM project, including usage examples and future plans. - **Bug Fixes** - None. - **Refactor** - Migrated and reorganized address and fixed byte array utilities into dedicated modules. - Improved code style and formatting across multiple files for consistency. - **Documentation** - Added comprehensive README files detailing the Zig EVM implementation, structure, and usage. - **Style** - Standardized import paths, quotation marks, and indentation throughout the codebase. - **Chores** - Updated ignore patterns and configuration formatting for project tooling. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
🙈 chore: init zig (#1653) ## Description Added Zig language support to the project by: - Integrating Zig 0.14.0 into the GitHub Actions workflow - Creating a basic Zig project structure with `build.zig` configuration - Setting up WebAssembly compilation target - Adding initial source files with a simple "Hello world" implementation - Configuring NX build system to handle Zig builds and tests - Updating `.gitignore` for Zig-specific build artifacts ## Testing - Added Zig test step to the test coverage workflow - Configured NX caching for Zig builds and tests - Set up GitHub Actions to build Zig code as part of CI pipeline ## Additional Information - [ ] I read the [contributing docs](../docs/contributing.md) (if this is your first contribution) Your ENS/address: <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added initial Zig language support with native and WebAssembly build targets. - Introduced a simple Zig program that prints "Hello world" and a minimal EVM module. - Integrated Zig build and test processes into workspace configuration and automation scripts. - **Chores** - Updated workflows and GitHub Actions to install Zig and run Zig builds in CI. - Extended .gitignore to exclude Zig build artifacts and a project-specific file. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Version Packages (next) (#1626) This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `main` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `main`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## tevm-run@1.0.0-next.143 ### Patch Changes - tevm@1.0.0-next.143 ## @tevm/cli@1.0.0-next.143 ### Patch Changes - Updated dependencies [ead0e33] - Updated dependencies [a6ee30b] - Updated dependencies [92bde4c] - @tevm/actions@1.0.0-next.143 - @tevm/memory-client@1.0.0-next.143 - @tevm/server@1.0.0-next.143 ## @tevm/ethers@1.0.0-next.143 ### Patch Changes - Updated dependencies [ead0e33] - Updated dependencies [a6ee30b] - Updated dependencies [92bde4c] - @tevm/actions@1.0.0-next.143 - @tevm/node@1.0.0-next.143 - @tevm/client-types@1.0.0-next.142 - @tevm/decorators@1.0.0-next.143 ## @tevm/viem@1.0.0-next.143 ### Patch Changes - @tevm/node@1.0.0-next.143 - @tevm/decorators@1.0.0-next.143 ## @tevm/actions@1.0.0-next.143 ### Patch Changes - ead0e33: Fixes tx nonce calculation from account state in `createTransaction`. This previously incremented the nonce by the number of transactions for this account in the tx pool, when the vm would actually already have incremented the nonce for the next transaction. - a6ee30b: Add a more comprehensive set of properties to the account prestate trace. - 92bde4c: Fixes impersonated tx parameters parsing: a specified `caller` parameter would be overriden by the default `origin` as the sender of the transaction. This fix adds `caller` as a fallback value to `tx.origin`. - Updated dependencies [0a2f876] - @tevm/vm@1.0.0-next.143 - @tevm/node@1.0.0-next.143 - @tevm/txpool@1.0.0-next.143 ## @tevm/decorators@1.0.0-next.143 ### Patch Changes - Updated dependencies [ead0e33] - Updated dependencies [a6ee30b] - Updated dependencies [92bde4c] - @tevm/actions@1.0.0-next.143 - @tevm/node@1.0.0-next.143 ## @tevm/http-client@1.0.0-next.143 ### Patch Changes - @tevm/viem@1.0.0-next.143 - @tevm/memory-client@1.0.0-next.143 ## @tevm/memory-client@1.0.0-next.143 ### Patch Changes - Updated dependencies [ead0e33] - Updated dependencies [a6ee30b] - Updated dependencies [92bde4c] - @tevm/actions@1.0.0-next.143 - @tevm/node@1.0.0-next.143 - @tevm/decorators@1.0.0-next.143 ## @tevm/node@1.0.0-next.143 ### Patch Changes - Updated dependencies [0a2f876] - @tevm/vm@1.0.0-next.143 - @tevm/txpool@1.0.0-next.143 ## @tevm/server@1.0.0-next.143 ### Patch Changes - @tevm/decorators@1.0.0-next.143 - @tevm/memory-client@1.0.0-next.143 ## @tevm/txpool@1.0.0-next.143 ### Patch Changes - Updated dependencies [0a2f876] - @tevm/vm@1.0.0-next.143 ## @tevm/vm@1.0.0-next.143 ### Patch Changes - 0a2f876: Fixes the blockchain deep copy in `vm.deepCopy`. This was previously returning the original blockchain reference, when it should return its deep copy that was created previously. This was causing the original blockchain to receive incomplete references of blocks created by the temporary deep copy of the blockchain in `getPendingClient` (when mining pending blocks), as these blocks would be shared with the original blockchain. This is now fixed by returning the deep copy of the blockchain instead of the original reference. ## tevm@1.0.0-next.143 ### Patch Changes - Updated dependencies [0a2f876] - Updated dependencies [ead0e33] - Updated dependencies [a6ee30b] - Updated dependencies [92bde4c] - @tevm/vm@1.0.0-next.143 - @tevm/actions@1.0.0-next.143 - @tevm/node@1.0.0-next.143 - @tevm/txpool@1.0.0-next.143 - @tevm/cli@1.0.0-next.143 - @tevm/viem@1.0.0-next.143 - @tevm/client-types@1.0.0-next.142 - @tevm/decorators@1.0.0-next.143 - @tevm/memory-client@1.0.0-next.143 - @tevm/server@1.0.0-next.143 - @tevm/http-client@1.0.0-next.143 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
PreviousNext