This upgrade changes the network topology. Validator nodes will no longer serve on public fullnode network by default. In parallel to this upgrade, validators are expected to be running a separate host which will serve as the gateway from public fullnode networks to the validator. This intermediary node is valled a Validator Fullnode.
To that end v5.0.8 provides tools to create config files, and a small change to diem-node
to accept a minor change to node.yaml structure.
Update binaries to use patches.
# install new binaries
cd ~/libra
git fetch
git checkout v5.0.8 -f
make bins install
Recreate network configs
# backup validator config
mv ~/.0L/validator.node.yaml ~/.0L/validator.node.yaml.bak_20220104
# create the new validator yaml. This will overwrite previous.
ol init --val
# create settings for the VFN, private fullnode
ol init --vfn
# next, copy the ~/.0L/vfn.node.yaml to the host machine of the fullnode.
<stop diem-node if running>
<start diem-node with validator.node.yaml on validator, and vfn.node.yml on fullnode>
The goal of this upgrade is to get all validators on the same node configurations so that mempool, connection attempts, and fullnode network configurations optimize for the network maintaining a full mesh.
The changes are primarily to tooling which generate keys and configurations for the private fullnode used by validators (VFN).
These changes do not affect Move code (no changes to system state or policies). It only upgrades diem-node
. There is a minor change to diem-node so that it can use the NodeConfig object which now contains the version number which generated the file.
None
Many (breaking) changes to ol cli - init
.
It can now:
- generate the inital 0L.toml with --app.
- create the initial
key_store.json
with --key-store. - generate a number of node.yaml files: --val, --vfn, --fullnode.
- --seed-peers will fetch the validator fullnodes from chain, and save to file.
- --update-waypoint will fetch from chain to replace base_waypoint in 0L.toml file.
Deprecated:
--checkup
and--fix
are no longer implemented given breaking changes. Perhaps TBD.
Changes to config/management/genesis/ol_node_files.rs
so that the val, vfn, and fullnode configs can be atomically generated. And refactors throughout to use correct keys and settings. Also ability for node files to include a seed_peers.yaml
(which can be fetched with ol init
from chain) to configure files.
Minor change to onboard kegen
so that --whoami
will print the different public keys the node depends on.
Global constants are updates, so that there are consistent ports used for fullnode and vfn.
config/management/genesis/seeds
has changes so that seed peers can be read from file.
Changes to defaults:
mempool: capacity_per_user
a user can only have 3 txs in the mempool at a given time.
network configs: PING_FAILURES_TOLERATED increased to 10K, MAX_FULLNODE_OUTBOUND_CONNECTIONS incresed from 10 to 100. Hypothetically fixing the "split brain" issues in the December outage.
state-sync: increase the tick_interval_ms
from 100ms to 1sec.
Patches a bug with ol
subcommands panicking due to bad unwraps: #903
- All continuous integration tests passed.
- The diem-code was tested on a "Canary rollout" to three production nodes that were both synced and out of sync.
The Move framework changes are backwards compatible with diem-node
from v5.0.1
Changes to diem-node
is compatible with on-chain state from v5.0.5
.