This release of celestia-core hardens block propagation and consensus recovery, including proposer selection after WAL replay and handling of conflicting proposals. It includes a breaking change to the Go Propagator API and requires Go 1.26.6.
Breaking Changes
- Atomic propagation consensus state API (#3287, #3290).
Propagator.SetProposerandPropagator.SetHeightAndRoundare replaced bySetConsensusState(height, round, proposer). Downstream implementations and callers must migrate to the new method so height, round, and proposer are installed together.
Consensus & sync hardening
- Install propagation height, round, and proposer atomically so compact-block validation and cached-proposal replay cannot observe a partially updated consensus state (#3287).
- Use the round-adjusted proposer after consensus WAL replay. When replay resumes at round 1 or later, propagation now validates compact blocks using that round's proposer instead of overwriting it with the round-0 proposer (#3290).
- Reject cached proposals that conflict with an existing block identity at the same height and round before forwarding them to consensus or recovering their parts (#3286).
- Reject conflicting incoming compact blocks before forwarding or gossiping them. When a commitment replaces a conflicting proposal, clear the old per-peer part state so stale request bits cannot prevent fetching the committed block's parts (#3298).
Improvements
- Update the propagation identity regression test to use
SetConsensusState(#3303). - Update NMT to v0.24.5, runc to v1.3.6, and AWS SDK, Prometheus, OpenTelemetry, and Go extension dependencies.
- Sync release tags to the Linear release pipeline, set explicit workflow token permissions, and remove unused upstream CometBFT workflows and QA reporting scripts (#3308, #3320, #3318, #3319).
What's Changed
- fix(propagation): reject conflicting cached proposals by @ninabarbakadze in #3286
- fix(propagation)!: propagation consensus state updates should be atomic by @ninabarbakadze in #3287
- build(deps): Bump github.com/celestiaorg/nmt from 0.24.3 to 0.24.4 by @dependabot[bot] in #3296
- build(deps): Bump github.com/aws/aws-sdk-go-v2/config from 1.32.38 to 1.33.2 by @dependabot[bot] in #3297
- build(deps): Bump github.com/prometheus/client_model from 0.6.2 to 0.6.3 by @dependabot[bot] in #3295
- fix(propagation): reject conflicting compact blocks and purge replaced peer state by @rach-id in #3298
- build(deps): Bump golang.org/x/crypto from 0.55.0 to 0.56.0 by @dependabot[bot] in #3291
- build(deps): Bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.45.0 to 1.46.0 by @dependabot[bot] in #3283
- build(deps): Bump github.com/prometheus/common from 0.70.1 to 0.71.0 by @dependabot[bot] in #3292
- fix(consensus)!: use the round-adjusted proposer for propagation after WAL replay by @rach-id in #3290
- build(deps): Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.109.1 to 1.110.0 by @dependabot[bot] in #3294
- fix(propagation): use SetConsensusState in identity test by @rootulp in #3303
- ci: sync GitHub releases to the Linear release pipeline by @rootulp in #3308
- build(deps): Bump golang.org/x/sync from 0.22.0 to 0.23.0 by @dependabot[bot] in #3309
- build(deps): Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.110.0 to 1.113.0 by @dependabot[bot] in #3315
- build(deps): Bump golang.org/x/net from 0.58.0 to 0.59.0 by @dependabot[bot] in #3311
- build(deps): Bump github.com/aws/aws-sdk-go-v2/credentials from 1.20.2 to 1.20.4 by @dependabot[bot] in #3310
- build(deps): Bump github.com/celestiaorg/nmt from 0.24.4 to 0.24.5 by @dependabot[bot] in #3316
- build(deps): Bump github.com/aws/aws-sdk-go-v2/config from 1.33.2 to 1.33.4 by @dependabot[bot] in #3313
- build(deps): bump github.com/opencontainers/runc to v1.3.6 by @rootulp in #3321
- ci: set explicit GITHUB_TOKEN permissions on workflows by @rootulp in #3320
- ci: delete dead upstream CometBFT workflows by @rootulp in #3318
- chore: remove upstream CometBFT QA reporting scripts by @rootulp in #3319
Full Changelog: v0.41.0...v0.42.0