Release Notes

py-evm v0.10.0-beta.4 (2024-03-18)

Bugfixes

  • Clear existing transient storage db instead of resetting and creating a new one (#2159)

py-evm v0.10.0-beta.3 (2024-03-18)

Bugfixes

  • bugfix: Ensure a type_id for SpoofTransaction when unsigned -> signed spoofing. This defaults to None for legacy and uses the _type_id for unsigned typed txns. (#2157)

Internal Changes - For py-evm Contributors

  • Use some general state tests for transaction tests since they have similar formats. This yielded a decent amount of new transaction tests. (#2157)

py-evm v0.10.0-beta.2 (2024-03-15)

Bugfixes

  • bugfix: Address issues instantiating VM at Cancun transition. (#2156)

py-evm v0.10.0-beta.1 (2024-03-15)

Breaking Changes

  • Remove memory_read from ComputationAPI interface and Computation implementation. Use memory_read_bytes in its place for call data read. (#2140)

Features

  • Implement EIP-4788: Add parent_beacon_block_root to execution block headers. (#2135)

  • Implement EIP-1153: Transient Storage. (#2142)

  • Implement EIP-6780: Self-destruct only in same transaction. (#2148)

  • Implement EIP-4844 and EIP-7516: Blob transactions, BLOBHASH opcode, BLOBBASEFEE opcode. (#2151)

Internal Changes - For py-evm Contributors

  • Drop the concept of a mining header, post-merge. (#2134)

  • Fix epub docs build issue, add pdf and epub docs builds to CI (#2137)

  • Update ethereum/tests submodule to version v13.1. (#2149)

py-evm v0.9.0-beta.1 (2024-02-05)

Breaking Changes

  • Drop python 3.7 support (#2128)

Bugfixes

  • Accept type==0 as legacy a transaction. (#2136)

Internal Changes - For py-evm Contributors

  • Merge updates from the project template, including using pre-commit for linting and changing the name of the master branch to main (#2128)

  • Update ethereum/tests test fixture to use v13. (#2136)

Performance Improvements

  • Performance improvements; code refactor; some cleanup. (#2076)

py-evm v0.8.0-beta.1 (2023-10-09)

Features

  • Python 3.10 and 3.11 support. (#2088)

Breaking changes

  • Remove dependency on pyethash, pysha3, and pycryptodome packages and internalize the ethash algorithm implementation into Python code with significant loss of performance, in an effort to un-prioritize proof-of-work consensus and logic. (#2121)

py-evm v0.7.0-alpha.4 (2023-07-24)

Bugfixes

  • eth_now now returns a utc timestamp instead of a local timestamp (#2119)

Internal Changes - For py-evm Contributors

  • Bumped mypy version to 1.4.0 (#2117)

py-evm v0.7.0-alpha.3 (2023-06-08)

Bugfixes

  • Updated CodeStream slot name pc to program_counter to match the attribute name (#2109)

  • Bring CREATE and CREATE2 logic up to speed wrt changes to EIP-2681 (high nonce). (#2110)

Internal Changes - For py-evm Contributors

  • Update fixtures (ethereum/tests) version to v12.2 and turn on all Shanghai fork tests since EOF is no longer in Shanghai. (#2108)

  • Fix some failing tests by properly decoding the tx bytes provided by the Transaction test fixtures. (#2111)

  • bump version for flake8, flake8-bugbear, and mypy, and cleanup tox.ini (#2113)

py-evm v0.7.0-alpha.2 (2023-05-11)

Bugfixes

  • Add missing receipt builder for the ShanghaiBlock class. (#2105)

Internal Changes - For py-evm Contributors

  • Added [isort](https://pycqa.github.io/isort/) for automatically sorting python imports. (#2094)

  • pull in less-sensitive updates from the python project template (#2095)

  • Update pip version sitting in the circleci image before installing and running tox. Install tox at the sys level to help avoid virtualenv version conflicts. (#2102)

  • Refactored the computation class hierarchy and cleaned up the code along the way. Some abstract API classes have more of the underlying properties that the subclasses implement. (#2106)

  • added black to lint dependencies and isort`ed scripts directory (`#2107)

Miscellaneous changes

py-evm 0.7.0-alpha.1 (2023-04-10)

Features

  • Add Shanghai hard fork support. (#2093)

Breaking changes

  • configure_header() now accepts a difficulty function as a kwarg rather than positional arg due to POS priority. (#2093)

py-evm 0.6.1-alpha.2 (2022-12-16)

Miscellaneous internal changes

py-evm 0.6.1-alpha.1 (2022-11-14)

Features

  • Support for the paris fork a.k.a. “the merge”. (#2080)

Bugfixes

  • Use the DIFFICULTY_MINIMUM more appropriately as the lower limit in all difficulty calculations. (#2084)

Internal Changes - for Contributors

  • Update towncrier version to remove double headers. (#2077)

  • Update openssl config on circleci builds to re-introduce ripemd160 function by default. (#2087)

Miscellaneous internal changes

py-evm 0.6.0-alpha.1 (2022-08-22)

Features

  • Gray glacier support without Merge transition since Merge is not yet supported (#2072)

Bugfixes

  • Arrow Glacier header serialization fixed to properly inherit from LondonBlockHeader (#2047)

Deprecations and Removals

  • Upgrade dependencies: eth-keys, eth-typing, eth-utils, py-ecc, rlp, trie (#2068)

  • Drop python 3.6 support (#2070)

py-evm 0.5.0-alpha.3 (2022-01-26)

Bugfixes

  • Downgrade upstream dependencies to allow only non-breaking changes. Once we’re ready to cut web3.py v6 branch, we can pull in breaking changes from upstream dependencies. Namely, dropping Python 3.5 and 3.6. (#2050)

py-evm 0.5.0-alpha.2 (2021-12-16)

Features

  • Arrow Glacier Support

Miscellaneous internal changes

py-evm 0.5.0-alpha.1 (2021-10-13)

Features

  • (#2038)

    • Add validate() method and intrinsic_gas property to UnsignedAccessListTransaction

    • Add validate() method and intrinsic_gas property to UnsignedDynamicFeeTransaction

Improved Documentation

  • Updated the reference to the project template in the docs to https://github.com/ethereum/ethereum-python-project-template and changed the location in the git clone command accordingly. (#2032)

  • Documentation updates to use latest py-evm version, grammar updates, python version updates, replace Gitter link with Discord link, and change [.dev] -> “.[dev]” in docs for better compatibility across shells (#2036)

py-evm 0.5.0-alpha.0 (2021-09-30)

Features

London Support

Bugfixes

  • Replace local timestamps with UTC timestamps (#2013)

    • Use UTC timestamp instead of local time zone, when creating a header.

    • Use UTC for clique validation.

  • Was overly permissive on the header gas limit by one gas. (#2021)

    • Make header gas limit more restrictive by one, in various places.

    • Validate uncle gas limits are within bounds of parent. This was previously not validated at all.

  • Erase return data for exceptions with erases_return_data flag set to True and for CREATE / CREATE2 computations with insufficient funds (#2023)

Deprecations and Removals

  • Removed old options and methods for creating a header, now that headers vary by fork. (#2013)

    • eth.rlp.headers.BlockHeader.from_parent() is gone, because you should always use the VM to create a header (to make sure you get the correct type).

    • Can no longer supply some fields to the genesis, like bloom and parent_hash.

Internal Changes - for Contributors

  • Misc test improvements (#2013)

    • some test_vm fixes:

      • use the correctly paired VMs in PoW test

      • make sure only the block number is invalid in block number validity test

    • more robust test fixture name generation

    • run a newer version of the lint test from make lint

  • Various upgrades and related updates (#2016)

    • Upgrade pytest and pytest-xdist. Caching was causing very slow test runs locally in pytest v5

    • Update ethereum/tests (Updated in various PRs. At release time, checked out at v10.0)

    • Remove json-fixture caching to resolve stale cache issues that caused test failures (at some expense to speed)

    • Make xdist failures show up correctly in the transition tests

  • During fixture tests, verify that the generated genesis block matches the fixture’s RLP-encoding. (#2022)

  • Squash sphinx warnings with a small documentation reorg. (#2021)

py-evm 0.4.0-alpha.4 (2021-04-07)

Features

  • Add Python 3.9 support (#1999)

Internal Changes - for Contributors

  • Update ethereum/tests fixture to v8.0.2, mark some new tests as too slow for CI. (#1998)

Miscellaneous internal changes

  • Update blake2b-py requirement from >=0.1.2 to >=0.1.4 (#1999)

py-evm 0.4.0-alpha.3 (2021-03-24)

Features

  • Expose a type_id on all transactions. It is None for legacy transactions. (#1996)

  • Add new LegacyTransactionFieldsAPI, with a v field for callers that want to access v directly. (#1997)

Bugfixes

py-evm 0.4.0-alpha.2 (2021-03-22)

Bugfixes

  • Add Berlin block numbers for Goerli and Ropsten. Correct the type signature for TransactionBuilderAPI and ReceiptBuilderAPI, because deserialize() can take a list of bytes for the legacy types. (#1993)

py-evm 0.4.0-alpha.1 (2021-03-22)

Features

  • Berlin Support

    • EIP-2718: Typed Transactions – no new functionality, really. It is mostly refactoring in preparation for EIP-2930. (which does churn the code a fair bit) (#1973)

    • EIP-2930: Optional access lists. Implement the new transaction type 1, which pre-warms account & storage caches from EIP-2929, and adds first-class chain_id support. (#1975)

    • EIP-2929: Gas cost increases for state access opcodes. Charge more for cold-cache access of account and storage. (#1974)

    • EIP-2565: Update ModExp precompile gas cost calculation (#1976 & #1989)

Bugfixes

  • Uncles with the same timestamp as their parents are invalid. Reject them, and add the test from ethereum/tests. (#1979)

Performance improvements

  • Got a >10x speedup of some benchmarks and other tests, by adding a new eth.chains.base.MiningChain.mine_all() API and using it. This is a public API, and should be used whenever all the transactions are known up front, to get a significant speedup. (#1967)

Internal Changes - for Contributors

  • Upgrade tests fixtures to v8.0.1, with Berlin tests. Skipped several slow tests in Istanbul. Added pytest-timeout to limit annoyance of new slow tests. (#1971, #1987, #1991, #1989)

  • Make sure Berlin is tested across all core tests. (also patched in some missing Muir Glacier ones) (#1977)

py-evm 0.3.0-alpha.20 (2020-10-21)

Bugfixes

  • Upgrade rlp library to v2.0.0 stable, which is friendlier to 32-bit and other architectures. Downstream applications can choose to explicitly install the rust implementation with pip install rlp[rust-backend]. (d553bd)

py-evm 0.3.0-alpha.19 (2020-08-31)

Features

Performance improvements

  • Upgrade rlp library to v2.0.0-a1 which uses faster rust based encoding/decoding. (#1951)

Deprecations and Removals

  • Removed unused and broken add_uncle API on FrontierBlock and consequentially on all other derived block classes. (#1949)

Internal Changes - for Contributors

  • Improve type safety by ensuring abc types do not inherit from rlp.Serializable which implicitly has type Any. (#1948)

Miscellaneous internal changes

py-evm 0.3.0-alpha.18 (2020-06-25)

Features

  • Expose get_chain_gaps() on ChainDB to track gaps in the chain of blocks. (#1947)

Internal Changes - for Contributors

  • Allow mine_block of chain builder tools to take a transactions parameter. This makes it easier to model test scenarios that depend on creating blocks with transactions. (#1947)

  • upgrade to Upgrade py-trie to the new v2.0.0-alpha.2 with fixed TraversedPartialPath

py-evm 0.3.0-alpha.17 (2020-06-02)

Features

  • Added support for Python 3.8. (#1940)

  • Methods now raise BlockNotFound when retrieving a block, and some part of the block is missing. These methods used to raise a KeyError if transactions were missing, or a HeaderNotFound if uncles were missing:

    • eth.db.chain.ChainDB.get_block_by_header()

    • eth.db.chain.ChainDB.get_block_by_hash() (it still raises a HeaderNotFound if there is no header matching the given hash)

    • Block.from_header() (#1943)

Bugfixes

  • A number of fixes related to checkpoints and persisting old headers, especially when we try to persist headers that don’t match the checkpoints.

    • A new exception CheckpointsMustBeCanonical raised when persisting a header that is not linked to a previously-saved checkpoint. (note: we now explicitly save checkpoints)

    • More broadly, any block persist that would cause the checkpoint to be decanonicalized will raise the CheckpointsMustBeCanonical.

    • Re-insert gaps in the chain when a checkpoint and (parent or child) header do not link

    • De-canonicalize all children of orphans. (Previously, only decanonicalized headers with block numbers that matched the new canonical headers)

    • Added some new hypothesis tests to get more confidence that we covered most cases

    • When filling a gap, if there’s an existing child that is not a checkpoint and doesn’t link to the parent, then the parent block wins, and the child block is de-canonicalized (and gap added). (#1929)

Internal Changes - for Contributors

  • Upgrade py-trie to the new v2.0.0-alpha.1, and pin it for stability. (#1935)

  • Improve the error when transaction nonce is invalid: include expected and actual. (#1936)

py-evm 0.3.0-alpha.16 (2020-05-27)

Features

  • Expose get_header_chain_gaps() API on HeaderDB to track chain gaps (#1924)

  • Add a new persist_unexecuted_block API to ChainDB. This API should be used to persist a block without executing the EVM on it. The API is used by syncing strategies that do not execute all blocks but fill old blocks back in (e.g. beam or fast sync) (#1925)

  • Update the allowable version of py_ecc library. (#1934)

py-evm 0.3.0-alpha.15 (2020-04-14)

Features

  • eth.chains.base.Chain.import_block() now returns some meta-information about the witness. You can get a list of trie node hashes needed to build the witness, as well as the accesses of accounts, storage slots, and bytecodes. (#1917)

Internal Changes - for Contributors

  • Use a more recent eth-keys, which calls an eth-typing that’s not deprecated. (#1665)

  • Upgrade pytest-xdist from 1.18.1 to 1.31.0, to fix a CI crash. (#1917)

  • Added KeyAccessLoggerDB and its atomic twin; faster make validate-docs (but you have to remember to pip install -e .[doc] yourself); str(block) now includes some bytes of the block hash. (#1918)

  • Fix for creating a duplicate “ghost” Computation that was never used. It didn’t break anything, but was inelegant and surprising to get extra objects created that were mostly useless. This was achieved by changing eth.abc.ComputationAPI.apply_message() and eth.abc.ComputationAPI.apply_create_message() to be class methods. (#1921)

py-evm 0.3.0-alpha.14 (2020-02-10)

Features

  • Change return type for import_block from Tuple[BlockAPI, Tuple[BlockAPI, ...], Tuple[BlockAPI, ...]] to BlockImportResult (NamedTuple). (#1910)

Bugfixes

  • Fixed a consensus-critical bug for contracts that are created and destroyed in the same block, especially pre-Byzantium. (#1912)

Internal Changes - for Contributors

  • Add explicit tests for validate_header (#1911)

py-evm 0.3.0-alpha.13 (2020-01-13)

Features

  • Make handling of different consensus mechanisms more flexible and sound.

    1. validate_seal and validate_header are now instance methods. The only reason they can be classmethods today is because our Pow implementation relies on a globally shared cache which should be refactored to use the ConsensusContextAPI.

    2. There a two new methods: chain.validate_chain_extension(header, parents) and vm.validate_seal_extension. They perform extension seal checks to support consensus schemes where headers can not be checked if parents are missing.

    3. The consensus mechanism is now abstracted via ConsensusAPI and ConsensusContextAPI. VMs instantiate a consensus api based on the set consensus_class and pass it a context which they receive from the chain upon instantiation. The chain instantiates the consensus context api based on the consensus_context_class. (#1899)

  • Support Istanbul fork in GOERLI_VM_CONFIGURATION (#1904)

Bugfixes

  • Do not mention PoW in the logging message that we log when validate_seal fails. The VM could also be running under a non-PoW consensus mechanism. (#1907)

Deprecations and Removals

  • Drop optional check_seal param from VM.validate_header and turn it into a classmethod. Seal checks now need to be made explicitly via VM.check_seal which is also aligned with VM.check_seal_extension. (#1909)

py-evm 0.3.0-alpha.12 (2019-12-19)

Features

py-evm 0.3.0-alpha.11 (2019-12-12)

Bugfixes

  • When double-deleting a storage slot, got KeyError: (b'\x03', 'key could not be deleted in JournalDB, because it was missing'). This was fallout from #1893 (#1898)

Performance improvements

  • Improve performance when importing a header which is a child of the current canonical chain tip. (#1891)

py-evm 0.3.0-alpha.10 (2019-12-09)

Bugfixes

  • Bug: if data was missing during a call to apply_all_transactions(), then the call would revert and continue processing transactions. Fix: we re-raise the EVMMissingData and do not continue processing transactions. (#1889)

  • Fix for net gas metering (EIP-2200) in Istanbul. The “original value” used to calculate gas costs was incorrectly accessing the value at the start of the block, instead of the start of the transaction. (#1893)

Improved Documentation

  • Add Matomo Tracking to Docs site.

    Matomo is an Open Source web analytics platform that allows us to get better insights and optimize for our audience without the negative consequences of other compareable platforms.

    Read more: https://matomo.org/why-matomo/ (#1892)

py-evm 0.3.0-alpha.9 (2019-12-02)

Features

Bugfixes

  • Remove the ice age delay that was accidentally left in Istanbul (#1877)

Improved Documentation

  • In the API docs display class methods, static methods and methods as one group “methods”. While we ideally wish to separate these, Sphinx keeps them all as one group which we’ll be following until we find a better option. (#794)

  • Tweak layout of API docs to improve readability

    Group API docs by member (methods, attributes) (#1797)

  • API doc additions (#1880)

    • Add missing API docs for MiningChain.

    • Add missing API docs for eth.db.*

    • Add missing API docs for ConstantinopleVM, PetersburgVM and IstanbulVM forks

    • Move all docstrings that aren’t overly specific to a particular implementation from the implementation to the interface. This has the effect that the docstring will appear both on the interface as well as on the implementation except for when the implementation overwrites the docstring with a more specific descriptions.

  • Add docstrings to all public APIs that were still lacking one. (#1882)

py-evm 0.3.0-alpha.8 (2019-11-05)

Features

  • Partly implement Clique consensus according to EIP 225. The implementation doesn’t yet cover a mode of operation that would allow to operate as a signer and create blocks. It does however, allow syncing a chain (e.g. Görli) by following the ruleset that is defined in EIP-225. (#1855)

  • Set Istanbul block number for mainnet to 9069000, and for Görli to 1561651, as per EIP-1679. (#1858)

  • Make the max length validation of the extra_data field configurable. The reason for that is that different consensus engines such as Clique repurpose this field using different max length limits. (#1864)

Bugfixes

  • Resolve version conflict regarding pluggy dependency that came up during installation. (#1860)

  • Fix issue where Py-EVM crashes when 0 is used as a value for seal_check_random_sample_rate. Previously, this would lead to a DivideByZero error, whereas now it is recognized as not performing any seal check. This is also symmetric to the current opposite behavior of passing 1 to check every single header instead of taking samples. (#1862)

  • Improve usability of error message by including hex values of affected hashes. (#1863)

  • Gas estimation bugfix: storage values are now correctly reset to original value if the transaction includes a self-destruct, when running estimation iterations. Previously, estimation iterations would produce undefined results, if the transaction included a self-destruct. (#1865)

Performance improvements

Internal Changes - for Contributors

  • Update upstream test fixtures to v7.0.0 beta.1 and address the two arising disagreements on what accounts should be collected for state trie clearing (as per EIP-161) if a nested call frame had an error. (#1858)

py-evm 0.3.0-alpha.7 (2019-09-19)

Features

  • Enable Istanbul fork on Ropsten chain (#1851)

Bugfixes

  • Update codebase to more consistently use the eth_typing.BlockNumber type. (#1850)

py-evm 0.3.0-alpha.6 (2019-09-05)

Features

  • Add EIP-1344 to Istanbul: Chain ID Opcode (#1817)

  • Add EIP-152 to Istanbul: Blake2b F Compression precompile at address 9 (#1818)

  • Add EIP-2200 to Istanbul: Net gas metering (#1825)

  • Add EIP-1884 to Istanbul: Reprice trie-size dependent opcodes (#1826)

  • Add EIP-2028: Transaction data gas cost reduction (#1832)

  • Expose type hint information via PEP561 (#1845)

Bugfixes

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

Performance improvements

  • ~20% speedup on “simple value transfer” benchmarks, ~10% overall benchmark lift. Optimized retrieval of transactions and receipts from the trie database. (#1841)

Improved Documentation

  • Add a “Performance improvements” section to the release notes (#1841)

Deprecations and Removals

  • Upgrade to eth-utils>=1.7.0 which removes the eth.tools.logging module implementations of ExtendedDebugLogger in favor of the ones exposed by the eth-utils library. This also removes the automatic setup of the DEBUG2 logging level which was previously a side effect of importing the eth module. See eth_utils.setup_DEBUG2_logging for more information. (#1846)

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

Features

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

Bugfixes

  • 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)

Features

  • 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)

Bugfixes

  • 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)

Bugfixes

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

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

Features

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

Bugfixes

  • 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)

v0.3.0-alpha.1

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

0.2.0-alpha.43

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

0.2.0-alpha.42

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

0.2.0-alpha.40

Released Jan 15, 2019

  • #1717: Indefinitely postpone the pending Constantinople release

  • #1715: Remove Eth2 Beacon code, moving to trinity project