After a successful rollout of Milestones feature with Aalborg Hardfork on Mumbai Testnet, new versions of Bor
v1.0.4 and Heimdall
v1.0.1 have been released for Mainnet.
This includes Aalborg hardfork on Mainnet Heimdall which is scheduled for Heimdall block number 15,950,759. Since the block time in Heimdall depends on various factors, based on the current average block time, the hardfork might occur around October 11th, 2023. However, it is recommended to have all nodes upgraded before October 9th, 2023. With this hardfork, the “Milestones” feature will be activated which offers faster deterministic finality.
For more information please refer PIP-11: Deterministic finality via Milestones
Updates as on 9th Oct 2023:
- Based on the current Heimdall block height and average block time, the hardfork block (#15,950,759) might be mined on October 13th: One-stop validator portal — Validator.Info
- New versions of Bor, Heimdall and Erigon (containing bug fixes) have been released. Please refer the following forum posts:
Note 1: Instructions to upgrade Bor and Heimdall are given below. If you are using Erigon instead of Bor client, Milestones feature is available after
v2.50.0 (Release v2.50.0 Milestones · ledgerwatch/erigon · GitHub). There are few known issues in Erigon which are being fixed currently and you can expect more patch versions in the coming days.
Note 2: Please upgrade Bor to
v1.0.4 before upgrading Heimdall to
v1.0.1 on all nodes (validator, sentry/full nodes and archive nodes).
Stop bor service
sudo service bor stop
Install Bor with a version tag, network name (mainnet), and node type (sentry, validator, or archive).
# Replace the node type curl -L https://raw.githubusercontent.com/maticnetwork/install/main/bor.sh | bash -s -- v1.0.4 mainnet <node_type>
Check bor version
/usr/bin/bor version # It should print # 1.0.4
Restart bor service
sudo service bor start
Once you upgrade your nodes, expect to see a few error/warning logs until the hard fork kicks in on heimdall network (at block #15,950,759). Below are some common errors which might be visible in bor. Note that these errors are from a background process and will not affect the general operations of node like syncing, rpc calls, etc.
Retrying to fetch milestone. Bor queries heimdall in a background process to fetch the latest milestones but will fail to do so until the hard fork.
INFO [09-20|03:17:25.102] Retrying again in 5 seconds to fetch data from Heimdall path=/milestone/latest attempt=1
Error while trying to fetch milestone from heimdall. As heimdall isn’t producing milestones (until HF), the API call to fetch milestone will respond with a 404. If heimdall is not upgraded, it will return status code 500 as no such endpoint is registered.
WARN [09-20|03:17:25.102] an error while trying fetching from Heimdall attempt=1 error="error while fetching data from Heimdall: response code 404"
With no milestone in heimdall, bor will fail to whitelist them with the below log.
ERROR [09-21|08:11:22.744] Failed to fetch latest milestone for whitelisting err="context deadline exceeded"
As milestone behaves similar to checkpoint, it also has a concept of acknowledgment. Bor also tries to fetch the
no-ackmessages from heimdall for some operations but will also fail to do so until HF. Errors similar to the above error will be visible for no-ack-milestone as well.
Before proceeding, please create a backup of your heimdall config file whose default location is:
/var/lib/heimdall/config/config.toml. This might differ if you have setup heimdall at a different location.
Stop heimdalld service
sudo service heimdalld stop
Install Heimdall with a version tag, network name (mainnet), and node type (sentry or validator).
# Replace the network and node type curl -L https://raw.githubusercontent.com/maticnetwork/install/main/heimdall.sh | bash -s -- v1.0.1 mainnet <node_type>
Check heimdall version
/usr/bin/heimdalld version # It should print # 1.0.1
Ensure that heimdalld service file contains the
—-chain=mainnetflag. The heimdalld service file is available at
You can use the following as reference:
Restart heimdall service
sudo service heimdalld start
Restart the telemetry services
sudo service telemetry restart
You can find the latest docker images here:
Compared to version
v0.5.0, the following features and improvements have been implemented. Checkout the v1.0.4 tag on GitHub for more information.
big.Int#SetByteswhen possible by @maoueh in #896
- Fixed MVHashMap being enabled even when paralellUniverse is set to 0 by @pratikspatil024 in #900
- dev: chg: pos-1465: remove snyk and sonarqube by @marcello33 in #908
- Master to develop (after v0.4.0) by @pratikspatil024 in #921
- core,eth,miner: fix initial test cases by @Raneet10 in #922
- core,eth: fix TestDeduplication, TestSyncAccountPerformance, TestTrac… by @Raneet10 in #924
- Fix worker
nilpointer exception because of
baseFee == nilby @maoueh in #899
- Move NumSpeculativeProcs from module variable to function parameter by @cffls in #931
- Calculate tx dependency only when mining is enabled by @cffls in #935
- mardizzone/POS-1605: go and deps upgrade by @marcello33 in #929
- rpc: add execution pool metrics by @manav2401 in #919
- Moved TxDependency Metadata to ExtraData in Block Header by @pratikspatil024 in #930
- fix : runtime testcases by @0xsharma in #910
- fix typos by @criadoperez in #927
- Update discord link in README.md by @anshalshukla in #938
- Upstream merge from go-ethereum/v1.11.6 by @marcello33 in #901
- Revert “Upstream merge from go-ethereum/v1.11.6” by @0xsharma in #948
- Upstream merge from go-ethereum/v1.11.6 by @0xsharma in #949
- Fixes for bootnode by @djpolygon in #950
- graphql: dev: chg: avoid greedy allocation on graphql blocks call by @marcello33 in #958
- exempt draft PRs by @temaniarpit27 in #962
- metrics/prometheus: fix count field of metric by @manav2401 in #965
- Disable shuffling in unit test by @cffls in #954
- fix: Improve RETESTBOR.md document formatting by @ForwardSlashBack in #960
- internal/cli: add db.engine flag by @anshalshukla in #964
- ethclient: use
bor_getRootHashinstead of eth namespace by @manav2401 in #967
- add : statesync execution verbosity by @0xsharma in #947
- internal/cli: fix
db.enginekey naming for config files by @manav2401 in #969
- Adding fix for postrm removing the config.toml and service file by @djpolygon in #951
- log cleanup by @manav2401 in #970
- all: implement milestones by @temaniarpit27 in #961
- fix : eth_getLogs by @0xsharma in #975
- Arpit/merge latest branch by @temaniarpit27 in #978
- EOL 18.04 Support by @djpolygon in #980
- build(deps): bump GitHub - moby/moby: Moby Project - a collaborative project for the container ecosystem to assemble container-based systems from 1.6.2 to v24.0.5+incompatible by @dependabot in #963
- miner/worker :: add : start commit work only after connecting to peers by @0xsharma in #977
- .github/workflows: run more parallel CI jobs by @manav2401 in #976
- CI: Increase smoke test timeout by @Raneet10 in #987
- Merge v0.5.0 into master by @0xsharma in #982
- Revert “Merge v0.5.0 into master” by @0xsharma in #995
- Merge v0.5.0 into master by @0xsharma in #996
- Update mainnet bootnodes by @cffls in #997
- Add CLI flags to config LevelDB table/total sizes by @rroblak in #981
- V1.0.0 beta candidate by @VAIBHAVJINDAL3012 in #998
- Added a new RPC endpoint (
bor_sendRawTransactionConditional) to support EIP-4337 Bundled Transactions by @pratikspatil024 in #945
- Fixed Panic - Added RLock on pool.pendingMu in validateTxBasics() by @pratikspatil024 in #1001
- Use borLogs instead of default by @0xKrishna in #1000
- Simplify readme by @manav2401 in #979
- Enable prometheus in bootnode by @cffls in #1004
- Stop execution pool in rpc handler by @cffls in #1005
- Fix panic - added mutex to trie.tracer by @pratikspatil024 in #1007
- develop to candidate by @pratikspatil024 in #1009
- 1.0.2 beta candidate to master by @pratikspatil024 in #1010
Compared to version
v0.3.5, the following features and improvements have been implemented. Checkout the v1.0.1 tag on GitHub for more information.
- gov,types: fix tests by @Raneet10 in #1000
- exempt draft PRs by @temaniarpit27 in #1034
- Typos on go files by @criadoperez in #1032
- Improvements on Makefile by @criadoperez in #1033
- Vaibhav/milestone iteration1 by @VAIBHAVJINDAL3012 in #1038
- Fix:Stop the rotation of validatorSet at any update in it. by @VAIBHAVJINDAL3012 in #983
- Vaibhav/milestone by @VAIBHAVJINDAL3012 in #939
- BB13203 Issue by @VAIBHAVJINDAL3012 in #984
- Combine multiple hardforks into one by @VAIBHAVJINDAL3012 in #1039
- checkpoint: Fix checkpoint ack condition by @Raneet10 in #1043
- version change by @temaniarpit27 in #1046
- Fix:Milestone hardfork fixes by @VAIBHAVJINDAL3012 in #1045
- Arpit/version change by @temaniarpit27 in #1047
- auth: update error type when milestone tx arrives before HF by @VAIBHAVJINDAL3012 in #1049
- EOL 18.04 Support by @djpolygon in #1048
- Text corrections on go files by @criadoperez in #1042
- CI: increase smoke test timeout by @Raneet10 in #1052
- Krishna/add graph to self heal by @0xKrishna in #1037
- staking: update log level by @anshalshukla in #1041
- helper: use finalized for receipt calculation by @manav2401 in #1058
- helper:add timeout to getBlockByNumber by @anshalshukla in #1059
- Merge develop to v1.0.0-beta-candidate by @VAIBHAVJINDAL3012 in #1060
- Merge v1.0.0-beta-candidate to master by @VAIBHAVJINDAL3012 in #1062