This is the first release with the propagation reactor 🎉
It's also the first release using a standard tag structure that we hope to continue using in the future.
What's Changed
- chore: put celestia features into 0.38.x by @tac0turtle in #1672
- feat: add priority mempool by @tac0turtle in #1703
- feat: add CAT mempool by @tac0turtle in #1708
- refactor: undo block api renaming for compatibility by @damiannolan in #1722
- docs: fix default indexer in config.toml by @rootulp in #1723
- ci(mergify): upgrade configuration to current format by @mergify[bot] in #1765
- docs: fix
InitStateVersion
docs by @rootulp in #1768 - ci: disable dependabot for
main
by @rootulp in #1837 - feat: allow separate directory for blockstore by @yarikbratashchuk in #1819
- ci: use consistent go version by @rootulp in #1855
- chore: add debug info to
ErrPartSetInvalidProof
by @rootulp in #1875 - chore: add copilot instructions by @Copilot in #1904
- build(deps): Bump golangci/golangci-lint-action from 6 to 8 by @dependabot[bot] in #1848
- build(deps): Bump docker/setup-buildx-action from 3.8.0 to 3.10.0 by @dependabot[bot] in #1839
- build(deps): Bump docker/build-push-action from 6.13.0 to 6.18.0 by @dependabot[bot] in #1899
- refactor: address book to return all peers by @ninabarbakadze in #1916
- chore: update CODEOWNERS with new team members by @Copilot in #1918
- feat: import copilot instructions and automatic reviewers assignment from celestia-app by @Copilot in #1920
- chore: port the propagation reactor from
v0.34.x-celestia
tov0.38.x-celestia
by @rach-id in #1870 - feat: purpose -1 to return all unconfirmed transactions in UnconfirmedTxs RPC (Backport #1675 to main) by @rach-id in #1887
- chore: fix golangci-lint by @rach-id in #1956
- feat: update dependabot config for main branch and add go/docker support by @Copilot in #1954
- build(deps): Bump docker/login-action from 3.3.0 to 3.4.0 by @dependabot[bot] in #1960
- feat: add main branch to GitHub workflow triggers by @Copilot in #1932
- feat: add mergify backport rule for v0.38.x-celestia branch by @Copilot in #1914
- chore: update auto_request_review.yml to reflect the code owners by @rach-id in #1930
- chore: update CI workflows to run on v0.38.x-celestia branch by @Copilot in #1982
- feat: add merge_group trigger to CI workflows for merge queue support by @Copilot in #1959
- chore: add catch-up mechanism for proposal parts in consensus reactor by @rach-id in #1988
- feat: update parts channel capacity from 1000 to 2500 by @Copilot in #1936
- chore: rename BlockProp reactor to Recovery by @Copilot in #1935
- fix: update Go version requirement to 1.24 to resolve govuln CI failures by @Copilot in #1938
- fix: AddCommitment replace the PartSetHeader for cached heights and rounds with new one by @rach-id in #1939
- fix: validate received haves match wants and adjust canSend logic in propagation by @rach-id in #1944
- chore: validate the compact block last len by @rach-id in #1940
- chore: delete memstats routine and definitions by @Copilot in #1934
- feat: feed any existing data to the consensus reactor with every height/round by @rach-id in #1993
- fix: include proof in RecoveryPart messages when clearing wants by @rach-id in #1945
- chore: setWant/Have verify if state is initialised by @rach-id in #1941
- fix: remove extra blank lines from dependabot.yml to fix linter CI by @Copilot in #1987
- fix: update Go toolchain and dependencies to resolve govuln vulnerabilities by @Copilot in #1995
- fix: safely access part and block prop concurrent fields by @rach-id in #1997
- chore: correct max requests bit array size by @rach-id in #1996
- fix: combined partset complete == original partset complete by @rach-id in #1998
- fix: correctly set the proposer when updating the round by @rach-id in #2025
- fix: set default proxy_app config value to align with app/v4-cosmos-sdk (backport #1915 to main) by @Copilot in #1999
- remove: Celestia bot from CI and dependent files by @Copilot in #2023
- Remove dependabot rules for v0.38.x-celestia branch by @Copilot in #2021
- build(deps): Bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.34.0 to 1.36.0 by @dependabot[bot] in #2002
- build(deps): Bump google.golang.org/grpc from 1.70.0 to 1.73.0 by @dependabot[bot] in #2006
- build(deps): Bump gonum.org/v1/gonum from 0.15.1 to 0.16.0 by @dependabot[bot] in #2005
- build(deps): Bump github.com/aws/aws-sdk-go-v2 from 1.36.1 to 1.36.4 by @dependabot[bot] in #2010
- build(deps): Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.76.1 to 1.80.2 by @dependabot[bot] in #2014
- build(deps): Bump github.com/aws/aws-sdk-go-v2/credentials from 1.17.59 to 1.17.69 by @dependabot[bot] in #2016
- build(deps): Bump github.com/go-git/go-git/v5 from 5.13.2 to 5.16.2 by @dependabot[bot] in #2017
- build(deps): Bump golang.org/x/net from 0.40.0 to 0.41.0 by @dependabot[bot] in #2019
- build(deps): Bump github.com/aws/aws-sdk-go-v2/config from 1.29.6 to 1.29.16 by @dependabot[bot] in #2018
- build(deps): Bump github.com/celestiaorg/go-square/v2 from 2.1.0 to 2.3.0 by @dependabot[bot] in #2028
- build(deps): Bump github.com/celestiaorg/nmt from 0.23.0 to 0.24.0 by @dependabot[bot] in #2027
- docs: document the contribution flow for core by @Copilot in #2035
- feat: expose rejected txs in TxStatus by @cmwaters in #2032
- build(deps): Bump docker/setup-buildx-action from 3.10.0 to 3.11.1 by @dependabot[bot] in #2047
- build(deps): Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.80.2 to 1.81.0 by @dependabot[bot] in #2048
- build(deps): Bump github.com/aws/aws-sdk-go-v2/credentials from 1.17.69 to 1.17.70 by @dependabot[bot] in #2050
- build(deps): Bump github.com/prometheus/common from 0.62.0 to 0.65.0 by @dependabot[bot] in #2051
- build(deps): Bump github.com/aws/aws-sdk-go-v2/config from 1.29.16 to 1.29.17 by @dependabot[bot] in #2052
- chore: exit early when already has recovery part by @rach-id in #2056
- chore: validate want parts size in handle wants by @rach-id in #2055
- fix: sending parity parts to the consensus reactor by mistake by @rach-id in #2054
- feat: more aggressive peer discovery by @ninabarbakadze in #2029
- Update actions/cache to v4.2.3 by @PixelPil0t1 in #2064
- feat: Reactor Specific Peers by @tzdybal in #1946
- chore: only add recovered part if it's missing by @rach-id in #2067
- chore: improve channels lifecycle handling by @rach-id in #2068
- feat: add mergify rule to backport to main using S:backport-to-main label by @Copilot in #2063
- fix: validate compact block data race by @rach-id in #2070
- fix: backport CAT mempool deadlock fix to main by @Copilot in #2077
- docs: minimize PR template and point to contribution guidelines by @Copilot in #2073
- feat(state): increase transaction reap amount in CreateProposalBlock to provide buffer for PrepareProposal by @Copilot in #2079
- chore: re-enable cat test and check for rejected transactions by @rach-id in #2075
- fix: remove CAT mempool panic for duplicate peers (#1902 backport to main) by @Copilot in #2062
- fix: make mempool type configurable in template by @Copilot in #2095
- refactor: add atomic fields for thread-safe peer handling by @tzdybal in #2107
- p2p: improve peer rejection error logs, remove empty fields and clari… (backport #1889) by @mergify[bot] in #2104
- docs(README): copy README from v0.34.x-celestia by @rootulp in #2105
- feat: backport proposal block saving functionality from v0.38.x-celestia to main by @Copilot in #2103
- build(deps): update dependencies by @tzdybal in #2110
- fix: use deterministic IP in TestPEXReactorDialDisconnectedPeerInterval to prevent flakiness by @Copilot in #2116
- test: update assertions in TestProvider by @tzdybal in #2119
- chore: change "Failed to load block meta" catchup log to debug by @evan-forbes in #2122
- refactor: Remove support for the deprecated digital-ocean infrastructure in E2E test framework (backport #1869) by @mergify[bot] in #2126
- feat: add timestamp to the filenames of failed proposal blocks by @Copilot in #2113
- feat: reactor specific peer removal by @tzdybal in #2059
- feat: use 3 channels for CAT and enable CAT by default in e2e by @rach-id in #2132
- fix: improve TestByzantinePrevoteEquivocation reliability by @Copilot in #2090
- fix: handle race condition in TestBlockPoolMaliciousNode flake by @Copilot in #2125
- fix: use dynamic port allocation in jsonrpc_test.go to prevent flaky tests by @Copilot in #2138
- feat: move p2p and addrbook logs from INFO to DEBUG by @Copilot in #2133
- fix: adjust PEX request interval to match specification by @Copilot in #2140
- build(deps): Bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.82.0 to 1.83.0 by @dependabot[bot] in #2150
- docs: replace all instances of "nova" with "multiplexer" by @Copilot in #2152
- chore: trace prepare proposal by @rach-id in #2157
- chore:trace process proposal correctly by @rach-id in #2158
- fix: correctly set the recovered mempool parts by @rach-id in #2163
- feat: add recovery received part traces by @rach-id in #2160
- chore: make the failed to validate proposal log debug level by @rach-id in #2162
- fix: return proper JSON-RPC errors for missing blocks in /header and /block endpoints by @Copilot in #2044
- fix(ci): backport rules by @rootulp in #2155
- revert: "fix: return proper JSON-RPC errors for missing blocks in /header and /block endpoints" by @rootulp in #2168
- docs: remove "This server only supports /broadcast_tx_commit" (backport #2171) by @mergify[bot] in #2174
- feat: specify the number of needed parts by @rach-id in #2165
- docs: explain Celestia-specific GRPC APIs by @rootulp in #2175
- feat: enable GRPC server reflection by @rootulp in #2173
- chore: make received part for unknown proposal debug level by @rach-id in #2183
- chore: remove the message from rpc-server timeout error by @rach-id in #2182
- fix: make json decoding old v0.34 EventAttribute backwards compatible by @evan-forbes in #2184
- fix(test): resolve test flake in light/provider/http by using RecreateConfig by @Copilot in #2147
- build(deps): Bump slackapi/slack-github-action from 2.0.0 to 2.1.1 by @dependabot[bot] in #2193
- build(deps): Bump github.com/grafana/pyroscope-go from 1.2.0 to 1.2.3 by @dependabot[bot] in #2197
- build(deps): Bump golang.org/x/net from 0.41.0 to 0.42.0 by @dependabot[bot] in #2194
- fix: only purge expired txs during update by @ninabarbakadze in #2199
- fix: panic due to nil limit by @rootulp in #2215
- feat: build the block pre-emptively during the commit timeout by @rach-id in #2202
- fix: synchronize access in GetTrueIndices by @rach-id in #2220
- fix: generate the tx metadata when proposing an existing block by @rach-id in #2212
- refactor: move propagation channels from node to propagation reactor by @Copilot in #2209
- refactor: move error handling from AddPeer to InitPeer by @tzdybal in #2223
- fix: harden peer filtering logic in
Switch
by @tzdybal in #2229 - feat: make the propagation reactor backwards compatible by @evan-forbes in #2149
- chore: run the 50-50 compatibility test in CI by @evan-forbes in #2246
- fix: initialize peer state when proposing by @evan-forbes in #2245
- chore: reorder sync data channels priorities by @rach-id in #2258
- chore: correctly set CAT trace client by @Copilot in #2261
- chore: send mempool recovered parts to consensus by @rach-id in #2259
- feat: delay pre-emptive block building by @rach-id in #2255
- chore: add more details to the invalid proposal error by @rach-id in #2262
- chore: only build the block pre-emptively when the timeout commit is high by @rach-id in #2264
- chore: replace grpc.Dial to grpc.NewClient by @TropicalDog17 in #2214
- chore: increase propagation/consensus/p2p send queue sizes by @rach-id in #2256
- fix: UnmarshalJSON for event attributes (backport #2263) by @mergify[bot] in #2266
- feat: index error codes for rejected txs by @ninabarbakadze in #2242
- chore: update code owners by @rach-id in #2267
- feat!: update the privval extension to match the CIP by @rach-id in #2272
- chore: correctly initialise the new height channel by @rach-id in #2269
- build(deps): Bump github.com/aws/aws-sdk-go-v2/config from 1.29.17 to 1.30.2 by @dependabot[bot] in #2285
- build(deps): Bump github.com/grafana/pyroscope-go from 1.2.3 to 1.2.4 by @dependabot[bot] in #2284
- feat: support reactor messages parallel processing by @rach-id in #2257
- build(deps): Bump google.golang.org/grpc from 1.73.0 to 1.74.2 by @dependabot[bot] in #2276
- build(deps): Bump github.com/celestiaorg/go-square/v2 from 2.3.0 to 2.3.1 by @dependabot[bot] in #2279
- build(deps): Bump github.com/adlio/schema from 1.3.6 to 1.3.9 by @dependabot[bot] in #2282
- fix: make the findNewPeerToRequestTx iterative by @rach-id in #2288
- build(deps): Bump github.com/aws/aws-sdk-go-v2 from 1.36.5 to 1.37.1 by @dependabot[bot] in #2277
- build(deps): Bump github.com/klauspost/reedsolomon from 1.12.4 to 1.12.5 by @dependabot[bot] in #2278
- build(deps): Bump github.com/prometheus/client_golang from 1.20.5 to 1.23.0 by @dependabot[bot] in #2280
- feat: remove debug print statement from txindex kv.go by @Copilot in #2291
- chore: remove peer not found error log by @rach-id in #2295
- chore: increase peer state queues to 20000 by @rach-id in #2297
- chore: validate the parset hashes in compact block by @rach-id in #2298
- feat!: deduplicate cache implementations between mempools by @ninabarbakadze in #2274
- build(deps): Bump docker/login-action from 3.4.0 to 3.5.0 by @dependabot[bot] in #2312
- feat: increase DefaultGossipDelay from 200ms to 60s to reduce network overload by @Copilot in #2308
- fix: update Go toolchain to 1.24.6 to resolve GO-2025-3849 vulnerability by @Copilot in #2311
- feat: enhance compact block signing failure logging for KMS compatibility by @Copilot in #2309
- chore: only send want if there are missing parts by @rach-id in #2322
New Contributors
- @yarikbratashchuk made their first contribution in #1819
- @PixelPil0t1 made their first contribution in #2064
Full Changelog: v0.38.17...v0.39.0