lbryio / lbcd

An alternative full node implementation of LBRY's blockchain written in Go (golang)
https://lbry.com/
ISC License
38 stars 25 forks source link

Support starting `lbcd` with snapshot #66

Open roylee17 opened 2 years ago

roylee17 commented 2 years ago

To help new nodes catch up faster without syncing blocks from scratch, we publish snapshots compressed in zstd format.

Some users requested a convenient way to start lbcd with the snapshot without manually downloading and uncompress the snapshot. This is handy for automated / integrated setup environment.

This can be done with: 1) a wrapper script which downloads and uncompresses the snapshot before starting lbcd. 2) --snapshot cli flag, which takes a file or url. Go has zstd package to do this.

Either implementation should support:

  1. Download a snapshot from a URL Uncompress from a downloaded snapshot

  2. Download and uncompress on the fly, for example:

    curl https://snapshots.lbry.com/blockchain/lbcd_snapshot_1178238_v0.22.100_2022-06-17.tar.zst | zstd -d | tar xf - -C ${LBCD_DIR}

Note: 2) support of --snapshot is preferred so we don't require installing zstd packages