This release improves the per-EOA transaction batch pool to close a nonce-ordering gap for high-volume EOAs, adds soft-finality indexing, and includes preparation for the upcoming Ethereum Glamsterdam hard-fork.
⚡ Improved Per-EOA Transaction Batch Pool (nonce-ordering fix)
Flow EVM has no shared mempool, so parallel transactions from a single EOA carrying sequential nonces could arrive out of order and be silently dropped by the collection node. The --tx-batch-mode=true pool that previously grouped transactions on a global interval has been reworked into a proper per-EOA BatchTxPool that:
- Fast-paths the next expected nonce (submits immediately when nothing is in flight for that EOA).
- Holds out-of-order transactions per EOA until their nonce gap fills.
- Spaces consecutive submissions per EOA to avoid re-ordering by the collection node.
- Rejects duplicate transactions and same-nonce in-flight resubmissions up front, so callers get a fast, clear error instead of a burned Flow fee.
Who benefits:
- High-volume EOAs (payment providers, exchanges): parallel transactions from a single EOA are no longer at risk of silent drops from nonce re-ordering.
- Regular users: unaffected; the fast path submits an expected-nonce transaction immediately.
For details, see issue #983 and PR #986.
🚀 Soft-Finality Indexing
The gateway can now index EVM block and transaction data from finalized (rather than sealed) Flow blocks, cutting the time between transaction submission and it being observable via JSON-RPC. Enable with --experimental-soft-finality-enabled=true. An optional safety check, --experimental-sealing-verification-enabled=true, halts ingestion if a finalized block later fails to seal, guarding against divergent state.
Who benefits:
- dApps and wallets reading state or receipts shortly after submission — receipts and balances become available seconds sooner.
- Indexers and subgraphs that follow the tip of chain — lower end-to-end lag.
🔧 Preparation for the EVM Glamsterdam Hard-Fork
This release includes the code changes needed to support the upcoming Ethereum Glamsterdam hard-fork (#962). The hard-fork itself is not activated on-chain in this release — activation will happen at a later coordinated network upgrade. Shipping the changes now lets operators upgrade their gateway image ahead of time and avoid a rushed upgrade at activation.
Toolchain and Dependency Updates
- Go toolchain bumped to 1.26.
flow-gobumped to v0.51.0, which incorporates the 18 Aug 2026 Height Coordinated Upgrade on Mainnet28 (#989).
What's Changed
- Make PoC configurable by @peterargue in #737
- add system to verify soft finality events were eventually sealed by @peterargue in #757
- Check system tx if block is missing EVM block events by @peterargue in #771
- Add flag to disable enforcing the minimum gas price by @peterargue in #811
- Back-port EVM Pectra hard-fork to soft finality by @m-Peter in #816
- Create
ValidationOptionsfor each tx submission by @m-Peter in #819 - Return authorization list for
SetCodeTxtype by @m-Peter in #822 - [Backport] Implement
BatchTxPoolto handle nonce mismatch issues by @m-Peter in #833 - Sync soft-finality with changes from
mainbranch by @m-Peter in #843 - Sync soft-finality branch with changes from main by @m-Peter in #848
- Improve release frequency of signing keys for soft-finality by @m-Peter in #850
- Give blocks a better chance to become sealed before calling
NotifyBlockby @m-Peter in #853 - Back-port changes from
mainto soft-finality by @m-Peter in #854 - Sync Soft Finality with changes from
mainbranch by @m-Peter in #869 - [Back-port] Bump flow-go version to
v0.43.0by @m-Peter in #882 - [Back-port] Update to latest
flow-gofor Forte upgrade by @m-Peter in #905 - Handle missing evm block in spork root block by @peterargue in #908
- Update soft-finality branch with latest changes from main by @vishalchangrani in #967
- fix(batch): always pool transactions to eliminate first-tx nonce race (soft-finality) by @vishalchangrani in #968
- log: surface dropped EVM tx hashes and add tx-hash to API request log by @vishalchangrani in #970
- Batch tx submission mode with minimal in-memory tx pool by @m-Peter in #925
- Suggestion to 962 by @zhangchiqing in #972
- Refactor & harden the nonce-aware tx mempool (stacked on #971) by @vishalchangrani in #974
- [Flow EVM] Upgrade to Ethereum Glamsterdam hard-fork by @m-Peter in #962
- Add nonce-aware transaction pool by @vishalchangrani in #971
- Port nonce-aware tx mempool (#971) to the soft-finality branch by @vishalchangrani in #977
- Update
flow-goversion to fix state mismatch issue by @m-Peter in #980 - Update
flow-goversion to fix state mismatch issue by @m-Peter in #981 - feat(requester): log wrapping Cadence tx ID on mempool submissions by @vishalchangrani in #984
- Implement the
RPCBlockHeaderSubscriberfor indexing finalized results by @m-Peter in #728 - Rework
BatchTxPoolfunctionality to a legitimate Ethereum tx mempool by @m-Peter in #986 - Update CODEOWNERS by @turbolent in #990
- Update
flow-goversion to latest from HCU by @m-Peter in #989 - Remove --tx-mempool-mode and the TxMemPool implementation by @vishalchangrani in #991
Full Changelog: v1.5.1...v1.5.7