With the 2.4.x
release series we now start to gradually add Constantinople
features with the
bitwise shifting instructions from EIP 145
making the start being introduced in the v2.4.0
release.
Since both the scope of the Constantinople
hardfork as well as the state of at least some of the EIPs
to be included are not yet finalized, this is only meant for EXPERIMENTAL
purposes, e.g. for developer
tools to give users early access and make themself familiar with dedicated features.
Once scope and EIPs from Constantinople
are final we will target a v2.5.0
release which will officially
introduce Constantinople
support with all the changes bundled together.
Note that from this release on we also introduce new chain
(default: mainnet
) and hardfork
(default: byzantium
) initialization parameters, which make use of our new ethereumjs-common library and in the future will allow
for parallel hardfork support from Byzantium
onwards.
Since hardfork
default might be changed or dropped in future releases, you might want to explicitly
set this to byzantium
on your next update to avoid future unexpected behavior.
All the changes from this release:
FEATURES/FUNCTIONALITY
- Improved chain and fork support, see PR #304
- Support for the
Constantinople
bitwise shifiting instructionsSHL
,SHR
andSAR
, see PR #251 - New
newContract
event which can be used to do interrupting tasks on contract/address creation, see PR #306 - Alignment of behavior of bloom filter hashing to go along with mainnet compatible clients BREAKING, see PR #295
UPDATES/TESTING
- Usage of the latest
rustbn.js
API, see PR #312 - Some cleanup in precompile error handling, see PR #318
- Some cleanup for
StateManager
, see PR #266 - Renaming of
util.sha3
usages toutil.keccak256
and bumpethereumjs-util
tov5.2.0
(you should do to if you useethereumjs-util
) - Parallel testing of the
Byzantium
andConstantinople
state tests, see PR #317 - For lower build times our CI configuration now runs solely on
CircleCI
and support forTravis
have been dropped, see PR #316
BUG FIXES
- Programmatic runtime errors in the VM execution context (within an opcode) are no longer absorbed and displayed as a VMError but explicitly thrown, allowing for easier discovery of implementation bugs, see PR #307
- Fix of the
Bloom.check()
method not working properly, see PR #311 - Fix a bug when
REVERT
is used within aCREATE
context, see PR #297 - Fix a bug in
FakeBlockChain
error handing, see PR #320