Bor Mumbai Update: v0.2.13-beta2

This release contains RLP encoding of an additional field, baseFee in the block header. Geth had added this in the Clique consensus changes for EIP1559 but we had missed to add this in bor. A shoutout to Nebojsa Urosevic from Tenderly Team for reporting this. The impact is mainly on downstream applications as the client libs might have a problem with the coinbase value.

Since there is a change in the block seal hash, this requires a hard fork at the Jaipur Block at block 22,770,000 that will be reached around 3PM IST on 17th Dec 2021 https://mumbai.polygonscan.com/block/countdown/22770000

You will have to upgrade bor on Mumbai Testnet nodes, download and init the latest genesis before this time.

Please note that this is applicable only for Mumbai Testnet. Please do not upgrade bor on mainnet, it remains at v0.2.12 for mainnet.

Steps for Upgrading Bor on Mumbai Testnet Nodes

  1. Stop the bor service
sudo service bor stop
  1. Navigate to bor directory
cd ~/bor
  1. Fetch the latest changes and use Bor v0.2.13-beta2:
git fetch
git checkout v0.2.13-beta2
  1. Build latest changes
make bor-all
  1. Download the latest genesis file. We are activating the fork and burn contract address through the updated genesis.
curl https://raw.githubusercontent.com/maticnetwork/launch/c2b7ab4df1f11b2f06a2ad027ffe4a1c8ed09e5f/testnet-v4/sentry/validator/bor/genesis.json --output ~/genesis.json
  1. Init bor with genesis file
bor --datadir ~/.bor/data init ~/genesis.json

If you are using a non-default datadir, please ensure you input the correct one you have been using.

  1. You should see the output as follows:
...
...
INFO [12-10|19:57:02.531] Successfully wrote genesis state         database=chaindata                            hash=...
...
INFO [12-10|19:57:02.556] Successfully wrote genesis state         database=lightchaindata                       hash=...
...
...
  1. Start the bor service
sudo service bor start

Additional Details

In London Fork, with the inclusion of EIP1559, every block has an associated baseFee. There is a method called CliqueRLP in consensus which returns the rlp bytes which needs to be signed for the sealing. The RLP to sign consists of the entire header apart from the 65 byte signature contained at the end of the extra data. Post London Fork, it should also consist of baseFee that was included in clique but that was missed out in bor consensus and has been added in this release.

Other Links

Docker Image: https://hub.docker.com/layers/maticnetwork/bor/v0.2.13-beta2/images/sha256-9bc536beac417b6f952df57a90603f7cce0e64f2f115e7aa821008085590d41a?context=explore

Github Release: https://github.com/maticnetwork/bor/releases/tag/v0.2.13-beta2

1 Like

Official instructions include GO 1.17 setup but when you compile with this guide, you can’t upgrade because it wants an older version:

compile: version "go1.17" does not match go tool version "go1.15.2"
Makefile:26: recipe for target 'bor-all' failed
make: *** [bor-all] Error 2