Releases: flashbots/contender
contender v0.10.1
Summary
v0.10.1 is a focused patch release for the contender CLI, including RPC/server stability fixes, improved long-running spam funding behavior, custom transaction endpoint support, and dependency updates.
Highlights
- Added
--txs-urlsupport to send transactions to a custom endpoint. - Replaced timed
--foreverauto-funding with per-batch balance-checked funding, reducing over-funding during long spam runs. - Fixed RPC/server CPU usage bugs, including cleanup around session shutdown and cancellation.
- Updated Alloy dependencies.
- Updated
contender_clito use the newercontender_core.
External Contributors
🙏 Thanks to these folks for their contributions to this release:
All Changes
Features / Behavior Changes
- Route
eth_sendRawTransactionto a dedicated endpoint via--txs-url(#534) - Replace spammer refill logic with per-batch balance-checked funding (#523)
- Switch to per-crate versions (#536)
- Update “using contender as a library” docs (#537)
Release / Versioning / CI
- Add release script auto-bump support (#538)
- Remove trailing slashes from workspace members and path dependencies (#539)
- Fix dependabot workspace parsing (#540)
- Pin dependencies (#535)
- Update release scripts (#562)
- Add license ops updates (#563)
- Bump crate versions (#565)
- Fix tag script index bug and tolerate existing tags (#571)
- Fix release trigger typo (#572)
- CI bugfixes (#573)
- Fix release version parsing (#574)
- Make release script tolerate retries (#575)
- Fix container release (#576)
- Remove stray
println(#577) - Fix release job version parsing (#578)
Dependency Updates
- Alloy 2.0 update (#561)
alloy-rpc-types-debug1.0.41 → 2.0.4 (#541)alloy-serde1.0.41 → 2.0.4 (#545)alloy-signer1.0.41 → 2.0.4 (#551)alloy-eips1.0.41 → 1.1.0 (#549)alloy-sol-type-parser1.4.1 → 1.5.7 (#553)jsonrpsee0.24.10 → 0.26.0 (#547)tokio1.48.0 → 1.50.0 (#552)tokio-stream0.1.17 → 0.1.18 (#543)rand0.8.5 → 0.9.2 (#546)chrono0.4.42 → 0.4.44 (#544)handlebars6.3.2 → 6.4.0 (#550)axum0.8.8 → 0.8.9 (#554)syn2.0.108 → 2.0.117 (#555)thiserror2.0.17 → 2.0.18 (#548)rustls-webpki0.103.10 → 0.103.13 (#526)openssl0.10.75 → 0.10.78 (#525)- Remove
ark-ecfrom dependencies (#542) mozilla-actions/sccache-action0.0.9 → 0.0.10 (#528)
Docs / Repo Maintenance
- Remove license badges from README (#564)
Internal Breaking Changes
contender_core::TestScenario::newadded a new param to its signature (cancel_token)contender_coreis now atv0.11.0
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.10.1-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.10.1-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.10.1-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.10.1-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.10.0
Summary
New
-
API daemon (#494)
Run Contender as a service and control it via JSON-RPC. -
Combined callbacks (#506)
Chain hooks that implementOnTxSent + OnBatchSent. -
Tx result tracking (#519)
Reports now include counts for successful vs failed transactions.
Changes
-
Typed init state (#507)
Contendernow enforces initialized vs uninitialized usage at compile time. -
min_balanceaccepts ETH units (#518)
No need to manually convert to wei, just add a unit: e.g. "1 eth"
Improvements
- Better spam/campaign logs (#508)
- Setup logs use tracing spans (#520)
- Fix spam progress logs in server UI (#510)
- Cache
NilCallbackerrors (#511)
Tighter API surface, clearer logs, and basic tx outcome visibility.
All Changes
- chore: update changelogs w/ release tag (#522)
- version v0.10.0 (#521)
- feat(rpc): accept eth denominations for SessionOptions.min_balance (#518)
- feat: track failed/successful txs (#519)
- (setup cost estimation logs): replace banners with tracing spans (#520)
- cache errors from NilCallback if detected (#511)
- server webpage: fix log output from spam_progress reports (#510)
- improve campaign/spam logs (#508)
- differentiate initialized Contender from uninitialized; offload checks to compiler (#507)
- feat: combined callback (#506)
- Feat/api daemon (#494)
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.10.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.10.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.10.0-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.10.0-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.9.1
Summary
This patch includes improvements to long-running spammers (#496), live metrics reporting (#493), deterministic setup tx ordering (#491), eth_sendRawTransactionSync support (#459), continuous funding for --forever spam runs (#502), metrics support for sub-second blocks (#498), and migrates the .contender data dir, supporting $XDG_STATE_HOME (#499).
❤️ Many thanks to these contributors:
@0xl3on
@vbuilder69420
@gligneul
@bitwiseguy
@0xWeakSheep
All Changes
- Release/v0.9.1 (#504)
- bugfix/init scenario error handling (#503)
- feat(cli): organize help flags into logical sections (#501)
- feat: keep spammers funded (#502)
- Add option to config time to inclusion bucket size (#498)
- feat: move default data dir (#499)
- spam: harden against transient rpc failures (#496)
- chore(deps): bump docker/setup-buildx-action from 3 to 4 (#478)
- chore(deps): bump docker/metadata-action from 5 to 6 (#479)
- chore(deps): bump rustls-webpki from 0.103.8 to 0.103.10 (#474)
- feat: structured transaction rate reporting during spam (#493)
- feat: deterministic setup with --seed flag (#491)
- feat: add sync raw send transaction support (#459)
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.9.1-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.9.1-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.9.1-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.9.1-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.9.0
Summary
v0.9.0 introduces a new rpc spammer, flashblocks support, JSON reports for automated analysis, scenario labels for running multiple instances of contender in parallel, and several core performance improvements and bug fixes.
new features
- add option to export reports as JSON (#453)
- add scenario labels to enable concurrent spam runs on the same scenario (#456)
- add flashblocks support, track tx time-to-inclusion within a flashblock (#465)
- spam any rpc method (#468)
improvements
- add contender version to bottom of reports (#452)
- limit concurrent funding tasks and handle "already known" gracefully (#451)
- add chainlink scenario (#446)
- spammer: remove delay in tps mode to achieve 1sec loop timing (#454)
- cleanup reports (#455)
- fix: generate report when passing --gen-report (#457)
- contender report: add gas quantiles (#464)
- set SETUP_CONCURRENCY_LIMIT with env var (#461)
breaking changes are detailed in each crate's individual CHANGELOG.md file.
All Changes
- chore: set version 0.9.0 (#463)
- chore(deps): bump lz4_flex from 0.11.5 to 0.11.6 (#473)
- chore(deps): bump quinn-proto from 0.11.13 to 0.11.14 (#472)
- chore(deps): bump docker/build-push-action from 6 to 7 (#471)
- chore(deps): bump docker/setup-qemu-action from 3 to 4 (#470)
- chore(deps): bump docker/login-action from 3 to 4 (#469)
- chore(deps): bump actions/download-artifact from 7 to 8 (#467)
- chore(deps): bump actions/upload-artifact from 6 to 7 (#466)
- chore(deps): bump keccak from 0.1.5 to 0.1.6 (#458)
- feat: spam rpc (#468)
- feat: set SETUP_CONCURRENCY_LIMIT with env var (#461)
- flashblocks: track tx time-to-inclusion within a flashblock (#465)
- Merge pull request #464 from yashvardhan-kukreja/gas-quantile-reports
- cargo fmt
- feat: contender report: add gas quantiles
- feat: add scenario labels (#456)
- fix: generate report when passing --gen-report (#457)
- chore(deps): bump actions/download-artifact from 4 to 7 (#449)
- chore(deps): bump actions/upload-artifact from 4 to 6 (#450)
- feat/cleanup report (#455)
- feat/json reports (#453)
- spammer: remove delay in tps mode to achieve 1sec loop timing (#454)
- add chainlink scenario (#446)
- fix: limit concurrent funding tasks and handle "already known" gracefully (#451)
- add contender version to bottom of reports (#452)
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.9.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.9.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.9.0-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.9.0-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.8.1
Summary
This release contains bugfixes:
It also upgrades some dependencies. See below for a full list.
All Changes
- release/v0.8.1 (#448)
- fix: limit concurrent setup tasks to prevent FD exhaustion (#447)
- chore(deps): bump actions/upload-artifact from 5 to 6 (#391)
- chore(deps): bump actions/download-artifact from 6 to 7 (#392)
- chore(deps): bump actions/checkout from 4 to 6 (#441)
- chore(deps): bump bytes from 1.10.1 to 1.11.1 (#442)
- chore(deps): bump git2 from 0.20.2 to 0.20.4 (#444)
- chore(deps): bump time from 0.3.44 to 0.3.47 (#445)
- fix spam time drift & erc20 defaults (#443)
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.8.1-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.8.1-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.8.1-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.8.1-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.8.0
Summary
- track nonces internally for create & setup transactions (#438) (bugfix for fast chains)
- bugfix: tolerate failure of
get_block_receipts(#438) - improved core code (#439)
Breaking changes
- removed
--redeploy, no longer skips contract deployments if previously deployed (#438) - breaking changes in
contender_core(see core changelog for details)
All Changes
- release/v0.8.0 (#440)
- feat/simplify agent setup (#439)
- bugfix/setup nonces (#438)
- fix: remove unneeded branch rule (#435)
- Feat/builder playground ci (#432)
- bugfix: ghcr container
latesttag (#434)
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.8.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.8.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.8.0-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.8.0-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.7.4
Summary
Improves campaign spammer, adds more integration tests.
All Changes
- Release/v0.7.4 (#433)
- feat/anvil integration tests (#430)
- feat/simplify campaign builtin semantics (#428)
- perf(campaign): add fast path for single-mix stages (#427)
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.7.4-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.7.4-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.7.4-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.7.4-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.7.3
Summary
Improved error logging in DB, added apple + aarch64 binaries to releases, --infinite campaigns, improved logs, fixed inconsistent campaign seeds, improved tx cache & receipt handling.
All Changes
- release/v0.7.3 (#426)
- perf(spammer): lock-free TxActor and non-blocking tx sending (#423)
- fix: propagate campaign execution errors + fix-campaign-seeds (#425)
- improve --min-balance warning log (#421)
- add --infinite flag to campaigns (#420)
- cross-platform release workflow (#415)
- spammer: record onchain revert as error in db (#418)
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.7.3-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | contender-v0.7.3-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| x86_64 | contender-v0.7.3-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | contender-v0.7.3-aarch64-apple-darwin.tar.gz | PGP Signature |
contender v0.7.2
Summary
Contains a critical bugfix related to builtin scenarios estimating spam cost before deploying contracts.
All Changes
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.7.2-x86_64-unknown-linux-gnu.tar.gz | PGP Signature |
contender v0.7.1
Summary
Added admin contract-address subcommand and fixed a bug that could crash the program when running campaigns.
All changes
- bugfix: funding collisions in campaigns (#413)
- feat: add contender admin contract-address subcommand (#412)
NOTE: the --timeout flag (from contender spam) is being deprecated. It will be removed in the next minor release.
Binaries
The binaries are signed with the PGP key: F62E A741 E6B4 E0BA 58D3 8619 698A C82F 9A2F E605
Contender CLI
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | contender-v0.7.1-x86_64-unknown-linux-gnu.tar.gz | PGP Signature |