gitmyhub

contender

Rust ★ 0 updated 7mo ago ⑂ fork

run highly configurable benchmarks for eth execution nodes over JSON-RPC

Contender is a tool that stress-tests Ethereum nodes by flooding them with transactions at a controlled rate. Think of it like a load-testing tool—the kind you'd use to see how a website holds up during a traffic spike, except here you're testing how an Ethereum execution client (the software that runs a blockchain node) handles massive transaction volume.

At its core, the tool sends transactions to an Ethereum node via its JSON-RPC interface (a standard way to talk to blockchain nodes). You tell Contender how many transactions per second you want to send, what kind of transactions they should be, and how long to keep going. It then generates and fires those transactions at your target node while tracking what happens—success rates, failures, timing, and other metrics. The tool saves results to a local database so you can generate reports and see exactly how the node performed under stress.

People use Contender when they need to benchmark Ethereum execution clients or test how a live network node performs under load. Node operators might use it to validate that their infrastructure is stable before going into production. Researchers testing new Ethereum client software would run it to compare performance across versions. It supports repeatable tests through seeded randomization—so you can run the exact same test twice and get consistent results—and lets you define custom "scenarios" in configuration files, so you can test different patterns: simple fund transfers, complex contract interactions, or anything in between.

The tool is written in Rust, a fast systems language, which means it can generate very high transaction throughput without bogging down its own performance. You can run it from the command line, inside Docker for isolation, or embed it as a library in your own code. It's designed for people who need serious, production-grade load testing—not just casual experimentation.