This release includes significant changes accumulated since May 2025 while waiting for the Celestia App v4/v5 mainnet update. Please review all breaking changes carefully before upgrading.
TL;DR
šØ This release breaks both API and config!
- ā ļø API Breaking Changes
- JSON integers now encoded as strings (Tendermint compatibility)
- Blobstream root encoding switched to hex (plus pointer cleanups in Go API)
- Gateway removed ā use direct API; configure CORS as needed
- Share Samples API now usesĀ heightĀ parameter instead of ExtendedHeader
- Share encoding in Samples response changed toĀ base64 stringĀ (was object with data field)
- š¤š» Data Retention Changes
- Full Nodes: Pruning enabled by default (ā30 days)
- Light Nodes: Sampling window reduced to 7 days
- Use
--archivalto keep full history - Update config to remove pruning-related fields
- ⨠API Enhancements ā Configurable CORS, new client library, multi-endpoint tx submission
- š Faster GetRange ā Uses shwap protocol for efficient partial retrieval
- šļø Performance Boosts ā Parallelized namespace data; optimized blob retrieval
- š„¾ Bootstrap Updates ā Added 01node mainnet bootstrap; removed outdated nodes
šØ Breaking Changes
šļø Configuration Breaking Changes
This release contains configuration breaking changes. Node operators must run the config update command before starting their node:
celestia <node_type> config-update --p2p.network (or --node.store)
ā ļø API & JSON Compatibility
- fix(api/header)!: tendermint compatible json marshall #3928 by @zvolin (ported in https://github.com/celestiaorg/celestia-node/pull/4428)
- fix(share)!: tendermint compatible get range result json marshall by @zvolin in https://github.com/celestiaorg/celestia-node/pull/3930
- fix(blob)!: tendermint compatible commitment proof json marshall #3929 by @zvolin (ported in https://github.com/celestiaorg/celestia-node/pull/4434)
Changes:
- Integer values in JSON responses are now encoded as strings for Tendermint compatibility
- Example:
āheightā: 67374becomesāheightā: ā67374ā
Migration: Update JSON parsing logic to handle integers as strings in header, share range, and blob commitment proof endpoints.
Share API Consistency Improvements
Samples Method Signature Change
Changes:
SamplesĀ method now acceptsĀheightĀ parameter directly- No longer requires passingĀ
ExtendedHeader - Brings consistency with other share module methods
Migration:
// Before:
samples, err := client.Share.GetSamples(ctx, header)
// After:
samples, err := client.Share.GetSamples(ctx, height)
Share Encoding in Samples Response
Changes:
- Shares inĀ
GetSamplesĀ response now encoded as base64 strings - Previously encoded as objects withĀ
dataĀ field - Matches encoding format used byĀ
GetRowĀ and other methods
Migration:
// Before (v0.25.0-v0.25.1):
{
"share": {
"data": "AAAAAAA...base64..."
},
"proof": { ... }
}
// After (v0.25.2+):
{
"share": "AAAAAAA...base64...",
"proof": { ... }
}
Update JSON parsing to expect shares as direct base64 strings rather than nested objects.
ā Gateway Removal
- refactor(api)!: removing gateway by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/4120
Migration: If you were using the gateway, switch to direct API endpoints. Configure CORS policy using the new configurable CORS feature if needed.
š ±ļø Blobstream API Changes
- refactor!(blobstream): change DataRootTupleRoot to HexBytes type alias by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4390
- fix!(blobstream): change DataRootTupleInclusionProof type by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4430
- fix!(blobstream): change GetDataRootTupleRoot return type by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4435
- fix(open-rpc): add blobstream api docs by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4432
Changes:
DataRootTupleRoot: String encoding changed from base64 to hex bytesDataRootTupleInclusionProof: Removed extra pointer (affects native Go API only, not JSON encoding)GetDataRootTupleRoot: Removed extra pointer in returned value (affects native Go API only)- Blobstream API is now publicly documented
Migration:
- Update code expecting base64 encoded roots to handle hex encoding
- Go API users: Update code to handle direct values instead of pointers
⨠GetRange efficiency improvements
- feat!(share/shwap): implement get range request over shwap by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4156
- refactor!(share/shwap): rework range namespace data by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4325
Changes:
- GetRange requests now use efficient P2P protocol instead of downloading entire EDS
- Significant performance improvement for partial data retrieval
Migration: Update clients using range requests to use the new shwap protocol implementation.
⨠API New Features + Enhancements
- feat(api): Celestia client lib by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4318
- feat(api): allow configurable CORS policy by @TheRealSibasishBehera in https://github.com/celestiaorg/celestia-node/pull/4266
- feat(nodebuilder/core | state): Multi-core endpoint tx submission by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4380
- feat(nodebuilder)!: Allow disabling DASer by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4511
š¤š» Data Pruning Now Default
- refactor(nodebuilder/pruner)!: Remove --experimental-pruning by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4303
- feat(share/availability)!: lower sampling window to 7 days by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4427
- fix(nodebuilder/pruner)!: Remove pruner config from nodes config byĀ @renaynayĀ inĀ #4482
Changes:
- Data pruning is now enabled by default (stores 30 days of data)
- Sampling window reduced from 30 to 7 days
- Archival nodes must use
--archivalflag to disable pruning - The pruner configuration field has been completely removed from node config files
- Pruning behavior is now controlled exclusively via command-line flags
Migration:
- Remove any pruner-related configuration from your config files
- To run an archival node (disable pruning):Ā MUST useĀ
-archivalĀ flagĀ when starting the node - All other nodes: Remove
-experimental-pruningflag (pruning is now automatic) - Adjust monitoring for the new 7-day sampling window
- Default behavior (without flag): Pruning enabled with 30-day retention
š§Ŗ Testing Infrastructure
- test: Tastora framework integration with test for blob module by @chatton in https://github.com/celestiaorg/celestia-node/pull/4283
- test: tastora remove fullnode and rely on bridge and light nodes only by @gupadhyaya in https://github.com/celestiaorg/celestia-node/pull/4441
- test: use tastora docker types instead of interface types by @gupadhyaya in https://github.com/celestiaorg/celestia-node/pull/4421
š Performance Improvements
- perf(share/eds): parallelise row nd collection in NamespaceData by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4420
- perf(api/da): request all blobs once in da.Get by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4431
š¦ Rust Users ā Required Upgrade
Rust ecosystemĀ must upgradeĀ to maintain RPC compatibility with v0.25.
Upgrade timeline:
- If you doĀ notĀ useĀ
header.GetRangeByHeight: upgrade immediately. - If youĀ doĀ use it: upgrade Rust crates & celestia-nodeĀ together.
š Bootstrap Nodes
- chore: removing the bootstrapper 3 and 4 from lunar by @tty47 in https://github.com/celestiaorg/celestia-node/pull/4302
- chore(bootstrapers): add 01node mainnet bootstrap node by @daemon2k3 in https://github.com/celestiaorg/celestia-node/pull/4270
:wrench: Bug Fixes
- chore: fix incorrect logging in
updateHeadby @santamasa in https://github.com/celestiaorg/celestia-node/pull/4191 - fix: fix lint by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4388
- fix(core/tests): fix core unit tests by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4366
- fix(test/blob): fix flaky blob test by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4429
- fix(nodebuilder): submit input validation by @cristaloleg in https://github.com/celestiaorg/celestia-node/pull/3976
- fix: rename FuzzProofEqual to FuzzBlobUnmarshal by @GarmashAlex in https://github.com/celestiaorg/celestia-node/pull/4414
- chore: update warning text on pruned -> archival conversion by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4471
- docs(api/da): doc and deprecate DA API by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4470
Addressing memory leak in light node (LN)
- chore: backport bitswap changes by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/4506
FULL CHANGELOG
- deps!: bump go-header v0.6.6 and go-fraud v0.2.3 by @cristaloleg in https://github.com/celestiaorg/celestia-node/pull/4217
- chore(CODEOWNERS): remove @cristaloleg by @cristaloleg in https://github.com/celestiaorg/celestia-node/pull/4272
- deps(go.mod): bump app by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4275
- chore: magic env variable doc update by @damiannolan in https://github.com/celestiaorg/celestia-node/pull/4259
- chore: upgrade to golangci-lint v2 by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/4280
- deps(go.mod): bump app arabica by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4293
- Add Ganesh to CODEOWNERS by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4300
- chore: removing the bootstrapper 3 and 4 from lunar by @tty47 in https://github.com/celestiaorg/celestia-node/pull/4302
- deps(go.mod): bump app to mocha by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4301
- bump go version by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4312
- feat!(share/shwap): implement get range request over shwap by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4156
- chore: fix incorrect logging in
updateHeadby @santamasa in https://github.com/celestiaorg/celestia-node/pull/4191 - deps(go.mod): Bump app by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4363
- feat(api): Celestia client lib (v4 migration) by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4318
- deps(go.mod): Bump app mocha by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4368
- chore(node/tests): fix and cleanup swamp tests by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/4381
- deps(go.mod): Bump app
arabicaby @renaynay in https://github.com/celestiaorg/celestia-node/pull/4383 - deps(go.mod): bump app
mochaby @renaynay in https://github.com/celestiaorg/celestia-node/pull/4385 - chore(node/tests): fix a flaky nd test by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/4382
- feat(api): allow configurable CORS policy by @TheRealSibasishBehera in https://github.com/celestiaorg/celestia-node/pull/4266
- fix: fix lint by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4388
- fix(core/tests): fix core unit tests by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4366
- chore(deps): upgrade to app v4.0.9-arabica by @rootulp in https://github.com/celestiaorg/celestia-node/pull/4391
- refactor!(blobstream): change DataRootTupleRoot to HexBytes type alias by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4390
- deps(go.mod): bump app
mochaby @renaynay in https://github.com/celestiaorg/celestia-node/pull/4394 - refactor!(share/shwap): rework range namespace data by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4325
- deps(go.mod): bump tendermint replace by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4396
- test: Tastora framework integration with test for blob module by @chatton in https://github.com/celestiaorg/celestia-node/pull/4283
- deps(go.mod): bump libp2p dep by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4401
- chore(deps): upgrade to go-square v2.3.1 by @rootulp in https://github.com/celestiaorg/celestia-node/pull/4402
- deps(nodebuilder/tests/tastora): mod tidy by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4405
- feat(nodebuilder/core | state): Multi-core endpoint tx submission by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4380
- deps(go.mod): bump app mainnet by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4408
- (.github): add
kind:perfto assortment of required labels by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4419 - perf(share/eds): parallelise row nd collection in NamespaceData by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4420
- fix(test/blob): fix flaky blob test by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4429
- refactor(api)!: removing gateway by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/4120
- fix!(blobstream): change DataRootTupleInclusionProof type by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4430
- fix(nodebuilder): submit input validation by @cristaloleg in https://github.com/celestiaorg/celestia-node/pull/3976
- chore(bootstrapers): add 01node mainnet bootstrap node by @daemon2k3 in https://github.com/celestiaorg/celestia-node/pull/4270
- refactor(nodebuilder/pruner)!: Remove --experimental-pruning by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4303
- test: use tastora docker types instead of interface types by @gupadhyaya in https://github.com/celestiaorg/celestia-node/pull/4421
- fix!(blobstream): change GetDataRootTupleRoot return type by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4435
- chore: bump to v5 of app by @evan-forbes in https://github.com/celestiaorg/celestia-node/pull/4444
- misc(core): add eds size to store log by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4343
- fix(open-rpc): add blobstream api docs by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4432
- deps(go.mod): bump app mocha by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4448
- test: tastora remove fullnode and rely on bridge and light nodes only by @gupadhyaya in https://github.com/celestiaorg/celestia-node/pull/4441
- chore(deps): upgrade to app v5.0.1 by @rootulp in https://github.com/celestiaorg/celestia-node/pull/4450
- fix(api/header)!: tendermint compatible json marshall (#3928) by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4428
- perf(api/da): request all blobs once in da.Get by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4431
- chore(lint): fmt to tidy tastora go.mod by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4447
- fix: rename FuzzProofEqual to FuzzBlobUnmarshal by @GarmashAlex in https://github.com/celestiaorg/celestia-node/pull/4414
- fix(share)!: tendermint compatible get range result json marshall by @zvolin in https://github.com/celestiaorg/celestia-node/pull/3930
- fix(blob)!: tendermint compatible commitment proof json marshall (#3929) by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4434
- feat(share/availability)!: lower sampling window to 7 days by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4427
- chore: update warning text on pruned -> archival conversion by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4471
- docs(api/da): doc and deprecate DA API by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4470
- fix(cmd/celestia): parse only store determination flags for auxiliary commands by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4472
- !fix(api/share) encode share in sample json as base64 by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4480
- !fix(api/share) use height in Samples method by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4481
- fix(nodebuilder/pruner)!: Remove pruner config from nodes config by @renaynay in https://github.com/celestiaorg/celestia-node/pull/4482
- feat(config): adding a bool flag to enable/disable bitswap by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4504
- fix(share/swamp): fix GetSamples in swamp tests by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/4505
- chore: backport bitswap changes by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/4506
- !feat(nodebuilder): Allow disabling DASer by @walldiss in https://github.com/celestiaorg/celestia-node/pull/4511
New Contributors
- @damiannolan made their first contribution in https://github.com/celestiaorg/celestia-node/pull/4259
- @santamasa made their first contribution in https://github.com/celestiaorg/celestia-node/pull/4191
- @TheRealSibasishBehera made their first contribution in https://github.com/celestiaorg/celestia-node/pull/4266
- @gupadhyaya made their first contribution in https://github.com/celestiaorg/celestia-node/pull/4421
- @GarmashAlex made their first contribution in https://github.com/celestiaorg/celestia-node/pull/4414
Full Changelog: https://github.com/celestiaorg/celestia-node/compare/v0.24.1...v0.25.3