Ethereum Test RPC server
Ethereum Test RPC
Limited RPC client intended for use with automated testing. Uses pythereum to run an Ethereum client behind the scenes without the need for mining or networking. The result is an Ethereum client that provides instant results and quick feedback during development.
Installing is easy, through pip:
$ pip install eth-testrpc
Or, to upgrade:
pip install eth-testrpc --upgrade
Or, to install with gevent threads
pip install eth-testrpc[gevent]
And then set the environment variable
Installing through pip will make the
testrpc-py command available on your machine:
This will run testrpc on localhost:8545. You can pass through a different port (-p, --port) or domain (-d, --domain).
The RPC methods currently implemented are:
eth_getCode(only supports block number “latest”)
eth_newBlockFilter(temporarily removed until implemented in underlying library)
eth_newFilter(temporarily removed until implemented in underlying library)
eth_getFilterChanges(temporarily removed until implemented in underlying library)
eth_uninstallFilter(temporarily removed until implemented in underlying library)
There’s also special non-standard methods that aren’t included within the original RPC specification:
evm_reset: No params, no return value.
evm_snapshot: No params. Returns the integer id of the snapshot created.
evm_revert: One optional param. Reverts to the snapshot id passed, or the latest snapshot.
testrpc will revert the state of its internal
chain back to the genesis block and it will act as if no processing of
transactions has taken place. Similarly, you can use
evm_revert methods to save and restore the evm state as desired. Example use
cases for these methods are as follows:
evm_reset: Run once at the beginning of your test suite.
evm_snapshot: Run at the beginning of each test, snapshotting the state of the evm.
evm_revert: Run at the end of each test, reverting back to a known clean state.
TestRPC also exposes the
evm_mine method for advancing the test evm by some
number of blocks.
evm_mine: Optionally supply an integer for the number of blocks to mine. Default is 1 block. No return value.
TestRPC exposes the
testing_timeTravel method for fast-forwarding to a future timestamp.
testing_timeTravel: Takes an integer timestamp that must be greater than the timestamp of the current latest block.
TestRPC exposes the
rpc_configure method which can be used to modify the
static values returned by the following endpoints.
rpc_configure takes two parameters.
key: string representing the rpc method on which you want to change the return value.
value: the value that should be returned by the endpoint.
clearing fork configurations determine
which block number the respective fork rules should come into effect. All
TestRPC uses a default gas limit of 4000000. To change this set the
TESTRPC_GAS_LIMIT to the desired value.
Releasing a new version (for eth-testrpc developers)
- Bump version number in
- Add entry to
- Tag the release.
git tag -s -m "X.X.X Release" vX.X.X git push --tags
- Go make the release on github for the tag you just pushed
- Build and push release to PyPI
This library was originally authored by Consensys and transferred later when it was no longer maintained. A big thanks for them to creating this extremely useful library.