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.
--witness.filestore flag allows for filesystem-based storage of witnesses, offering an alternative to in-memory storage.lastRebroadcast map.--identity flag now works correctly when using the bor server command, ensuring the node's custom identity is properly displayed in P2P communications.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