Skip to content

Latest commit

 

History

History
93 lines (59 loc) · 3.68 KB

5_0_8.md

File metadata and controls

93 lines (59 loc) · 3.68 KB

5.0.8

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.

TL;DR

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>


Summary

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.

Changes

Move Changes

None

Rust Changes
- Changes to default settings for nodes, and tools to generate files.

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

Tests
  • 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.
Compatibility

The Move framework changes are backwards compatible with diem-node from v5.0.1

Rust changes

Diem Node

Changes to diem-node is compatible with on-chain state from v5.0.5.