Ethereum Consensus Tests
Common tests for all clients to test against. Test execution tool: https://github.com/ethereum/retesteth
Test Formats
Maintained tests:
/BasicTests
/BlockchainTests
/GeneralStateTests
/TransactionTests
/RLPTest
/src
See descriptions of the different test formats in the official documentation at http://ethereum-tests.readthedocs.io/.
Note:
The format of BlockchainTests recently changed with the introduction of a new field sealEngine
(values: NoProof
| Ethash
), see related JSON Schema change or BlockchainTest format docs for reference.
This means that you can skip PoW validation for NoProof
tests but also has the consequence that it is not possible to rely on/check PoW
related block parameters for these tests any more.
Clients using the library
The following clients make use of the tests from this library. You can use these implementations for inspiration on how to integrate. If your client is missing, please submit a PR (requirement: at least some minimal test documentation)!
- Mana (Elixir): Docs, Test location:
ethereum_common_tests
- go-ethereum (Go): Docs, Test location:
tests/testdata
- Parity Ethereum (Rust): Docs, Test location:
ethcore/res/ethereum/tests
- ethereumjs-vm (JavaScript): Docs, Test location:
ethereumjs-testing
dependency - Trinity (Python): Docs, Test location:
fixtures
- Pantheon (Java): Docs, Test Location:
ethereum/referencetests/src/test/resources
- Nethermind (C#) Docs, Test Location:
src/tests
Using the Tests
We do versioned tag releases for tests and you should aim to run your client libraries against the latest repository snapshot tagged.
Generally the develop branch in ethereum/tests
is always meant to be stable and you should be able to run your test against.
Contribute to the Test Suite
See the dedicated section in the docs on how to write new tests. Or https://github.com/ethereum/retesteth/wiki/Creating-a-State-Test-with-retesteth
If you want to follow up with current tasks and what is currently in the works, have a look at the issues
Currently the C++ Aleth
client is the reference client for generating tests. Have a look at issues and PRs tagged with testeth
to get an idea what is currently being worked on regarding the test generation process.
Contents of this repository
Do not change test files in folders:
- StateTests
- BlockchainTests
- TransactionTests
- VMTests
It is being created by the testFillers which could be found at src folder. The filler specification and wiki are in development so please ask on gitter channel for more details.
If you want to modify a test filler or add a new test please contact @winsvega at https://gitter.im/ethereum/aleth. Use the following guide: https://github.com/ethereum/retesteth/wiki/Creating-a-State-Test-with-retesteth