Intro to Snapsync

What is snapsync?

Snapsync synchronization mode allows to securely download recent finalized EVM state without processing prior transactions. Once snapsync is finalized, node switches to the default fullsync mode. Snapsync protocol outline
Snapsync protocol downloads the EVM state in two stages:
  1. 1.
    Downloads continuous batches of EVM items, provided with Merkle paths for instant verification. Note: single Merkle path for a continues batch of items is much cheaper than multiple Merkle paths for each individual item - this way, it's roughly as fast as a simple file download.
  2. 2.
    Continuously requests missing or outdated items until the state is fully healed.
Snapsync is introduced in go-opera release/1.1.0-rc.4. For more info, please check this link.

What are included in this release?

This release will trigger the London upgrade EIP-1559 and then snapsync upgrade will be activated. All London changes in EIP-1559 are included except automatic baseFee/minGasPrice adjustment and baseFee burning. Instead, the burning 30% of transaction fees are unchanged. With snapsync, people can generate and validate genesis files. Node operators can generate custom genesis files from their own nodes and then validate the generated hashes with the hashes generated by other nodes.

When was it activated?

The activation was triggered at block 37534762.

What should node operators do?

Nodes should use this latest release to join the network.
  • Read nodes: you can use v1.1.1-rc.1 or v1.1.0-rc.4
  • API nodes: v1.1.1-rc.1 is recommended
  • Validator nodes: v1.1.0-rc.4 is still recommended. v1.1.1-rc.1 is not yet recommended.
For latest update, please check the following github repository: https://github.com/Fantom-foundation/lachesis_launch

How can I use snapsync?

To use snapsync mode, you can use go-opera v1.1.1-rc.1 for your new read node. The go-opera v1.1.1-rc.1 is highly recommended for API nodes. The go-opera v1.1.1-rc.1 is not recommended for validator nodes yet. Check the list of Genesis files and find the files with Snapsync = 'Yes'.
Note that, if you're running a 1.1.0-rc.X, after the upgrade to 1.1.0-rc.1, it won't be possible to use the old genesis files (mainnet.g and testnet.g). Instead, you can omit --genesis flag and you don't need to download a new genesis file (as the file is no longer mandatory for already initialized nodes).
Processing time and duration to sync to the latest block are shown in the below table. These values are indicative only, which are obtained from a run on test servers using m5.xlarge (AWS) and a bare metal.
Name
Mode
Processing
Snap gen
Duration
Processing (2)
Snap gen (2)
mainnet-109331-no-history.g
snap
instant
1:44:56
1:50:23
0:00:00
0:00:00
mainnet-109331-no-mpt.g
snap
17:28:54
2:37:13
20:41:43
8:22:07
0:00:00
mainnet-109331-pruned-mpt.g
snap
17:15:21
21:55:30
55:17:19
8:31:07
4:33:05
mainnet-109331-full-mpt.g
snap
32:42:46
5:18:41
38:16:07
36:35:33
8:18:39
mainnet-5577-pruned-mpt.g
full
0:10:45
0:00:36
x
0:05:32
0:00:43
mainnet-5577-full-mpt.g
full
0:16:46
0:14:32
x
0:12:46
0:03:06
mainnet-109331-pruned-mpt.g
full
14:07:48
23:37:36
65:33:43
8:35:33
4:33:00
mainnet-109331-full-mpt.g
full
50:52:40
14:30:59
91:32:19
35:49:14
80:20:36

What if your node is still in 1.0.2?

Nodes that were not upgraded before the activation was done (e.g., they are still running version 1.0.2) can no longer join the network. You will need to upgrade to the latest release go-opera release/1.1.0-rc.4 and it will need a fresh resync.
Alternatively, you can use v1.1.1-rc.1 and download one of new genesis files.