v0.2.0 | 2022-02-23
The second minor release focuses on the stability and robustness of existing features via refactorings, mainly for
headers synchronization and storing, while fixing the DA network segregation by providing bootstrap peers, allowing you to
run a Light Node with zero effort. The release also includes a few breaking changes.
Highlights
Hardcoded bootstrap peers
Bootstrappers are necessary for peers to connect to when they come online in order to be part of the DA p2p network.
Additionally, they serve block headers and shares for everyone, so any other node joining the network can use them to
synchronize headers and perform Data Availability Sampling. Now it's unnecessary to maintain your own Bridge(previously
Full) Node to run a Light Node, as now it will rely on bootstrappers by default.
Zero effort Light Node
Now becoming a valuable node that contributes to the security of the of Celestia network is only two commands away. Simply run celestia light init
followed by celestia light start
, and you are good to go. Still, you can keep running your own Bridge Node as the trusted peer.
Test Swamp
The release comes with a new internal testing library for Celestia Node called Test Swamp, aimed to provide an
ergonomic framework for integration tests for celestia-node
. It allows simulating a network on which we can test various
high-level scenarios.
Header Synchronization
It was almost rewritten from scratch with a better design which:
- Tolerates network disconnections
- Tolerates primary network interface changes
- both above are useful for Light Node running on laptops or mobile phones
- Optimizes bandwidth and IO usage, subsequently speeding up the synchronization time for ~20%
- Eliminates long-standing issue with header duplicates flooding the network
- Fixes the most common issue community has faced - constant logging of invalid headers error.
Renamed Full Node
Full Node is now called Bridge Node to emphasize its purpose of bridging the core consensus and the halo DA networks, both
powering the Celestia project.
Spoiler: Next release will come with a reincarnation of the Full Node type, which operates only over the DA
celestia-node
network
Full node operators after the update should now migrate to Bridge Node. This migration is trivial:
- Rename
.celestia-full
to.celestia-bridge
- Change scripts from
celestia full
tocelestia bridge
Trusted Peers
trusted-peer
is nowtrusted-peers
as the flag now allows passing multiple trusted peers.Config.Services.TrustedPeer
is nowConfig.Services.TrustedPeers
BREAKING CHANGES
- node: Light node can be initialised with multiple trusted peers #455 @vgonkivs
- chore: rename Repository to Store #296 @Wondertan
- chore: rename Full node to Bridge node #294 @Wondertan
- node: remove InitWith #291 @Wondertan
FEATURES
- feat(cmd/cel-shed): new header category and store-init cmd #462 @Wondertan
- feat(cmd): cli flag to enable http/pprof handler to capture profiles #463 @Wondertan
- service/header: SyncState #397 @Wondertan
- feat(service/header): HeightSub #428 @Wondertan
- params: Define Network Types #346 @Wondertan
- feat(cmd): give a birth to cel-shed and p2p key utilities #281 @Wondertan
- feat(cmd|node): MutualPeers Node option and CLI flag #280 @Wondertan
- node: enhance DI allowing overriding of dependencies @Wondertan
- ci: create docker build GH action @jbowen93
- swamp: initial structure of the tool @Bidon15
IMPROVEMENTS
- feat(node): add go-watchdog to curb OOMs #466 @Wondertan
- perf(node/store): fine-tune Badgerdb params #465 @Wondertan
- feat(service/header): update Store.Append to return amount of applied/valid headers #434 @Wondertan
- refactor(service/header): rework on disk writing strategy of the Store #431 @Wondertan
- refactor(service/header): extract store initialization from Syncer #430 @Wondertan
- header: hardening syncing logic #334 @Wondertan
- feat(params): add bootstrappers #399 @Wondertan
- service/header: remove start/stop from P2PExchange @Bidon15
- service/share: Implement
FullAvailability
@renaynay - services/header: Refactor
HeaderService
to be responsible for broadcasting newExtendedHeader
s to the gossipsub network @renaynay - cmd: introduce Env - an Environment for CLI commands #313 @Wondertan
- node: Adding WithHost options to settings section #301 @Bidon15
- node: Adding WithCoreClient option #305 @Bidon15
- service/header: Refactor
HeaderService
to only manage its sub-services' lifecycles #317 @renaynay - docker: Created
docker/
dir withDockerfile
andentrypoint.sh
script @jbowen93 - chore(share): handle rows concurrently in GetSharesByNamespace #241 @vgonkivs
- ci: adding data race detector action @Bidon15
- node: add the cmdnode.HeadersFlags() to the Bridge Node's init and start commands #390 @jbowen93
BUG FIXES
- fix(service/header): lazily load Store head #458 @Wondertan
- fix(service/header): allow some clock drift during verification #435 @Wondertan
- service/header: fix ExtendedHeader message duplicates on the network #409 @Wondertan
- fix(header/service): #339 race @Wondertan
- core: Properly fetch Validators from Core and two more fixes #328 @Wondertan
- header: Added missing
err
value in ErrorW logging calls @jbowen93 - service/block, node/p2p: Fix race conditions in TestExtendedHeaderBroadcast and TestFull_P2P_Streams. @jenyasd209
- ci: increase tokens ratio for dupl to fix false positive scenarios @Bidon15
- node: Wrap datastore with mutex to prevent data race @Bidon15
- ci: update Docker entrypoint.sh to use new
store.path
flag name @jbowen93 - docker: update docker/entrypoint.sh to use new
node.store
flag replacingstore.path
#390 @jbowen93