Celestia Node v0.25 Release Notes
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.
π¨ 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 #4428)
- fix(share)!: tendermint compatible get range result json marshall by @zvolin in #3930
- fix(blob)!: tendermint compatible commitment proof json marshall #3929 by @zvolin (ported in #4434)
Changes:
- Integer values in JSON responses are now encoded as strings for Tendermint compatibility
- Example:
βheightβ: 67374
becomesβheightβ: β67374β
Migration: Update JSON parsing logic to handle integers as strings in header, share range, and blob commitment proof endpoints.
Gateway Removal
- refactor(api)!: removing gateway by @distractedm1nd in #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 #4390
- fix!(blobstream): change DataRootTupleInclusionProof type by @vgonkivs in #4430
- fix!(blobstream): change GetDataRootTupleRoot return type by @vgonkivs in #4435
- fix(open-rpc): add blobstream api docs by @vgonkivs in #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 #4156
- refactor!(share/shwap): rework range namespace data by @vgonkivs in #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.
Data Pruning Now Default
- refactor(nodebuilder/pruner)!: Remove --experimental-pruning by @renaynay in #4303
- feat(share/availability)!: lower sampling window to 7 days by @renaynay in #4427
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
--archival
flag to disable pruning
Migration:
- Archival nodes: Add
--archival
flag to maintain full history - All other nodes: Remove
--experimental-pruning
flag (pruning is now automatic) - Adjust monitoring for the new 7-day sampling window
π Bootstrap Nodes
- chore: removing the bootstrapper 3 and 4 from lunar by @tty47 in #4302
- chore(bootstrapers): add 01node mainnet bootstrap node by @daemon2k3 in #4270
β¨ New Features
API Enhancements
- feat(api): Celestia client lib by @walldiss in #4318
- feat(api): allow configurable CORS policy by @TheRealSibasishBehera in #4266
- feat(nodebuilder/core | state): Multi-core endpoint tx submission by @renaynay in #4380
Testing Infrastructure
- test: Tastora framework integration with test for blob module by @chatton in #4283
- test: tastora remove fullnode and rely on bridge and light nodes only by @gupadhyaya in #4441
- test: use tastora docker types instead of interface types by @gupadhyaya in #4421
π Performance Improvements
- perf(share/eds): parallelise row nd collection in NamespaceData by @renaynay in #4420
- perf(api/da): request all blobs once in da.Get by @walldiss in #4431
π§ Bug Fixes
- chore: fix incorrect logging in
updateHead
by @santamasa in #4191 - fix: fix lint by @vgonkivs in #4388
- fix(core/tests): fix core unit tests by @vgonkivs in #4366
- fix(test/blob): fix flaky blob test by @vgonkivs in #4429
- fix(nodebuilder): submit input validation by @cristaloleg in #3976
- fix: rename FuzzProofEqual to FuzzBlobUnmarshal by @GarmashAlex in #4414
- chore: update warning text on pruned -> archival conversion by @walldiss in #4471
- docs(api/da): doc and deprecate DA API by @walldiss in #4470
Test Fixes
- chore(node/tests): fix and cleanup swamp tests by @shipit in #4381
- chore(node/tests): fix a flaky nd test by @shipit in #4382
π§Ή Chore & Maintenance
Go Version & Core Dependencies
- bump go version by @renaynay in #4312
- deps!: bump go-header v0.6.6 and go-fraud v0.2.3 by @cristaloleg in #4217
- deps(go.mod): bump libp2p dep by @walldiss in #4401
- deps(go.mod): bump tendermint replace by @walldiss in #4396
- chore(deps): upgrade to go-square v2.3.1 by @rootulp in #4402
Celestia App Updates (v3 β v5)
- deps(go.mod): bump app by @renaynay in #4275
- deps(go.mod): bump app arabica by @renaynay in #4293
- deps(go.mod): bump app to mocha by @renaynay in #4301
- deps(go.mod): Bump app by @renaynay in #4363
- deps(go.mod): Bump app mocha by @renaynay in #4368
- deps(go.mod): Bump app
arabica
by @renaynay in #4383 - deps(go.mod): bump app
mocha
by @renaynay in #4385 - chore(deps): upgrade to app v4.0.9-arabica by @rootulp in #4391
- deps(go.mod): bump app
mocha
by @renaynay in #4394 - deps(go.mod): bump app mainnet by @renaynay in #4408
- chore: bump to v5 of app by @evan in #4444
- deps(go.mod): bump app mocha by @renaynay in #4448
- chore(deps): upgrade to app v5.0.1 by @rootulp in #4450
Tastora Dependencies
- deps(nodebuilder/tests/tastora): mod tidy by @renaynay in #4405
- chore(lint): fmt to tidy tastora go.mod by @walldiss in #4447
Repo
- chore(CODEOWNERS): remove @cristaloleg by @cristaloleg in #4272
- Add Ganesh to CODEOWNERS by @walldiss in #4300
- chore: magic env variable doc update by @damiannolan in #4259
- chore: upgrade to golangci-lint v2 by @shipit in #4280
- (.github): add
kind:perf
to assortment of required labels by @renaynay in #4419 - misc(core): add eds size to store log by @renaynay in #4343
New Contributors
- @damiannolan made their first contribution in #4259
- @santamasa made their first contribution in #4191
- @TheRealSibasishBehera made their first contribution in #4266
- @gupadhyaya made their first contribution in #4421
- @GarmashAlex made their first contribution in #4414
Full Changelog: v0.24.1...v0.25-arabica