Skip to content

Commit

Permalink
Merge pull request #436 from ethereumjs/new-release-v260
Browse files Browse the repository at this point in the history
New release v2.6.0 (Petersburg/Goerli)
  • Loading branch information
holgerd77 committed Feb 7, 2019
2 parents 44fa613 + 7cfe1b2 commit 994556a
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 4 deletions.
49 changes: 49 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,55 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
[Semantic Versioning](http://semver.org/spec/v2.0.0.html).


## [2.6.0] - 2019-02-07

**Petersburg Support**

Support for the `Petersburg` (aka `constantinopleFix`) hardfork by integrating
`Petersburg` ready versions of associated libraries, see also
PR [#433](https://github.com/ethereumjs/ethereumjs-vm/pull/433):

- `ethereumjs-common` (chain and HF logic and helper functionality) [v1.1.0](https://github.com/ethereumjs/ethereumjs-common/releases/tag/v1.1.0)
- `ethereumjs-blockchain` [v3.4.0](https://github.com/ethereumjs/ethereumjs-blockchain/releases/tag/v3.4.0)
- `ethereumjs-block` [v2.2.0](https://github.com/ethereumjs/ethereumjs-block/releases)

To instantiate the VM with `Petersburg` HF rules set the `opts.hardfork`
constructor parameter to `petersburg`. This will run the VM on the new
Petersburg rules having removed the support for
[EIP 1283](https://eips.ethereum.org/EIPS/eip-1283).

**Goerli Readiness**

The VM is now also ready to execute on blocks from the final version of the
[Goerli](https://github.com/goerli/testnet) cross-client testnet and can
therefore be instantiated with `opts.chain` set to `goerli`.

**Bug Fixes**

- Fixed mixed `sync`/`async` functions in `cache`,
PR [#422](https://github.com/ethereumjs/ethereumjs-vm/pull/422)
- Fixed a bug in `setStateroot` and caching by clearing the `stateManager` cache
after setting the state root such that stale values are not returned,
PR [#420](https://github.com/ethereumjs/ethereumjs-vm/pull/420)
- Fixed cache access on the hooked VM (*deprecated*),
PR [#434](https://github.com/ethereumjs/ethereumjs-vm/pull/434)

**Refactoring**

Following changes might be relevant for you if you are hotfixing/monkey-patching
on parts of the VM:

- Moved `bloom` to its own directory,
PR [#429](https://github.com/ethereumjs/ethereumjs-vm/pull/429)
- Moved `opcodes`, `opFns` and `logTable` to `lib/vm`,
PR [#425](https://github.com/ethereumjs/ethereumjs-vm/pull/425)
- Converted `Bloom` to `ES6` class,
PR [#428](https://github.com/ethereumjs/ethereumjs-vm/pull/428)
- Converted `Cache` to `ES6` class, added unit tests,
PR [427](https://github.com/ethereumjs/ethereumjs-vm/pull/427)

[2.6.0]: https://github.com/ethereumjs/ethereumjs-vm/compare/v2.5.1...v2.6.0

## [2.5.1] - 2019-01-19

### Features
Expand Down
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,16 @@ Implements Ethereum's VM in Javascript.

#### Fork Support

Starting with the ``v2.5.0`` release we now support both ``Byzantium`` and ``Constantinople`` fork rules - with ``Byzantium`` currently being the default (this will change in the future). See [release notes](https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v2.5.0) for further details and have a look at the [API docs](./docs/index.md) on instructions how to instantiate the VM with the respective fork rules.
The VM (`v2.6.x` release series) currently supports the following hardforks
(default: `Byzantium`):

- `Byzantium`
- `Constantinople`
- `Petersburg`

Parallel HF support was introduced in the `v2.5.0` release, if you want
some background have a look at the respective
[release notes](https://github.com/ethereumjs/ethereumjs-vm/releases/tag/v2.5.0).

If you are still looking for a [Spurious Dragon](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-607.md) compatible version of this library install the latest of the ``2.2.x`` series (see [Changelog](./CHANGELOG.md)).

Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ VM Class, `new VM(opts)` creates a new VM object
- `opts.state` **Trie** a merkle-patricia-tree instance for the state tree (ignored if stateManager is passed)
- `opts.blockchain` **Blockchain** a blockchain object for storing/retrieving blocks (ignored if stateManager is passed)
- `opts.chain` **([String][31] \| [Number][32])** the chain the VM operates on [default: 'mainnet']
- `opts.hardfork` **[String][31]** hardfork rules to be used [default: 'byzantium', supported: 'byzantium', 'constantinople' (will throw on unsupported)]
- `opts.hardfork` **[String][31]** hardfork rules to be used [default: 'byzantium', supported: 'byzantium', 'constantinople', 'petersburg' (will throw on unsupported)]
- `opts.activatePrecompiles` **[Boolean][33]** create entries in the state tree for the precompiled contracts
- `opts.allowUnlimitedContractSize` **[Boolean][33]** allows unlimited contract sizes while debugging. By setting this to `true`, the check for contract size limit of 24KB (see [EIP-170][34]) is bypassed. (default: `false`; ONLY set to `true` during debugging)
- `opts.emitFreeLogs` **[Boolean][33]** Changes the behavior of the LOG opcode, the gas cost of the opcode becomes zero and calling it using STATICCALL won't throw. (default: `false`; ONLY set to `true` during debugging)
Expand Down
2 changes: 1 addition & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ VM.deps = {
* @param {Trie} opts.state a merkle-patricia-tree instance for the state tree (ignored if stateManager is passed)
* @param {Blockchain} opts.blockchain a blockchain object for storing/retrieving blocks (ignored if stateManager is passed)
* @param {String|Number} opts.chain the chain the VM operates on [default: 'mainnet']
* @param {String} opts.hardfork hardfork rules to be used [default: 'byzantium', supported: 'byzantium', 'constantinople' (will throw on unsupported)]
* @param {String} opts.hardfork hardfork rules to be used [default: 'byzantium', supported: 'byzantium', 'constantinople', 'petersburg' (will throw on unsupported)]
* @param {Boolean} opts.activatePrecompiles create entries in the state tree for the precompiled contracts
* @param {Boolean} opts.allowUnlimitedContractSize allows unlimited contract sizes while debugging. By setting this to `true`, the check for contract size limit of 24KB (see [EIP-170](https://git.io/vxZkK)) is bypassed. (default: `false`; ONLY set to `true` during debugging)
* @param {Boolean} opts.emitFreeLogs Changes the behavior of the LOG opcode, the gas cost of the opcode becomes zero and calling it using STATICCALL won't throw. (default: `false`; ONLY set to `true` during debugging)
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ethereumjs-vm",
"version": "2.5.1",
"version": "2.6.0",
"description": "An Ethereum VM implementation",
"main": "dist/index.js",
"files": [
Expand Down

0 comments on commit 994556a

Please sign in to comment.