This is a patch release on top of v0.29.1-mocha.
Key highlights: fixes light node startup failure caused by syncer tail height overshooting the pruning window, bridge DASer gossip race fix, new delegation rewards API, core endpoint verification, go-header upgrade with parallel header fetching, and new cel-shed tools.
Header Sync
- Fix syncer tail estimation overshoot (#4840) — The syncer was using nominal 6s block time to estimate tail height, but real block times on mocha average ~6.14s. Over the 7-day pruning window this caused the tail to land ~3.8 hours outside the window, making peers unable to serve those headers. Fixed by using 7s as the upper bound block time for tail estimation.
- go-header v0.8.5-rc (#4841) — Includes parallel
performRequest(go-header#381) so header fetches from trusted peers happen concurrently instead of sequentially. - go-header v0.8.4-rc (#4837) — Per-peer timeout in
performRequest,Head()early return optimization. - Fix header store head height metric (#4806) — Fix for
hdr_store_head_height_gaugemetric.
Bridge & DAS
- Fix bridge DASer gossip race (#4820) — Bridge nodes were receiving gossip headers before the local
core.Listenerfinished storing EDS, causingWARN das requesting data from peer failedfloods. Fixed by addingFanoutOnlymode.
API & State
- Delegation rewards API (#4800) — Added
WithdrawDelegatorRewardandQueryDelegationRewardsto the state module.
Networking & Core
- Core endpoint network verification (#4781) — Nodes now verify that the core endpoint belongs to the expected network on startup.
- Fix inverted gRPC readiness check (#4793) — The gRPC connection readiness check was inverted.
Bug Fixes
- Fix pruner race condition (#4792) — Fixed race in
TestFindPruneableHeaders. - Fix shrex off-by-one (#4810) — Fix off-by-one in
GetRangeNamespaceDatatest.
Observability
- Pyroscope basic auth (#4811) — Added basic auth support for Pyroscope continuous profiling.
Tooling (cel-shed)
- cel-shed: erase samples (#4146) — Added
datastore erase-samplescommand. - cel-shed: ODS verification and recovery (#4780) — Added ODS storage verification and recovery tool.
Testing
- Consolidate core test retry helper (#4838) — All core tests now use the
startNetworkretry helper.
Dependencies
What's Changed
- store: close accessor in GetRow and GetRangeNamespaceData by @phrwlk in #4575
- feat(cel-shed): datastore: erase samples by @Wondertan in #4146
- feat(cel-shed): add ODS storage verification and recovery tool by @walldiss in #4780
- feat(core): verify core endpoint network on startup by @walldiss in #4781
- chrore: golang 1.26 by @walldiss in #4783
- chore(deps): bump alpine from 3.20.2 to 3.23.3 by @dependabot in #4784
- chore(deps): go mod parity for tastora by @walldiss in #4787
- chore(ci): pin golangci-lint to v2.10.0 and fix new gosec warnings by @walldiss in #4788
- fix(shrex): return valid samples from empty EDS instead of empty slice by @walldiss in #4789
- fix(core): retry test network start on port-in-use errors by @walldiss in #4790
- chore: bump celestia-app to v7.0.2-mocha by @walldiss in #4791
- fix(pruner): fix race condition in TestFindPruneableHeaders by @walldiss in #4792
- fix(nodebuilder/core): fix inverted gRPC connection readiness check by @walldiss in #4793
- chore(deps): bump github.com/ethereum/go-ethereum from 1.16.8 to 1.17.0 by @dependabot in #4796
- feat(state): add WithdrawDelegatorReward and QueryDelegationRewards by @walldiss in #4800
- docs: add CLAUDE.md for Claude Code guidance by @rootulp in #4805
- fix: bump go-header to v0.8.1 to fix
hdr_store_head_height_gaugemetric by @rootulp in #4806 - ci: add assign random reviewer workflow by @tty47 in #4808
- fix(shrex): fix off-by-one in GetRangeNamespaceData test by @walldiss in #4810
- feat(observability): add basic auth support for Pyroscope by @walldiss in #4811
- fix(das): prevent bridge DASer from receiving gossip headers before EDS is stored by @walldiss in #4820
- fix: upate nodes ids by @tty47 in #4821
- Revert "fix: upate nodes ids" by @walldiss in #4822
- chore: add tastora submodule to dependabot config by @walldiss in #4826
- chore(deps): bump go-header to v0.8.4-rc by @walldiss in #4837
- fix(core): use startNetwork retry helper in all core tests by @walldiss in #4838
- fix(header): use upper bound block time for syncer tail estimation by @walldiss in #4840
- chore(deps): bump go-header to v0.8.5-rc by @walldiss in #4841
- chore(deps): bump actions/setup-node from 5 to 6 by @dependabot in #4647
- chore(deps): bump golangci/golangci-lint-action from 8.0.0 to 9.2.0 by @dependabot in #4730
- chore(deps): bump actions/upload-artifact from 4 to 6 by @dependabot in #4742
- chore(deps): bump alpine from 3.20.2 to 3.23.3 by @dependabot in #4784
Full Changelog: v0.29.1-mocha...v0.29.3-mocha