0xPolygon/bor - v2.7.0 New

Published: Mar 26, 2026
MAINNET Deadline: Apr 8, 2026

Release Summary

This release introduces significant changes and prepares for the upcoming **Giugliano Hard Fork**.

ACTION REQUIRED: The Giugliano Hard Fork is scheduled for Mainnet at block 85268500, which is expected around April-08-2026, 2 PM UTC. All node operators must update their Mainnet nodes before this deadline to remain in sync with the network.

Important CLI Flag Changes:
- The --log-level flag is deprecated. Please use the --verbosity flag instead.
- The --rpc.batchlimit flag has been renamed to -rpc.batch-request-limit.

Key Features

Performance and Reliability

Notable Fixes

Observability & Metrics

Release Notes

This release contains several improvements and includes changes planned for the upcoming **Giugliano Hard Fork**.

The Giugliano Hard Fork on Mainnet is scheduled for block number [85268500](https://polygonscan.com/block/countdown/85268500). Which is expected to hit at **April-08-2026 2 PM UTC**. Make sure to **update all your Mainnet nodes before this time**.

**Note:**
1. The `--log-level` flag is deprecated, use `--verbosity` flag going forward.
2. The `--rpc.batchlimit` flag is renamed to `-rpc.batch-request-limit`.


## What's Changed

### Features

- (feat): preconf + private tx relay by @manav2401 in #2004
- (feat): re-enable snap sync by @manav2401 in #2077
- Prefetch Transactions from Pool & PIP-66 Back by @lucca30 in #2031
- Dynamic Target Gas for stable prices by @lucca30 in #2085
- consensus, core, eth, internal, miner, rpc, tests: implement additional rpc methods by @marcello33 in #2063
- core/rawdb: added filesystem based witness storage (with --witness.filestore flag) by @pratikspatil024 in #2098
- consensus, ethapi: embed gas target and base fee params in block header extra field (post Giugliano HF) by @pratikspatil024 in #2135
- Giugliano HF by @lucca30 in #2099
- core/vm: add kzg precompile back for madhugiri forks by @manav2401 in #2140
- consensus/bor, eth: add Heimdall HTTP/gRPC/WS failover with health recovery by @pratikspatil024 in #2050
- feat: add network diagnostics and state dump action by @kamuikatsurgi in #2051

### Performance

- added rate limiting to address biased trie cache preloading by @pratikspatil024 in #2029
- core/state: reduce lock contention in triePrefetcher.used() by @cffls in #2049
- blockstm: replace O(n²) UpdateDeps with inverted-index DepsBuilder by @kamuikatsurgi in #2094
- core/txpool: use reheap snapshot to avoid duplicate entries in heap by @manav2401 in #2095
- eth/protocols/wit: remove peer lock held across p2p.Send to prevent broadcast stalls by @pratikspatil024 in #2120
- Use PGO when building binaries by @cffls in #2138
- eth/p2p: raise default tx announcement queue limit from 4096 to 16384 by @lucca30 in #2151

### Bug Fixes

- Fix more race conditions detected by -race by @cffls in #2042
- Fix formatting of static-nodes in config.toml by @adamdossa in #2048
- fix root hash calculation during reorgs by @marcello33 in #2080
- eth/handler: fix issue 55 by @marcello33 in #2084
- Clean up lastRebroadcast on transaction rejection by @LarryArnault45 in #2038
- core/vm, core, miner: fix interrupt propagation to nested EVM calls by @lucca30 in #2092
- consensus/bor: prevent empty blocks when remaining build time is insufficient by @cffls in #2093
- Improve scenario of timestamp check in Rio hardfork by @lucca30 in #2091
- fix(server): wire Identity config to node.UserIdent in buildNode by @minhd-vu in #2105
- eth: fix overflow impacting milestone lock and syncing by @marcello33 in #2111
- Fix more race conditions by @cffls in #2104
- Fix SDK regression by @adamdossa in #2121
- Fix SDK regression part deux by @adamdossa in #2122
- Fix SDK regression part 3 by @adamdossa in #2124
- Fix SDK regression part 4 by @adamdossa in #2125
- core: fix finalStateDB pointing to backupStateDB (block-stm) by @pratikspatil024 in #2137
- core/rawdb, p2p, eth: fix graceful shutdown of pruner and dial scheduler by @kamuikatsurgi in #2079
- disable eth_simulateV1 by @marcello33 in #2161

### Observability & Metrics

- Sync metrics by @avalkov in #1928
- core, eth, miner: add metrics to track block creation and write pipeline latency by @pratikspatil024 in #2097
- Add prefetcher timer by @cffls in #2115
- Slow TX Observability, Per-TX Latency Metric, and Timeout-Interrupt Diagnostics by @lucca30 in #2134
- metrics: add more go runtime metrics by @manav2401 in #2109
- Including Missing Metrics from Import Blocks path into Production by @lucca30 in #2139
- eth/protocols/wit: added witness broadcast metrics by @pratikspatil024 in #2120

### Configuration & CLI

- internal/cli, packaging, docs: add config.toml updater, refresh templates, and document workflow by @kamuikatsurgi in #2100
- internal/cli, node, rpc: port missing geth flags by @kamuikatsurgi in #2106
- internal/cli/server: wire txpool.locals flag to txpool config by @manav2401 in #2114
- eth/filters, rpc: add --rpc.rangelimit flag and fix filter config pass-through by @lucca30 in #2149
- eth/ethconfig: remove redundant RPCLogQueryLimit field by @lucca30 in #2154
- witness: disable filestore by default by @pratikspatil024 in #2144
- docs/cli: update the docs with --witness.filestore flag by @pratikspatil024 in #2108
- chore: reuse bor dumpconfig by @kamuikatsurgi in #2117
- Change log level of commit interrupt on non-BP nodes by @cffls in #2133

### Chain Config

- added giugliano block for amoy by @pratikspatil024 in #2141
- added giugliano block for mainnet by @pratikspatil024 in #2164

### Testing

- consensus/bor: add test coverage by @cffls in #2046
- fix flaky TestPrivateTxSubmissionRetry timing races by @lucca30 in #2089

### CI, Build & Chores

- refactor: ci by @kamuikatsurgi in #2044
- Bump go version to 1.25.7 by @lucca30 in #2045
- fix: configure Docker daemon min API version for Pumba compatibility by @kamuikatsurgi in #2052
- backport: master to develop by @kamuikatsurgi in #2066
- (chore): bump go version to 1.26 by @manav2401 in #2067
- disabling provenance/SBOM for those per-arch docker build by @sreevalsanmr in #2071
- Backmerge master into develop by @manav2401 in #2072
- (chore): correct go version to 1.26.0 by @manav2401 in #2074
- chore: remove pumba compatibility step from stateless e2e by @kamuikatsurgi in #2083
- fix govuln by @marcello33 in #2081
- build(deps): bump github.com/pion/dtls/v3 from 3.0.10 to 3.0.11 by @dependabot in #2086
- build(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 by @dependabot in #2069
- fix: avoid mirror.gcr.io images by @kamuikatsurgi in #2102
- Allow claude PR comments by @marcello33 in #2101
- (chore): bump claude code actions to v1.0.69 by @manav2401 in #2103
- Clean up Claude config by @adamdossa in #2127
- Add Claude Code security review rules for Bor codebase by @mt-polygon-technology in #2110
- Update Claude Settings by @adamdossa in #2130
- Remove Geth references from README.md and remove Claude full output by @adamdossa in #2132
- Adding workflow to publish the docker image on GHCR by @0xsajal in #2123
- Bump to go1.26.1 by @lucca30 in #2119

## New Contributors
* @LarryArnault45 made their first contribution in https://github.com/0xPolygon/bor/pull/2038
* @minhd-vu made their first contribution in https://github.com/0xPolygon/bor/pull/2105
* @mt-polygon-technology made their first contribution in https://github.com/0xPolygon/bor/pull/2110

**Full Changelog**: https://github.com/0xPolygon/bor/compare/v2.6.0...v2.7.0

Links

Back to 0xPolygon/bor releases