v0.14.0
v0.14.0
Pruning
This release introduces block (or sample) pruning via the --experimental-pruning
flag. When --experimental-pruning is enabled, light nodes will prune samples, while full and bridge nodes will prune blocks older than 30 days ( the availability window defined in https://github.com/celestiaorg/CIPs/blob/main/cips/cip-4.md).
Full and bridge nodes that run with pruning enabled will support serving samples and blocks within the availability window, and will continue to advertise on the full
topic, whereas full and bridge nodes that upgrade to this version and do not enable pruning will retain all blocks and begin to advertise themselves on the new archival
topic, signalling to the network that they are an "archival" node.
--experimental-pruning
is enabled, it is not possible to go back to running as an "archival" node without resyncing from scratch or restoring from a snapshot.
As a part of the pruning feature, it is now default behaviour for light, full and bridge nodes to additionally discover "archival" nodes in the network in order to maintain the ability to request blobs and blocks older than the availability window.
Discovery metrics
There are now two sets of discovery processes running simultaneously: one for archival
peers and one for full
. Discovery metrics have been broken to reflect that change, so now, full
discovery-related metrics will have full_
prepended to the string.
E.g. discovery_amount_of_peers
is now full_discovery_amount_of_peers
for full
peers and archival_discovery_amount_of_peers
for archival
peers.
State access via gRPC only
Via #3359, it is now possible to perform all state-related queries over a gRPC connection to a core consensus node only. This means that it is no longer required to pass a --core.rpc.port
when configuring celestia-node for state access. Instead, only the gRPC port is necessary (which is still configured to default to 9090).
This does not yet apply for bridge nodes!!! Bridge nodes still require the same core configuration setup as before (RPC port for block sync and gRPC port for state access).
What's Changed
BREAKING
- fix!(share/byzantine): use any available axis for befp nmt proofs construction by @walldiss in #3306
- refactoring(cmd/state)!: remove submit-tx from cli by @vgonkivs in #3348
- feat(p2p/discovery)!: Implement
archival
discovery + syncing of historic blocks and blobs by @renaynay in #3188 - fix(share/getters)!: return nil shares from all getters in non-inclusion case by @walldiss in #3454
FEATURES
- feat(pruner): Implement
full
andbridge
node pruning by @renaynay in #3150 - feat(core): Bridge node short-circuits storing a historical EDS if pruning is enabled by @renaynay in #3283
- feat(state): enable fee granting by @vgonkivs in #3304
- feat(share/eds): Store nmt nodes on failed reconstruction by @walldiss in #3305
- feat(cmd/rpc): Automatically detect running node for RPC requests by @mastergaurang94 in #3246
- refactor(state): Remove need for core RPC conn and rely only on gRPC for state reads by @renaynay in #3359
- feat(pruner/light): implement light pruning by @Wondertan in #3388
- feat(share/pruner): disallow converting pruned node to archival by @walldiss in #3467
BUG FIXES
- fix(state/coreAccessor): fix txResponse by @vgonkivs in #3336
- fix(pruner/light): Fix light availability window provided by @renaynay in #3370
- fix(share/pruner) enable Light node pruner service by @walldiss in #3455
- fix(nodebuilder/share): Pass
light.Window
to shrex getter construction regardless of node type / pruning mode by @renaynay in #3466
MISCELLANEOUS
- feat(ci): call reusable workflow to track the release deployments and notify devops by @MSevey in #3291
- chore(deps): bump .github version for release tracking epic by @MSevey in #3312
- deps: bump go-header and go-fraud by @Wondertan in #3326
- deps: bump celestia-app by @renaynay in #3316
- chore(linters): add errorlint by @walldiss in #3334
- chore(linter): add 6 more linteres by @walldiss in #3333
- chore(makefile): comment for install-global to clarify linux support only by @mastergaurang94 in #3340
- chore: bump to app v1.9.0 by @evan-forbes in #3366
- chore(state/core_accessor)!: remove query cli by @vgonkivs in #3307
- chore: add dupword CI && remove repetitive words globally by @goofylfg in #3360
- feat(cmd): match upcoming node version with API by @vgonkivs in #3318
- refactor: changed user UserAgent name by @ramin in #3379
- chore: fix function names in comment by @studystill in #3337
- refactor: add missing stop ticker by @hoank101 in #3389
- feat(tracer): Add shutdown hook for tracer by @dougEfresh in #1524
- chore(deps): Bump github.com/hashicorp/go-retryablehttp from 0.7.5 to 0.7.6 by @dependabot in #3395
- chore(deps): Bump golang.org/x/text from 0.14.0 to 0.15.0 by @dependabot in #3398
- chore(deps): Bump golangci/golangci-lint-action from 5.3.0 to 6.0.1 by @dependabot in #3400
- chore(deps): Bump celestiaorg/.github from 0.2.8 to 0.3.1 by @dependabot in #3124
- chore(nodebuilder/das | pruner): Privatise
samplingWindow
in DAS params, add Duration method toAvailabilityWindow
by @renaynay in #3378 - ci: generate and store openrpc.json with the tagged release artifacts by @ramin in #3350
- add @cristaloleg to .github/CODEOWNERS by @ramin in #3418
- chore(deps): Bump codecov/codecov-action from 4.3.1 to 4.4.1 by @dependabot in #3420
- doc: improve godoc for the blob service by @vgonkivs in #3422
- chore(deps): Bump actions/checkout from 3 to 4 by @dependabot in #3436
- chore(deps): Bump celestiaorg/.github from 0.3.2 to 0.4.1 by @dependabot in #3412
- chore(deps): Bump github.com/filecoin-project/go-jsonrpc from 0.3.1 to 0.4.0 by @dependabot in #3439
- chore(logs): lower bitswap-server verbosity by @Wondertan in #3434
- chore(deps): Bump github.com/celestiaorg/nmt from v0.20.0 to v0.21.0 by @walldiss in #3443
- chore(deps): Bump google.golang.org/protobuf from 1.32.0 to 1.34.1 by @dependabot in #3374
- chore(deps): Bump golang.org/x/crypto from 0.21.0 to 0.23.0 by @dependabot in #3399
- refactor(core): remove unused test grpc server by @walldiss in #3445
- fix(cmd): Add pruner flags to LN as well by @renaynay in #3449
- chore(deps): Bump github.com/multiformats/go-multiaddr from 0.12.3 to 0.12.4 by @dependabot in #3414
- chore(deps): Bump github.com/hashicorp/go-retryablehttp from 0.7.6 to 0.7.7 by @dependabot in #3460
- chore(deps): Bump celestiaorg/.github from 0.4.1 to 0.4.2 by @dependabot in #3456
- chore(deps): Bump alpine from 3.19.1 to 3.20.0 by @dependabot in #3435
- chore(deps): Bump go.uber.org/fx from 1.21.1 to 1.22.0 by @dependabot in #3458
- chore: bump libp2p, go-header and app by @Wondertan in #3446
- chore(share/p2p/discovery): add log for start by @renaynay in #3471
- chore(swamp): remove always failing assert by @cristaloleg in #3463
- refactor(share): use atomic.Int64 and fix 'racy' bugs by @cristaloleg in #3478
- chore(deps): upgrade golangci-lint in ci to 1.59 by @walldiss in #3483
- chore(deps): Bump golang.org/x/text from 0.15.0 to 0.16.0 by @dependabot in #3489
- chore(deps): Bump golang.org/x/crypto from 0.23.0 to 0.24.0 by @dependabot in #3490
- chore(das): move jobType declaration closer to consts by @cristaloleg in #3477
- chore(share/p2p/discovery): Change success case logging for advertisement to INFO level by @renaynay in #3492
- chore(deps): Bump goreleaser/goreleaser-action from 5 to 6 by @dependabot in #3486
- chore(deps): Bump github.com/BurntSushi/toml from 1.3.2 to 1.4.0 by @dependabot in #3491
- refactor(testing): replace require.TestingT with testing.TB by @walldiss in #3497
New Contributors
- @mastergaurang94 made their first contribution in #3246
- @kien6034 made their first contribution in #3330
- @Erlangshen219 made their first contribution in #3338
- @goofylfg made their first contribution in #3360
- @studystill made their first contribution in #3337
- @hoank101 made their first contribution in #3389
- @cristaloleg made their first contribution in #3463
Full Changelog: v0.13.7...v0.14.0