rusk
rusk copied to clipboard
Add Hyperfast Sync-up
Summary
As part of our Economic Model, we aim to implement Hyperfast Sync-ups. This will enable nodes and wallets to synchronize with the blockchain in a fraction of the time it normally would. Clients would no longer need to sync-up every block from the genesis block up to the current block.
The advancements in state management through Crumbles have made it possible to do Proof of Memory Page Inclusion, now the Node needs to expose logic to provide clients with the memory pages, handle verification and sync up from the checkpoint it started the hyperfast sync-up.
Possible solution design or implementation
The core functionality, memory snapshots and proof of memory page inclusion, which facilitates the creation of checkpoints, is implemented within Piecrust. The node needs to tie into this functionality, and be able to handle both hyperfast sync-ups for itself, but also to efficiently transfer memory pages to other clients. Additionally, clients should be able to verify memory pages as part of the block hash for a given checkpoint.
Additional context
It is important to note that in-between the time of hyperfast syncing, and verification being complete, the chain might've advanced. From this checkpoint on, the client will have to sync the diff between the snapshot and the current tip of the chain.
See also #1094 and #970
This is something for archival nodes to offer. Not strictly needed for Mainnet nor part of the protocol
This is something for archival nodes to offer. Not strictly needed for Mainnet nor part of the protocol
See also https://github.com/dusk-network/rusk/pull/1513#issuecomment-2072269222