Our node supports multiple modes of syncing, with warp sync being one of them. While it has been implemented for solo chains running Grandpa as well as for parachains, the current implementation of warp sync has some limitations.
As it stands, warp sync only supports syncing from genesis. This implies that any pre-synced database can't be leveraged to warp sync to the chain's tip. Moreover, when using an empty database, the system always defaults to warp sync from genesis.
To augment the efficiency of warp sync, it would be beneficial to have a recent "sync state" stored in the chain spec. This feature would expedite the warp syncing process without influencing the actual state syncing.
Our ultimate aim is to make warp sync the primary sync mode for nodes, leaving normal sync to be activated only when a node is to be synced as an archive node.
Plan
To achieve these enhancements, we need to address several key issues and make some critical improvements:
To enable syncing from non-genesis and to support warp syncing from a predefined state, we need to address the following issues:
Vision
Our node supports multiple modes of syncing, with warp sync being one of them. While it has been implemented for solo chains running Grandpa as well as for parachains, the current implementation of warp sync has some limitations.
As it stands, warp sync only supports syncing from genesis. This implies that any pre-synced database can't be leveraged to warp sync to the chain's tip. Moreover, when using an empty database, the system always defaults to warp sync from genesis.
To augment the efficiency of warp sync, it would be beneficial to have a recent "sync state" stored in the chain spec. This feature would expedite the warp syncing process without influencing the actual state syncing.
Our ultimate aim is to make warp sync the primary sync mode for nodes, leaving normal sync to be activated only when a node is to be synced as an archive node.
Plan
To achieve these enhancements, we need to address several key issues and make some critical improvements:
To enable syncing from non-genesis and to support warp syncing from a predefined state, we need to address the following issues:
We need to investigate known issues such as:
To improve the user experience, we should consider storing the state sync state as proposed in:
It's critical that we extend our testing to ensure the robustness and reliability of the warp sync mode.
Finally, to make warp sync the default sync mode, we need to address:
By focusing on these areas, we can significantly enhance our warp syncing support and user experience.