Release notes

py-evm 0.3.0-alpha.5 (2019-08-22)


  • Add EIP-1108 to Istanbul: Reduce EC precompile costs (#1819)


  • Make sure persist_checkpoint_header sets the given header as canonical head. (#1830)

Improved Documentation

  • Remove section on Trinity’s goals from the Readme. It’s been a leftover from when Py-EVM and Trinity where hosted in a single repository. (#1827)

py-evm 0.3.0-alpha.4 (2019-08-19)


  • Add an optional genesis_parent_hash parameter to persist_header_chain() and persist_block() that allows to overwrite the hash that is used to identify the genesis header. This allows persisting headers / blocks that aren’t (yet) connected back to the true genesis header.

    This feature opens up new, faster syncing techniques. (#1823)


  • Add missing @abstractmethod decorator to ConfigurableAPI.configure. (#1822)

Deprecations and Removals

  • Remove AsyncHeaderDB that wasn’t used anywhere (#1823)

py-evm 0.3.0-alpha.3 (2019-08-13)


  • Add back missing Chain.get_vm_class method. (#1821)

py-evm 0.3.0-alpha.2 (2019-08-13)


  • Package up test suites for the DatabaseAPI and AtomicDatabaseAPI to be class-based to make them reusable by other libaries. (#1813)


  • Fix a crash during chain reorganization on a header-only chain (which can happen during Beam Sync) (#1810)

Improved Documentation

  • Setup towncrier to generate release notes from fragment files to ensure a higher standard for release notes. (#1796)

Deprecations and Removals

  • Drop StateRootNotFound as an over-specialized version of EVMMissingData. Drop VMState.execute_transaction() as redundant to VMState.apply_transaction(). (#1809)


Released 2019-06-05 (off-schedule release to handle eth-keys dependency issue)

  • #1785: Breaking Change: Dropped python3.5 support
  • #1788: Fix dependency issue with eth-keys, don’t allow v0.3+ for now


Released 2019-05-20

  • #1778: Feature: Raise custom decorated exceptions when a trie node is missing from the database (plus some bonus logging and performance improvements)
  • #1732: Bugfix: squashed an occasional “mix hash mismatch” while syncing
  • #1716: Performance: only calculate & persist state root at end of block (post-Byzantium)
  • #1735:
    • Performance: only calculate & persist storage roots at end of block (post-Byzantium)
    • Performance: batch all account trie writes to the database once per block
  • #1747:
    • Maintenance: Lazily generate VM.block on first access. Enables loading the VM when you don’t have its block body.
    • Performance: Fewer DB reads when block is never accessed.
  • Performance: speedups on chain.import_block():
    • #1764: Speed up is_valid_opcode check, formerly 7% of total import time! (now less than 1%)
    • #1765: Reduce logging overhead, ~15% speedup
    • #1766: Cache transaction sender, ~3% speedup
    • #1770: Faster bytecode iteration, ~2.5% speedup
    • #1771: Faster opcode lookup in apply_computation, ~1.5% speedup
    • #1772: Faster Journal access of latest data, ~6% speedup
    • #1773: Faster stack operations, ~9% speedup
    • #1776: Faster Journal record & commit checkpoints, ~7% speedup
    • #1777: Faster bytecode navigation, ~7% speedup
  • #1751: Maintenance: Add placeholder for Istanbul fork


Released 2019-02-28

  • #1719: Implement and activate Petersburg fork (aka Constantinople fixed)
  • #1718: Performance: faster account lookups in EVM
  • #1670: Performance: lazily look up ancestor block hashes, and cache result, so looking up parent hash in EVM is faster than grand^100 parent


Released Jan 15, 2019

  • #1717: Indefinitely postpone the pending Constantinople release
  • #1715: Remove Eth2 Beacon code, moving to trinity project