Skip to content

@ethereumjs/vm v6.3.0

Compare
Choose a tag to compare
@holgerd77 holgerd77 released this 15 Dec 16:47
· 1160 commits to master since this release
696b36f

Experimental EIP-4895 Beacon Chain Withdrawals Support

This release comes with experimental EIP-4895 beacon chain withdrawals support, see PR #2353 for the plain implementation and PR #2401 for updated calls for the CL/EL engine API. Also note that there is a new helper module in @ethereumjs/util with a new dedicated Withdrawal class together with additional TypeScript types to ease withdrawal handling.

Withdrawals support can be activated by initializing a respective Common object, see @ethereumjs/block library README for an example on how to instantiate a withdrawals block:

import { Common, Chain } from '@ethereumjs/common'
const common = new Common({ chain: Chain.Mainnet, eips: [4895] })

In the VM withdrawals blocks can now both be executed with VM.runBlock() and build with VM.buildBlock() (for a more complex example you can have a look at the EIP tests in test/api/EIPs/eip-4895-withdrawals.spec.ts).

Hardfork-By-Time Support

The VM library is now ready to work with hardforks triggered by timestamp, which will first be applied along the Shanghai HF, see PR #2437. This is achieved by integrating a new timestamp supporting @ethereumjs/common library version.

Bug Fixes and Other Changes

  • More correctly timed nonce updates in VM.runTx() to avoid certain consensus-critical nonce/account update constallations. PR #2404

A reminder: This package does not contain the core EVM code any more. For EVM related bugfixes see the associated @ethereumjs/evm v1.2.3 release.