Skip to content

Rundler v0.3.0

Compare
Choose a tag to compare
@github-actions github-actions released this 08 Jul 21:18
· 88 commits to main since this release

Summary

  • Main Feature: Bundle builder state machine improvements
    • Rewrite the state machine to support "cancellations." A cancellation occurs when the bundler receives a "replacement underpriced" error from a node, but it believes its submitting a fair gas price and there are current UOs that pay this gas price. Previously, the bundler would get stuck in this state and UOs that pay fair gas wouldn't get mined. It was possible to get into this price if a bundle was submitted with a high priority fee, but wasn't mined, and is blocking the bundler's nonce. The bundler now detects this state and attempts to remedy it with a transaction cancellation.
    • There are two types of cancellations: hard and soft. Some RPCs support soft cancellations which allow the sender to cancel and existing transaction without issuing a replacement (i.e. Flashbots). Hard cancellations require a replacement transaction and cost tokens.
    • Remove maximum fee increases from bundle submission - if a UO is paying enough gas to be included in a bundle it should. Maximum fee increases still applies to hard cancellation transactions.
    • Remove transaction status polling from the tracker, the state machine runs completely off of a defined trigger - either a new block or a timeout.
    • Add time to mine tracking and metrics.
  • Chain support:
    • Add support for Avalanche
    • Ban access to Arbitrum Stylus contracts without whitelist
    • Remove Goerli networks
  • Bug fixes:
    • Fix race condition in paymaster tracking.
    • Fix error message for unstaked entity mempool count.
    • Raise Polygon Amoy chain configuration min fee to 30 gwei.
    • Add a timeout of 10s to the tracer calls.
  • Small Features:
    • Allow for multiple private keys to be configured.
    • Allow staked senders to have multiple UOs per bundle.
    • Check for total gas limit exceeded after estimation.
    • Remove ops from pool if condition is not met when using conditional RPC.
    • Update to Rust v1.79.0
    • Fix transaction sender's support of transaction status across various provider types.

Breaking changes

  • Removed BUILDER_MAX_FEE_INCREASES replaced with BUILDER_MAX_CANCELLATION_FEE_INCREASES
  • Removed BUILDER_SENDER=conditional replaced with BUILDER_SENDER=raw and BUILDER_USE_CONDITIONAL_RPC=true
  • Deprecated BUILDER_PRIVATE_KEY replaced with BUILDER_PRIVATE_KEYS

All Changes

  • feat: add support for avax chains
  • feat(sim): ban access to arbitrum stylus contracts during sim
  • fix(builder): improve replacement underpriced handling
  • fix(cli): error if recursive base config, remove goerli netowrks
  • feat(tx): change transaction size limit (#749)
  • fix: various v0.3-rc fixes
  • chore: update to rust v1.79.0
  • chore(amoy): raise amoy chain config min fee to 30gwei
  • fix(pool): fix crash when block height goes backwards
  • chore: fix docs and set v0.3 version number
  • fix(rpc): fix error message for unstaked entity mempool count
  • fix(builder): fix builder state machine replacement tracking
  • feat(sim): check total gas limit after estimation
  • chore(builder): add unit tests to bundle_sender
  • feat(builder): allow for multiple private keys
  • feat(builder): reject ops if condition not met after failure
  • fix(builder): rework raw sender to support dropped/conditional/split-rpcs correctly
  • refactor(builder): large refactor of bundle sender state machine and metrics
  • feat(builder): cancel transaction when replacement underpriced
  • feat(builder): remove polling from transaction tracker, update state machine
  • feat(pool): allow staked senders to have multiple UOs in best_operations
  • feat(pool): add time to mine tracking and metrics
  • fix(pool): fix race condition in paymaster tracking
  • fix(tracer): set tracer timeout default back to 10s (#733)
  • chore(deps): bump braces from 3.0.2 to 3.0.3 in /crates/sim/tracer
  • feat(tracer): add timeout of 10s to tracer (#730)
  • feat(ci): check if output file exists (#727)

Binaries

The binaries are signed with the PGP key: 85C5 DEF0 37D3 FDE4 FC17 94B1 475B 35EA 9352 EB2

System Architecture Binary PGP Signature
x86_64 rundler-v0.3.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 rundler-v0.3.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 rundler-v0.3.0-x86_64-pc-windows-gnu.tar.gz PGP Signature
x86_64 rundler-v0.3.0-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 rundler-v0.3.0-aarch64-apple-darwin.tar.gz PGP Signature
System Option - Resource
Docker v0.3.0