High-performance Ethereum transaction spammer and benchmarking tool.
Install:
cargo install --git https://github.com/flashbots/contender --lockedRun a simple spam scenario:
contender spam --tps 50 -r $RPC_URL fill-blockRun a bundled scenario from the repo:
contender setup scenario:stress.toml -r $RPC_URL -p $PRIVATE_KEY
contender spam scenario:stress.toml -r $RPC_URL --tps 10 -d 3See examples for more usage patterns.
Fetch the latest image:
docker pull flashbots/contenderDouble-check your RPC URL:
export RPC="http://host.docker.internal:8545"
# uncomment if host.docker.internal doesn't work:
# export RPC="http://172.17.0.1:8545"Run contender in a container with persistent state:
docker run -it -v /tmp/.contender:/root/.contender \
contender spam --tps 20 -r $RPC transfers
-vmaps/tmp/.contenderon the host machine to/root/.contenderin the container, which contains the DB; used for generating reports and saving contract deployments.
- Rust toolchain (latest stable)
- SQLite development headers (
libsqlite3-devon Linux) - A JSON-RPC endpoint for the target Ethereum node
Contender is a high-performance Ethereum transaction spammer and benchmarking tool, built for repeatable load tests against EL clients and live networks. It supports both per-second (TPS) and per-block (TPB) timing, seeded fuzzing for reproducibility, and SQLite-backed state for contracts, runs, and reports.