We have released a new version of Bor and Heimdall - v0.3.0 with an incremented minor version. As explained in the previous post, we have added a new CLI in Bor and have also changed the way Bor and Heimdall are deployed to follow DevOps best practices and make it easier to manage the processes. This upgrade is backwards incompatible. Please ensure that all Mumbai nodes are upgraded soon, before the release of the next version v0.3.1 that will contain a hardfork which is scheduled to kick in on 7th Dec 2022 (tentative).
Important Note: For our next releases, v0.3.1 and onward, upgrading to version 0.3.0 is necessary.
Changes from deployment perspective
- Provide a new approach to install bor binary with a shell script.
- Recommended default bor home is changed from
~/.bor
to/var/lib/bor
. bor/start.sh
will be retired. We recommend moving flags fromstart.sh
to/var/lib/bor/config.toml
, which will be the single config file for all bor configurations. Example config toml files could be found here.- A new user named
bor
will be created during package installation if it doesn’t exist. This user will be running bor service. - Move
bor.service
file from/etc/systemd/system
to/lib/systemd/system
- CLI flag changes. For validators who wants to continue setting bor configs through CLI, see appendix for detailed changes.
- Bor profiles can be used with new hosts only, please note existing installations will not be able to take advantages of the profiles.
- Bor packaging installation is now simplified to
sudo dpkg -i bor-$version-$arch.deb
- Bor profile installation for new hosts is accomplished by running
sudo dpkg -i bor-$network-$nodetype-config_$version-$arch.deb
Detailed changelog
- In v0.2.x,
bor
andbootnode
are two separate binaries. In v0.3.0,bootnode
will become a subcommand ofbor
. bor init
is removed in v0.3.0. Instead, on starting,bor
will automatically initialize a bor home directory if not found.bor
’s default behavior (running bor client) is moved tobor server
as a subcommand.GRPC
: On starting bor using theserver
subcommand, it will start a GRPC server on a separate port which will be used for cli related communication. Here, the user using the cli, acts as a client and interacts with the node using GRPC. It is used for operations like adding and removing peers, getting status of node (sync status, forks, chain head, etc), getting debug and pprof traces, etc.- Validator must provide its public address to flag
--miner.etherbase
in order to mint blocks. - The format of toml passed to
--config
is changed. Notice that, in v0.2.x, only P2P related info like static or trusted nodes were mentioned in the toml file. With v0.3.x, you can pass the whole cli config using this flag. For more details and examples, see this. --networkid
is replaced by--chain
, whose value is eithermainnet
ormumbai
. The flag also accepts the path to a custom genesis file, e.g.--chain path/to/custom_genesis.json
.--verbosity
is replaced by--log-level
and instead of numeric values, string denoting the type of log should be passed.--whitelist
is now changed to--requiredblocks
- pprof options are merged to a new component,
grpc
. e.g.--pprof.addr 0.0.0.0
and--pprof.port 1234
should be passed as one argument to flag--grpc.addr 0.0.0.0:1234
. If not set, default value will be0.0.0.0:3131
. --metrics.addr
and--metrics.port
are merged to--metrics.prometheus-addr
. e.g.--metrics.addr 0.0.0.0
and--metics.port 1234
should be passed as one argument to flag--metrics.prometheus-addr 0.0.0.0:1234
. Notice that, in v0.2.x,--metrics.addr
and--metrics.port
, if not explicitly set, the metrics will be exported onpprof.addr:pprof.port
. If no flag is provided, the prometheus endpoint is registered on a default host and port.- A new flag named
disable-bor-wallet
is introduced which disables the personal wallet endpoints in the node. This prevents misuse of the endpoints if exposed. It will only register and use the key-store for mining blocks (if mining is enabled through--unlock
and--miner.etherbase
). It’s set totrue
by default. - borTraceEnabled added in TraceConfig. When set true, it will return state-sync traces for a block if present. Usage :
debug.traceBlockByNumber("0x20FE900",{"borTraceEnabled": true})
- The
miner.gaslimit
value has been updated for mumbai nodes from 20M to 30M.
Full Changelog: v0.2.17...v0.3.0-beta