0xPolygon/bor - v2.3.0 New

Published: Sep 24, 2025
MAINNET Deadline: Aug 20, 2024

Release Summary

This release introduces the mandatory Rio hardfork for the Polygon PoS mainnet, scheduled to activate at block height 77414656.

This is a critical update for all node operators, who must upgrade their Bor and Heimdall clients to remain in sync with the network. Failure to do so will lead to consensus issues post-activation.

Key Highlights of the Rio Hardfork:

Release Notes

## Description

This release introduces Rio hardfork at bor's block height [77414656](https://polygonscan.com/block/countdown/77414656) on mainnet.
The hardfork will enable validator-elected block producer ([VEBloP](https://github.com/0xPolygon/Polygon-Improvement-Proposals/blob/main/PIPs/PIP-64.md)).

For more details about producer election process, see the migration plan in https://github.com/0xPolygon/heimdall-v2/pull/283 .

## What's Changed
* Fix responses and parsing for milestone related requests. by @avalkov in https://github.com/0xPolygon/bor/pull/1399
* HV2 - checkpoint, milestone: fix response by @pratikspatil024 in https://github.com/0xPolygon/bor/pull/1408
* Fix minimal val assignment by @avalkov in https://github.com/0xPolygon/bor/pull/1414
* Fix state sync fetch by @Raneet10 in https://github.com/0xPolygon/bor/pull/1443
* Remove milestone no-ack fetching by @avalkov in https://github.com/0xPolygon/bor/pull/1470
* Heimdallv2 fast consensus by @marcello33 in https://github.com/0xPolygon/bor/pull/1480
* Add optional HeimdallWSAddress configuration and refactor handler_bor methods by @lucca30 in https://github.com/0xPolygon/bor/pull/1481
* empty ws addree by default by @lucca30 in https://github.com/0xPolygon/bor/pull/1486
* Bor nil check on ws subscription by @lucca30 in https://github.com/0xPolygon/bor/pull/1491
* fix nil pointer dereference on DoCall by @marcello33 in https://github.com/0xPolygon/bor/pull/1505
* heimdallgrpc: bor-hv2 gRPC updates by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1500
* test(bor-hv2): fix Bor-HV2 tests by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1510
* Add witnesses to downloader by @cffls in https://github.com/0xPolygon/bor/pull/1518
* Stateless execution by @lucca30 in https://github.com/0xPolygon/bor/pull/1519
* Add witness to block fetcher by @cffls in https://github.com/0xPolygon/bor/pull/1521
* Fix Span Committing on Stateless Client by @lucca30 in https://github.com/0xPolygon/bor/pull/1524
* Sync block with witness in full sync by @cffls in https://github.com/0xPolygon/bor/pull/1533
* FastForward blocks on StatelessSync mode by @lucca30 in https://github.com/0xPolygon/bor/pull/1537
* Merge from develop to stateless_sync by @cffls in https://github.com/0xPolygon/bor/pull/1554
* Witness Prefetching on Block Production by @lucca30 in https://github.com/0xPolygon/bor/pull/1553
* Disable tx pool for stateless client by @lucca30 in https://github.com/0xPolygon/bor/pull/1556
* Fix ancient pruning check on stateless start by @lucca30 in https://github.com/0xPolygon/bor/pull/1560
* VeBlop span rotation by @cffls in https://github.com/0xPolygon/bor/pull/1567
* Auto rewind blocks when their span rotates by @cffls in https://github.com/0xPolygon/bor/pull/1573
* Merge from develop by @cffls in https://github.com/0xPolygon/bor/pull/1576
* chore(stateless): add flag to enable witness creation while syncing by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1583
* fix(downloader): prevent duplicate WriteTd calls in fast-forward sync by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1586
* Add mutex to block_fetcher to prevent concurrent map access by @cffls in https://github.com/0xPolygon/bor/pull/1584
* fix double witness insertion by @lucca30 in https://github.com/0xPolygon/bor/pull/1596
* Improve stateless sync by @cffls in https://github.com/0xPolygon/bor/pull/1604
* set header before write to database by @lucca30 in https://github.com/0xPolygon/bor/pull/1605
* feat(ci): add e2e tests using kurtosis by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1606
* Stateless sync bytecode cache by @cffls in https://github.com/0xPolygon/bor/pull/1621
* Add all states read during finalization in witness by @cffls in https://github.com/0xPolygon/bor/pull/1642
* Add stateless node to e2e test by @cffls in https://github.com/0xPolygon/bor/pull/1647
* Change veblop HF to span start block in test by @cffls in https://github.com/0xPolygon/bor/pull/1649
* Witness Pagination by @lucca30 in https://github.com/0xPolygon/bor/pull/1620
* feat: witness validation by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1646
* core: witness compression by @pratikspatil024 in https://github.com/0xPolygon/bor/pull/1652
* Stateless sync merge develop by @cffls in https://github.com/0xPolygon/bor/pull/1660
* chore(stateless): go mod tidy and minor chores by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1663
* Fix "Prefetcher missed to load trie" by @lucca30 in https://github.com/0xPolygon/bor/pull/1664
* Fix lint issues by @lucca30 in https://github.com/0xPolygon/bor/pull/1666
* Stateless sync code cache fix by @cffls in https://github.com/0xPolygon/bor/pull/1665
* Stateless sync fix wit download by @cffls in https://github.com/0xPolygon/bor/pull/1681
* Stateless sync network chaos tests by @cffls in https://github.com/0xPolygon/bor/pull/1685
* miner: Veblop rotation timer by @cffls in https://github.com/0xPolygon/bor/pull/1700
* Revert "core: witness compression (#1652)" by @pratikspatil024 in https://github.com/0xPolygon/bor/pull/1705
* chore: merge develop and migrate stateless-e2e tests to pos-workflows by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1712
* chore: make function comments match function names by @stellrust in https://github.com/0xPolygon/bor/pull/1650
* eth/protocols: add nil check for tx before calling GetOptions by @yysung1123 in https://github.com/0xPolygon/bor/pull/1656
* chore: make function comments match function names by @jishudashu in https://github.com/0xPolygon/bor/pull/1658
* Fix integration tests in stateless_sync by @pratikspatil024 in https://github.com/0xPolygon/bor/pull/1708
* Improving fail handling from reorgs by @lucca30 in https://github.com/0xPolygon/bor/pull/1677
* fix: dbcmd by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1714
* backport v2.2.10 to develop by @pratikspatil024 in https://github.com/0xPolygon/bor/pull/1718
* Stateless sync merge develop by @cffls in https://github.com/0xPolygon/bor/pull/1720
* Stateless sync by @cffls in https://github.com/0xPolygon/bor/pull/1719
* ci: post merge chores by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1722
* sec fixes by @marcello33 in https://github.com/0xPolygon/bor/pull/1723
* Remove explicit wait for span rotation by @cffls in https://github.com/0xPolygon/bor/pull/1724
* eth/peer(wit): fix nil pointer dereferences in RequestWitnesses by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1738
* Rename VEBloP HF to Rio by @cffls in https://github.com/0xPolygon/bor/pull/1739
* fix(eth/peer/wit): concurrent data read/write cases by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1742
* core: catch panic in block-stm processing by @manav2401 in https://github.com/0xPolygon/bor/pull/1713
* Customizable coinbase address by @cffls in https://github.com/0xPolygon/bor/pull/1743
* fix: blockchain, span_store, finality data races by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1748
* Ensure validator bytes are correctly verified prior Rio by @cffls in https://github.com/0xPolygon/bor/pull/1749
* chore: bump kurtosis-pos by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1760
* fix(wm): read pendingCount under mutex protection by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1762
* feat: witness rpc endpoints by @kamuikatsurgi in https://github.com/0xPolygon/bor/pull/1746
* consensus: add TestPerformSpanCheck,TestGetVeBlopSnapshot and TestSnapshot by @Raneet10 in https://github.com/0xPolygon/bor/pull/1765
* Remove minimum gas enforcement while creating Accesslist by @lucca30 in https://github.com/0xPolygon/bor/pull/1773
* Backport master to develop by @cffls in https://github.com/0xPolygon/bor/pull/1774
* [bugfix] Update heimdall status correctly by @cffls in https://github.com/0xPolygon/bor/pull/1775
* develop to v2.3.0-candidate after v2.2.11 by @pratikspatil024 in https://github.com/0xPolygon/bor/pull/1777
* Move fields to the right place by @cffls in https://github.com/0xPolygon/bor/pull/1779
* Merge V2.3.0 candidate by @cffls in https://github.com/0xPolygon/bor/pull/1787
* Update Rio HF block number by @cffls in https://github.com/0xPolygon/bor/pull/1788

## New Contributors
* @stellrust made their first contribution in https://github.com/0xPolygon/bor/pull/1650
* @yysung1123 made their first contribution in https://github.com/0xPolygon/bor/pull/1656
* @jishudashu made their first contribution in https://github.com/0xPolygon/bor/pull/1658

**Full Changelog**: https://github.com/0xPolygon/bor/compare/v2.2.11...v2.3.0

Links

Back to 0xPolygon/bor releases