From 86e6f8064dd476f63f2362a6fb08efe98f3a2572 Mon Sep 17 00:00:00 2001 From: Holger Drewes Date: Sat, 19 Apr 2025 16:05:18 +0200 Subject: [PATCH 1/6] EVM README updates --- packages/evm/README.md | 41 +++++++++-------------------------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/packages/evm/README.md b/packages/evm/README.md index 9ffed9ab91d..f148f95710a 100644 --- a/packages/evm/README.md +++ b/packages/evm/README.md @@ -25,9 +25,7 @@ This package provides the core Ethereum Virtual Machine (EVM) implementation whi ### Basic -With the v2 release (Summer 2023) the EVM/VM packages have been further decoupled and it now possible to run the EVM package in isolation with reasonable defaults. - -The following is the simplest example for an EVM instantiation: +The following is the simplest example for an EVM instantiation with reasonable defaults for state and blockchain information (like blockhashes): ```ts // ./examples/simple.ts @@ -44,8 +42,6 @@ const main = async () => { void main() ``` -Note: with the switch from v2 to v3 the old direct `new EVM()` constructor usage has been deprecated and an `EVM` now has to be instantiated with the async static `EVM.create()` constructor. - ### Blockchain, State and Events If the EVM should run on a certain state an `@ethereumjs/statemanager` is needed. An `@ethereumjs/blockchain` instance can be passed in to provide access to external interface information like a blockhash: @@ -139,7 +135,7 @@ void main() ### EIP-2537 BLS Precompiles (Prague) -Starting with `v3.1.0` the EVM support the BLS precompiles introduced with [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537). These precompiles run natively using the [@noble/curves](https://github.com/paulmillr/noble-curves) library (❤️ to `@paulmillr`!). +Starting with `v10` the EVM supports the BLS precompiles introduced with [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) in its final version introduced with the `Prague` hardfork. These precompiles run natively using the [@noble/curves](https://github.com/paulmillr/noble-curves) library (❤️ to `@paulmillr`!). An alternative WASM implementation (using [bls-wasm](https://github.com/herumi/bls-wasm)) can be optionally used like this if needed for performance reasons: @@ -149,17 +145,12 @@ import { EVM, MCLBLS } from '@ethereumjs/evm' const common = new Common({ chain: Chain.Mainnet, hardfork: Hardfork.Prague }) await mcl.init(mcl.BLS12_381) const mclbls = new MCLBLS(mcl) -const evm = await EVM.create({ common, bls }) +const evm = await createEVM({ common, bls }) ``` ## Examples -This projects contain the following examples: - -1. [./examples/decode-opcodes](./examples/decode-opcodes.ts): Decodes a binary EVM program into its opcodes. -1. [./examples/runCode](./examples/runCode.ts): Show how to use this library in a browser. - -All of the examples have their own `README.md` explaining how to run them. +See the [examples](./examples/) folder for different meaningful examples on how to use the EVM package and invoke certain aspects of it, e.g. running a bytecode snippet, listening to events or activate an EVM with a certain EIP for experimental purposes. ## Browser @@ -232,8 +223,9 @@ Currently the following hardfork rules are supported: - `merge` - `shanghai` (`v2.0.0`+) - `cancun` (`v2.0.0`+) +- `prague` (`v10`+) -Default: `shanghai` (taken from `Common.DEFAULT_HARDFORK`) +Default: `prague` (taken from `Common.DEFAULT_HARDFORK`) A specific hardfork EVM ruleset can be activated by passing in the hardfork along the `Common` instance to the outer `@ethereumjs/vm` instance. @@ -303,22 +295,7 @@ This library by default uses JavaScript implementations for the basic standard c ### EIP-4844 Shard Blob Transactions Support -This library supports the blob transaction type introduced with [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844). - -#### Initialization - -To run EVM related EIP-4844 functionality you have to active the EIP in the associated `@ethereumjs/common` library: - -```ts -// ./examples/4844.ts - -import { Common, Hardfork, Mainnet } from '@ethereumjs/common' - -const common = new Common({ chain: Mainnet, hardfork: Hardfork.Shanghai, eips: [4844] }) -``` - -EIP-4844 comes with a new opcode `BLOBHASH` (Attention! Renamed from `DATAHASH`) and adds a new point evaluation precompile at address `0x0a` -(moved from `0x14` at some point along spec updates). +This library supports the blob transaction type introduced with [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844). EIP-4844 comes with a dedicated opcode `BLOBHASH` and has added a new point evaluation precompile at address `0x0a`. **Note:** Usage of the point evaluation precompile needs a manual KZG library installation and global initialization, see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. @@ -442,9 +419,9 @@ TODO: this section likely needs an update. ## Profiling the EVM -Starting with the `v2.1.0` release the EVM comes with build-in profiling capabilities to detect performance bottlenecks and to generally support the targeted evolution of the JavaScript EVM performance. +The EthereumJS EVM comes with build-in profiling capabilities to detect performance bottlenecks and to generally support the targeted evolution of the JavaScript EVM performance. -While the EVM now has a dedicated `profiler` setting to activate, the profiler can best and most useful be run through the EthereumJS [client](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) since this gives the most realistic conditions providing both real-world txs and a meaningful state size. +While the EVM has a dedicated `profiler` setting to activate, the profiler can best and most useful be run through the EthereumJS [client](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) since this gives the most realistic conditions providing both real-world txs and a meaningful state size. To repeatedly run the EVM profiler within the client sync the client on mainnet or a larger testnet to the desired block. Then the profiler should be run without sync (to not distort the results) by using the `--executeBlocks` and the `--vmProfileBlocks` (or `--vmProfileTxs`) flags in conjunction like: From ff8bde98ee0ef5304ca56423d0e1ee5b8ad1efe4 Mon Sep 17 00:00:00 2001 From: Holger Drewes Date: Sat, 19 Apr 2025 16:25:59 +0200 Subject: [PATCH 2/6] VM README updates --- packages/evm/README.md | 2 +- packages/vm/README.md | 104 ++++++----------------------------------- 2 files changed, 14 insertions(+), 92 deletions(-) diff --git a/packages/evm/README.md b/packages/evm/README.md index f148f95710a..7c41818bfd7 100644 --- a/packages/evm/README.md +++ b/packages/evm/README.md @@ -293,7 +293,7 @@ Currently supported EIPs: This library by default uses JavaScript implementations for the basic standard crypto primitives like hashing or signature verification (for included txs). See `@ethereumjs/common` [README](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/common) for instructions on how to replace with e.g. a more performant WASM implementation by using a shared `common` instance. -### EIP-4844 Shard Blob Transactions Support +### EIP-4844 Shard Blob Transactions Support (Cancun) This library supports the blob transaction type introduced with [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844). EIP-4844 comes with a dedicated opcode `BLOBHASH` and has added a new point evaluation precompile at address `0x0a`. diff --git a/packages/vm/README.md b/packages/vm/README.md index a9d4c0d7732..6717e849d62 100644 --- a/packages/vm/README.md +++ b/packages/vm/README.md @@ -26,7 +26,7 @@ To obtain the latest version, simply require the project using `npm`: npm install @ethereumjs/vm ``` -**Note:** Starting with the Dencun hardfork `EIP-4844` related functionality will become an integrated part of the EVM functionality with the activation of the point evaluation precompile. It is therefore strongly recommended to _always_ run the EVM with a KZG library installed and initialized, see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. +**Note:** Starting with the Dencun hardfork `EIP-4844` related functionality has become an integrated part of the EVM functionality with the activation of the point evaluation precompile. For this precompile to work a separate installation of the KGZ library is necessary (we decided not to bundle due to large bundle sizes), see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. ## Usage @@ -62,8 +62,6 @@ void main() Additionally to the `VM.runTx()` method there is an API method `VM.runBlock()` which allows to run the whole block and execute all included transactions along. -Note: with the switch from v7 to v8 the old direct `new VM()` constructor usage has been fully deprecated and a `VM` can now solely be instantiated with the async static `VM.create()` constructor. This also goes for the underlying `EVM` if you use a custom `EVM`. - ### Building a Block The VM package can also be used to construct a new valid block by executing and then integrating txs one-by-one. @@ -124,13 +122,11 @@ This library by default uses JavaScript implementations for the basic standard c ## Example -This projects contain the following examples: +See the [examples](./examples/) folder for different meaningful examples on how to use the VM package and invoke certain aspects of it, e.g. running a complete block, a certain tx or using event listeners, among others. Some noteworthy examples to point out: 1. [./examples/run-blockchain](./examples/run-blockchain.ts): Loads tests data, including accounts and blocks, and runs all of them in the VM. 1. [./examples/run-solidity-contract](./examples/run-solidity-contract.ts): Compiles a Solidity contract, and calls constant and non-constant functions. -All of the examples have their own `README.md` explaining how to run them. - ## Browser We provide hybrid ESM/CJS builds for all our libraries. With the v10 breaking release round from Spring 2025, all libraries are "pure-JS" by default and we have eliminated all hard-wired WASM code. Additionally we have substantially lowered the bundle sizes, reduced the number of dependencies, and cut out all usages of Node.js-specific primitives (like the Node.js event emitter). @@ -188,40 +184,7 @@ With `VM` v6 the previously included `StateManager` has been extracted to its ow ### Chain Support -Starting with `v5.1.0` the VM supports running both `Ethash/PoW` and `Clique/PoA` blocks and transactions. Clique support has been added along the work on PR [#1032](https://github.com/ethereumjs/ethereumjs-monorepo/pull/1032) and follow-up PRs and (block) validation checks and the switch of the execution context now happens correctly. - -### Ethash/PoW Chains - -`@ethereumjs/blockchain` validates the PoW algorithm with `@ethereumjs/ethash` and validates blocks' difficulty to match their canonical difficulty. - -### Clique/PoA Chains - -The following is a simple example for a block run on `Goerli`: - -```ts -// ./examples/runGoerliBlock.ts - -import { createBlockFromRPC } from '@ethereumjs/block' -import { Common } from '@ethereumjs/common' -import { bytesToHex } from '@ethereumjs/util' - -import { createVM, runBlock } from '../src/index.ts' -import { Goerli } from '../test/api/testdata/goerliCommon.ts' - -import goerliBlock2 from './testData/goerliBlock2.json' - -const main = async () => { - const common = new Common({ chain: Goerli, hardfork: 'london' }) - const vm = await createVM({ common, setHardfork: true }) - - const block = createBlockFromRPC(goerliBlock2, undefined, { common }) - const result = await runBlock(vm, { block, generate: true, skipHeaderValidation: true }) // we skip header validation since we are running a block without the full Ethereum history available - console.log(`The state root for Goerli block 2 is ${bytesToHex(result.stateRoot)}`) -} - -void main() - -``` +Beside the default Proof-of-Stake setup coming with the `Common` library default, the VM also support the execution of both `Ethash/PoW` and `Clique/PoA` blocks and transactions to allow to re-execute blocks from older hardforks or testnets. ### Hardfork Support @@ -242,13 +205,7 @@ const main = async () => { const vm = await createVM({ common }) ``` -### Custom genesis state support - -#### Genesis in v7 (removed genesis dependency) - -Genesis state was huge and had previously been bundled with the `Blockchain` package with the burden going over to the VM, since `Blockchain` is a dependency. - -Starting with the v7 release genesis state has been removed from `blockchain` and moved into its own auxiliary package [@ethereumjs/genesis](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/genesis), from which it can be included if needed (for most - especially VM - use cases it is not necessary), see PR [#2844](https://github.com/ethereumjs/ethereumjs-monorepo/pull/2844). +### Custom Genesis State Support For initializing a custom genesis state you can use the `genesisState` constructor option in the `Blockchain` and `VM` library in a similar way this had been done in the `Common` library before. @@ -284,12 +241,6 @@ void main() Genesis state can be configured to contain both EOAs as well as (system) contracts with initial storage values set. -#### Genesis in v6 - -For the v6 release responsibility for setting up a custom genesis state moved from the [Common](../common/) library to the `Blockchain` package, see PR [#1924](https://github.com/ethereumjs/ethereumjs-monorepo/pull/1924) for some work context. - -A genesis state can be set along `Blockchain` creation by passing in a custom `genesisBlock` and `genesisState`. For `mainnet` and the official test networks like `sepolia` or `goerli` genesis is already provided with the block data coming from `@ethereumjs/common`. The genesis state is being integrated in the `Blockchain` library (see `genesisStates` folder). - ### EIP Support It is possible to individually activate EIP support in the VM by instantiate the `Common` instance passed @@ -311,54 +262,25 @@ void main() For a list with supported EIPs see the [@ethereumjs/evm](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm) documentation. -### EIP-4844 Shard Blob Transactions Support - -This library supports the blob transaction type introduced with [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844). +### EIP-4844 Shard Blob Transactions Support (Cancun) -### EIP-7702 EAO Code Transactions Support (outdated) +This library supports the blob transaction type introduced with [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844). EIP-4844 comes with a dedicated opcode `BLOBHASH` and has added a new point evaluation precompile at address `0x0a`. -This library support the execution of [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) EOA code transactions (see tx library for full documentation) with `runTx()` or the wrapping `runBlock()` execution methods starting with `v3.1.0`, see [this test setup](https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/vm/test/api/EIPs/eip-7702.spec.ts) for a more complete example setup on how to run code from an EOA. +**Note:** Usage of the point evaluation precompile needs a manual KZG library installation and global initialization, see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. -Note: Things move fast with `EIP-7702` and the currently released implementation is based on [this](https://github.com/ethereum/EIPs/blob/14400434e1199c57d912082127b1d22643788d11/EIPS/eip-7702.md) commit and therefore already outdated. An up-to-date version will be released along our breaking release round planned for early September 2024. +### EIP-7702 EAO Code Transactions Support (Prague) -### EIP-7685 Requests Support +This library support the execution of [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) EOA code transactions (see tx library for full documentation) with `runTx()` or the wrapping `runBlock()` execution methods, see [this test setup](https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/vm/test/api/EIPs/eip-7702.spec.ts) for a more complete example setup on how to run code from an EOA. -This library supports blocks including the following [EIP-7685](https://eips.ethereum.org/EIPS/eip-7685) requests: +### EIP-7685 Requests Support (Prague) -- [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110) - Deposit Requests (`v7.3.0`+) -- [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) - Withdrawal Requests (`v7.3.0`+) -- [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) - Consolidation Requests (`v7.3.0`+) +This library supports blocks including [EIP-7685](https://eips.ethereum.org/EIPS/eip-7685) requests to the consensus layer. ### EIP-2935 Serve Historical Block Hashes from State (Prague) -Starting with `v8.1.0` the VM supports [EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) which stores the latest 8192 block hashes in the storage of a system contract, see PR [#3475](https://github.com/ethereumjs/ethereumjs-monorepo/pull/3475) as the major integration PR (while work on this has already been done in previous PRs). - -This EIP will be activated along the Prague hardfork. Note that this EIP has no effect on the resolution of the `BLOCKHASH` opcode, which will be a separate activation taking place by the integration of [EIP-7709](https://eips.ethereum.org/EIPS/eip-7709) in the following Osaka hardfork. - -#### Initialization - -To run VM/EVM related EIP-4844 functionality you have to activate the EIP in the associated `@ethereumjs/common` library: - -```ts -// ./examples/vmWith4844.ts - -import { Common, Hardfork, Mainnet } from '@ethereumjs/common' - -import { createVM } from '../src/index.ts' - -const main = async () => { - const common = new Common({ chain: Mainnet, hardfork: Hardfork.Shanghai, eips: [4844] }) - const vm = await createVM({ common }) - console.log(`4844 is active in the VM - ${vm.common.isActivatedEIP(4844)}`) -} +Starting with `v8.1.0` the VM supports [EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) which stores the latest 8192 block hashes in the storage of a system contract. -void main() - -``` - -EIP-4844 comes with a new opcode `BLOBHASH` and adds a new point evaluation precompile at address `0x14` in the underlying `@ethereumjs/evm` package. - -**Note:** Usage of the point evaluation precompile needs a manual KZG library installation and global initialization, see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. +Note that this EIP has no effect on the resolution of the `BLOCKHASH` opcode, which will be a separate activation taking place by the integration of [EIP-7709](https://eips.ethereum.org/EIPS/eip-7709) in the following Osaka hardfork. ### Tracing Events From 987af248090518d316ea75b5adb534a26052c5a7 Mon Sep 17 00:00:00 2001 From: Holger Drewes Date: Sat, 19 Apr 2025 17:55:34 +0200 Subject: [PATCH 3/6] Minor update --- packages/vm/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vm/README.md b/packages/vm/README.md index 6717e849d62..3d2f06b9950 100644 --- a/packages/vm/README.md +++ b/packages/vm/README.md @@ -280,7 +280,7 @@ This library supports blocks including [EIP-7685](https://eips.ethereum.org/EIPS Starting with `v8.1.0` the VM supports [EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) which stores the latest 8192 block hashes in the storage of a system contract. -Note that this EIP has no effect on the resolution of the `BLOCKHASH` opcode, which will be a separate activation taking place by the integration of [EIP-7709](https://eips.ethereum.org/EIPS/eip-7709) in the following Osaka hardfork. +Note that this EIP has no effect on the resolution of the `BLOCKHASH` opcode, which will be a separate activation taking place by the integration of [EIP-7709](https://eips.ethereum.org/EIPS/eip-7709) in a respective Verkle/Stateless hardfork. ### Tracing Events From afac53b5c3eef3212f7e52c28b15f1e6ffa5d606 Mon Sep 17 00:00:00 2001 From: Holger Drewes Date: Sat, 19 Apr 2025 18:27:24 +0200 Subject: [PATCH 4/6] More README doc updates --- packages/devp2p/README.md | 9 --------- packages/era/README.md | 36 ++++++++++++++++++------------------ packages/evm/README.md | 2 +- packages/tx/README.md | 1 + 4 files changed, 20 insertions(+), 28 deletions(-) diff --git a/packages/devp2p/README.md b/packages/devp2p/README.md index 19ea07924bf..d95a5b02638 100644 --- a/packages/devp2p/README.md +++ b/packages/devp2p/README.md @@ -337,10 +337,6 @@ Events emitted: | message | Message received | | status | Status info received | -### Reference - -- [Light client protocol](https://ethereum.org/en/developers/docs/nodes-and-clients/#light-node) - ## Debugging ### Introduction @@ -453,11 +449,6 @@ The following is a list of major implementations of the `devp2p` stack in other - Python: [pydevp2p](https://github.com/ethereum/pydevp2p) - Go: [Go Ethereum](https://github.com/ethereum/go-ethereum/tree/master/p2p) -- Elixir: [Exthereum](https://github.com/exthereum/exth_crypto) - -### Links - -- [Blog article series](https://ocalog.com/post/10/) on implementing Ethereum protocol stack ## EthereumJS diff --git a/packages/era/README.md b/packages/era/README.md index 9c62e0c14ae..51ca45ac914 100644 --- a/packages/era/README.md +++ b/packages/era/README.md @@ -22,7 +22,7 @@ npm install @ethereumjs/era All helpers are re-exported from the root level and deep imports are not necessary. So an import can be done like this: ```ts -import { formatEntry } from "@ethereumjs/era"; +import { formatEntry } from "@ethereumjs/era" ``` ### Export History as Era1 @@ -30,13 +30,13 @@ import { formatEntry } from "@ethereumjs/era"; Export history in epochs of 8192 blocks as Era1 files ```ts -import { exportEpochAsEra1 } from "@ethereumjs/era"; +import { exportEpochAsEra1 } from "@ethereumjs/era" -const dataDir = PATH_TO_ETHEREUMJS_CLIENT_DB; -const epoch = 0; +const dataDir = PATH_TO_ETHEREUMJS_CLIENT_DB +const epoch = 0 // generates ${dataDir}/era1/epoch-0.era1 -await exportEpochAsEra1(epoch, dataDir); +await exportEpochAsEra1(epoch, dataDir) ``` ### Read Era1 file @@ -52,37 +52,37 @@ import { blockFromTuple, getHeaderRecords, EpochAccumulator, -} from "@ethereumjs/era"; +} from "@ethereumjs/era" -const era1File = readBinaryFile(PATH_TO_ERA1_FILE); +const era1File = readBinaryFile(PATH_TO_ERA1_FILE) // validate era1 file -const isValid = validateERA1(era1File); +const isValid = validateERA1(era1File) // read blocks from era1 file -const blocks = readERA1(era1File); +const blocks = readERA1(era1File) for await (const blockTuple of blocks) { - const { header, body, receipts } = await parseBlockTuple(blockTuple); - const block = blockFromTuple({ header, body }); - console.log(block.header.number); + const { header, body, receipts } = await parseBlockTuple(blockTuple) + const block = blockFromTuple({ header, body }) + console.log(block.header.number) } // reconstruct epoch accumulator -const headerRecords = await getHeaderRecords(era1File); -const epochAccumulator = EpochAccumulator.encode(headerRecords); -const epochAccumulatorRoot = EpochAccumulator.merkleRoot(headerRecords); +const headerRecords = await getHeaderRecords(era1File) +const epochAccumulator = EpochAccumulator.encode(headerRecords) +const epochAccumulatorRoot = EpochAccumulator.merkleRoot(headerRecords) ``` ### Read Era file ```ts -import { readBeaconState } from "@ethereumjs/era"; +import { readBeaconState } from "@ethereumjs/era" -const eraFile = readBinaryFile(PATH_TO_ERA_FILE); +const eraFile = readBinaryFile(PATH_TO_ERA_FILE) // Extract BeaconState -const state = await readBeaconState(eraFile); +const state = await readBeaconState(eraFile) console.log(state.slot) // Read Beacon Blocks from era file diff --git a/packages/evm/README.md b/packages/evm/README.md index f584ab934a8..834e12adf96 100644 --- a/packages/evm/README.md +++ b/packages/evm/README.md @@ -19,7 +19,7 @@ npm install @ethereumjs/evm This package provides the core Ethereum Virtual Machine (EVM) implementation which is capable of executing EVM-compatible bytecode. The package has been extracted from the [@ethereumjs/vm](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/vm) package along the VM `v6` release. -**Note:** Starting with the Dencun hardfork `EIP-4844` related functionality will become an integrated part of the EVM functionality with the activation of the point evaluation precompile. It is therefore strongly recommended to _always_ run the EVM with a KZG library installed and initialized, see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. +**Note:** Starting with the Dencun hardfork `EIP-4844` related functionality has become an integrated part of the EVM functionality with the activation of the point evaluation precompile. For this precompile to work a separate installation of the KGZ library is necessary (we decided not to bundle due to large bundle sizes), see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. ## Usage diff --git a/packages/tx/README.md b/packages/tx/README.md index 10415dea702..69d9ceb3bc9 100644 --- a/packages/tx/README.md +++ b/packages/tx/README.md @@ -49,6 +49,7 @@ Hardforks adding features and/or tx types: | `berlin` | `v3.1.0` |  `EIP-2718` Typed Transactions, Optional Access Lists Tx Type `EIP-2930` | | `london` | `v3.2.0` | `EIP-1559` Transactions | | `cancun` | `v5.0.0` | `EIP-4844` Transactions | +| `prague` | `v10.0.0` | `EIP-7702` Transactions | ### WASM Crypto Support From cb9dccf752ff5251b005937f00e31aba07b9deb6 Mon Sep 17 00:00:00 2001 From: Gabriel Rocheleau Date: Sat, 19 Apr 2025 10:20:25 -0700 Subject: [PATCH 5/6] Update packages/evm/README.md --- packages/evm/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/evm/README.md b/packages/evm/README.md index 834e12adf96..69317afa105 100644 --- a/packages/evm/README.md +++ b/packages/evm/README.md @@ -19,7 +19,7 @@ npm install @ethereumjs/evm This package provides the core Ethereum Virtual Machine (EVM) implementation which is capable of executing EVM-compatible bytecode. The package has been extracted from the [@ethereumjs/vm](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/vm) package along the VM `v6` release. -**Note:** Starting with the Dencun hardfork `EIP-4844` related functionality has become an integrated part of the EVM functionality with the activation of the point evaluation precompile. For this precompile to work a separate installation of the KGZ library is necessary (we decided not to bundle due to large bundle sizes), see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. +**Note:** Starting with the Dencun hardfork `EIP-4844` related functionality has become an integrated part of the EVM functionality with the activation of the point evaluation precompile. For this precompile to work a separate installation of the KZG library is necessary (we decided not to bundle due to large bundle sizes), see [KZG Setup](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx/README.md#kzg-setup) for instructions. ## Usage From b4c9996f180b85716b6388c3fef7a2dcc1dbd67f Mon Sep 17 00:00:00 2001 From: Gabriel Rocheleau Date: Sat, 19 Apr 2025 10:21:46 -0700 Subject: [PATCH 6/6] Update packages/vm/README.md --- packages/vm/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vm/README.md b/packages/vm/README.md index 3d2f06b9950..0b7eb6e2b9e 100644 --- a/packages/vm/README.md +++ b/packages/vm/README.md @@ -125,7 +125,7 @@ This library by default uses JavaScript implementations for the basic standard c See the [examples](./examples/) folder for different meaningful examples on how to use the VM package and invoke certain aspects of it, e.g. running a complete block, a certain tx or using event listeners, among others. Some noteworthy examples to point out: 1. [./examples/run-blockchain](./examples/run-blockchain.ts): Loads tests data, including accounts and blocks, and runs all of them in the VM. -1. [./examples/run-solidity-contract](./examples/run-solidity-contract.ts): Compiles a Solidity contract, and calls constant and non-constant functions. +2. [./examples/run-solidity-contract](./examples/run-solidity-contract.ts): Compiles a Solidity contract, and calls constant and non-constant functions. ## Browser