⚠️ 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. UseHeader.Syncer.SyncFromHeight
instead.Header.TrustedHash
field is no longer supported. UseHeader.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
- fix: ensure default core.port is always set via flag by @DeVikingMark in #4440
- test: cleanup tastora framework by @gupadhyaya in #4465
- feat(cmd/share): add range cmd by @vgonkivs in #4464
- shwap!(shrex): unify shrex-nd and shrex-eds by @vgonkivs in #4249
- fix(pruner): change header -> blocks in logs by @renaynay in #4194
- feat: integrate pruning by @Wondertan in #4330
- deps(nodebuilder/tests/tastora): fix go mod by @renaynay in #4517
- chore: fix Go init order + tidy up flags by @hexcow in #4522
- config(nodebuilder/header): bumps go-header, removes trustingPeriod by @renaynay in #4524
- fix(discovery): remove panic in switch statement by @vgonkivs in #4526
- fix(api/client-lib): fix close order for Celestia client lib by @walldiss in #4520
- fix(share/shwap): parallelise namespace data collection by @vgonkivs in #4536
- chore(deps): bump github.com/ulikunitz/xz from 0.5.12 to 0.5.14 by @dependabot[bot] in #4512
- chore(deps): bump actions/setup-go from 5 to 6 by @dependabot[bot] in #4533
- chore(deps): bump actions/setup-node from 4 to 5 by @dependabot[bot] in #4531
- chore(deps): bump codecov/codecov-action from 4.5.0 to 5.5.1 by @dependabot[bot] in #4532
- dep: bump go-square by @vgonkivs in #4540
- chore: bump go-header by @Wondertan in #4544
- fix(pruner): check nil context by @Wondertan in #4546
- deps(go.mod): Bump app by @renaynay in #4547
- chore(deps): bump celestiaorg/.github from 0.4.5 to 0.6.4 by @dependabot[bot] in #4514
- Revert "dep: bump go-square (#4540)" by @renaynay in #4560
New Contributors
- @DeVikingMark made their first contribution in #4440
- @hexcow made their first contribution in #4522
Full Changelog: v0.25.3-mocha...v0.26.1-mocha