github celestiaorg/celestia-node v0.26.1-mocha

pre-release13 hours ago

⚠️ Note: this release requires a config update. ⚠️
See docs for further information.

This release notably introduces...

  • a unified share exchange protocol (via unified shrex), a pre-requisite for sampling over our custom share exchange
  • header pruning via #4330

Header pruning

In order to use header pruning, please check out the new header configuration parameters in config.toml:

  [Header.Syncer]
    # PruningWindow defines the duration within which headers are retained before being pruned.
    # Default is 337 hours.
    PruningWindow = "337h0m0s"
    # SyncFromHash is the hash of the header from which the syncer should start syncing.
    # Zero value to disable. Value updates up and down the chain are gracefully handled by Syncer.
    #
    # By default, Syncer maintains PruningWindow number of headers. SyncFromHash overrides this default,
    # allowing any user to specify a custom starting point.
    #
    # SyncFromHash has higher priority than SyncFromHeight.
    SyncFromHash = ""
    # SyncFromHeight is the height of the header from which the syncer should start syncing.
    # Zero value to disable. Value updates up and down the chain are gracefully handled by Syncer.
    #
    # By default, Syncer maintains PruningWindow number of headers. SyncFromHeight overrides this default,
    # allowing any user to specify a custom starting point.
    #
    # SyncFromHeight has lower priority than SyncFromHash.
    SyncFromHeight = 0

Please do not copy these values directly into the config -- please use the config-update command. Read the docs here.

Default LNs no longer support historical queries

By default, node maintains a sliding window of headers, bounded by Tail and Head headers. Requests with height below the Tail are rejected (This is, however, temporary, and lazy header fetching will be available with Backward Sync)

To retain the ability to request older queries with LNs, use new configuration fields to set an absolute header that the node will sync from, either the SyncFromHeight or the SyncFromHash field.

LNs only

Pruning for Bridge and Full nodes is disabled. Currently, the p2p protocol for headers cannot distinguish between pruned and non-pruned serving node types. Therefore, to keep stable synchronization of historical headers, we disable pruned servers.

Prolonged Starts

  • If your LN stores a significant portion of the history of headers, you may need to increase the StartTimeout value in the config, as LN prunes on start. If the starting times out, e.g., with the default 20s, the node will attempt to persist the progress, but storage state corruptions may still occur. The complete mainnet header history pruning on moderate hardware takes under 100s, so update your config accordingly.
  • If you move the tail down the chain (e.g., SyncByHeight 150 -> 100), you may need to increase the StartTimeout value in the config, as LN syncs the difference during start. (This is, however, temporary, and asynchronous syncing that doesn't block start will be available with Backward Sync).
    • WARNING: This feature wasn't tested extensively and may break in unknown ways. Use at your own risk!

Config Breaks

  • Daser.SampleFrom field is no longer supported. Use Header.Syncer.SyncFromHeight instead.
  • Header.TrustedHash field is no longer supported. Use Header.Syncer.SyncFromHash instead.
  • Header.TrustedPeriod field was removed and is now a network-level constant.

Replace

Replace for go-datastore was added, which may break users depending directly on the node's go.mod.
Do the following in your project's root to fix:
go mod edit -replace github.com/ipfs/go-datastore=github.com/celestiaorg/go-datastore@48a63ae && go mod tidy. It's gonna be removed in future releases.

What's Changed

New Contributors

Full Changelog: v0.25.3-mocha...v0.26.1-mocha

Don't miss a new celestia-node release

NewReleases is sending notifications on new releases.