Symbol Launch - Few Learnings & Bootstrap releases


Well, its been 1 week since launch already! It has passed in a blur and things are settling down well, there are still some teething issues (particularly fees) but for the headline numbers in one week (at the time of writing):

  • 1139 nodes (of which only 100 are NGL ones, 70 voting, 30 just harvesting)
  • 360k+ transactions
  • 22,000+ blocks
  • 22,000+ blocks finalised!

Regardless of various setting in issues which are being worked through, that is a pretty good start all round - the network is stable, the performance is good and the node ownership decentralised fairly quickly.

There are a few settings that we (NGL) got wrong, which I want to cover today so the community can learn from them, we have fixed them on our nodes and in the Bootstrap defaults but community node owners would be well advised to check them, they are all available in config files and customPresets, below are our settings, they are explained a bit more below:

Setting Original Default Updated NGL Settings
minFeeMultiplier 100 between 20 and 90
transactionSelectionStrategy Maximize 10% Minimize, 10% Maximize, 80% Oldest
unfinalizedBlockDuration 0m 0m for Voting BUT 5m or 10m for non-voting nodes
beneficiaryAddress Empty Empty - but you may want to change

Some of these were included in : Symbol Network - High Fees and other config issues

A brief explainer for each one:

  • minFeeMultiplier: the default dynamic multiplier is 100, but nodes are free to accept any minimum they wish, NGL have lowered ours to ensure cheaper transactions are still processed and try to help bring fees down, we recommend community nodes consider the same while the network stabilises

  • transactionSelectionStrategy: all nodes were intially set to Maximize which means the fees spiked, NGL nodes have now be set mostly to Oldest, we recommend community nodes do the same for the coming weeks so that fees drop

  • unfinalizedBlockDuration: Needs a different setting for Voting and Non-Voting nodes, almost all nodes are currently non-voting (there are 70-80 non-NGL nodes currently voting). Setting it to 5m or 10m will mean your node is aware of finality status quicker than 1 epoch (every 12 hours) which helps the network with finality state propagation/visibility.

  • beneficiaryAddress: Setting this to your main-account Address wil send you 25% of the fees earned by all harvesters delegating to your node.

Bootstrap Releases 1.0.1 and 1.0.2 - Please Upgrade

The Bootstrap releases below fix various issues and in addition set more sensible defaults for the settings above.

Latest release: Release [1.0.2] - Mar-24-2021 · nemtech/symbol-bootstrap · GitHub

How to Upgrade your Node

Before upgrading, it’s recommended to backup your node’s target folder

Install the latest bootstrap:

npm install -g symbol-bootstrap

Custom Preset

Take note of the release notes for new settings, consider including:

  • minFeeMultiplier
  • transactionSelectionStrategy
  • beneficiaryAddress
  • nonVotingUnfinalizedBlocksDuration

Peer Node Only

If you are running a Peer only node, run:

symbol-bootstrap start -p mainnet -a peer --upgrade (-c myCustomPreset.yml)

The --upgrade option will recreate your server configuration, docker configuration, and upgrade the format of addresses.yml without dropping the existing data or generates keys.

Dual Node or API Node

If you are running an API or a Dual node, run:

symbol-bootstrap start -p mainnet -a api --upgrade (-c myCustomPreset.yml)

symbol-bootstrap start -p mainnet -a dual --upgrade (-c myCustomPreset.yml)

If you wish to reset to a new/clean testnet node, --reset instead of ‘–upgrade’ will clear up all your data and keys. The keys will be regenerated if you are not providing them with a custom preset, note that you will need to relink the voting key as well if you use reset, it is ephemeral so not stored.

It’s worth double-checking that your docker services are running. Validate the services logs and check that your node’s keys and accounts are valid.

For new nodes, you can also follow: Running a Symbol Testnet Node

Release Notes

[1.0.2] - Mar-24-2021

Milestone: Mainnet(

Package Version Link
Symbol Bootstrap v1.0.2 symbol-bootstrap
  • Fixed link (–unlink) command when voting properties changes.
  • Broker ports (7902) are closed by default in compose.
  • Peer role is selected based on syncsource configuration and not on the harvesting flag.

[1.0.1] - Mar-22-2021

Milestone: Mainnet(

Package Version Link
Symbol Bootstrap v1.0.1 symbol-bootstrap
  • Random and limited peer/api list.
  • Custom votingUnfinalizedBlocksDuration and nonVotingUnfinalizedBlocksDuration preset properties.
  • Agent service is disabled until supernode program resumes.
  • The default beneficiaryAddress is the node’s main address. Use beneficiaryAddress: '' in a custom preset to override the new default.

According to the documentation ( Configuring node properties — Symbol Documentation ) this should be minFeeMultiplier.

Which one is wrong?

my copy and paste, I’ll fix post