v0.3.0 | 2022-09-06
Arabica Testnet Release
It has been half a year since our last minor release, and, as a result, our third minor release of celestia-node introduces a large range of new and hardened functionality. Some key highlights can be found below:
Highlights
- Re-introduction of full node type
- Operates solely on the p2p network and independently from the Core network
- Able to sync and reconstruct block data from light nodes only
- Secures light node by generating and broadcasting fraud proofs
- Light nodes discover Full Nodes over p2p network via DHT
- Implementation of state interaction via a celestia-core connection (ability to read and verify balances, as well as submit transactions to the celestia network), specifically the ability to submit a
PayForDatatransaction - Data availability sampling (DASing) over headers in the past and local caching of successful sampling results
- Introduction of FraudService
- Alpha node API
- Key management utility via
cel-key - Introduction of telemetry via opentelemetry
- Parallelized
GetSharesByNamespaceresulting in faster application data retrieval - Removes Core Node embedding for Bridge Node
Migration
The Node's Store default directory path has changed, and If you have been running any of the past two release candidates against mamaki and want to retain your data, please run the Node with --node.store ~/.celestia-<node_type> flag or migrate your store from $HOME/.celestia-<node_type> to $HOME/.celestia-<node_type>-mamaki.
BREAKING CHANGES
- feat!(header/p2p/exchange): Upgrade and reformat header exchange protocol ID
- refactor!(cmd/cel-key): Extract
cel-keyutility into separate binary - refactor!(cmd|node): Refactor core flags
FEATURES
- feat(node): Introduce full node type
- feat(service/state): Introduce
StateServiceandCoreAccessor - feat(das): Implement DASing of past headers
- feat(fraud): Implement Bad Encoding Fraud Proofs (BEFPs)
- feat(ipld|shares): Rework data retrieval
- feat(service/state): Add
/submit_pfdendpoint - feat(service/rpc): Add rpc service to gather all available endpoints | alpha API
- feat(node/state): Automatic key generation if no key found in keystore
- feat(service/share): Implement
CacheAvailability - feat(service/share): Implement full node discovery
- feat(fraud): Implement fraud service
- feat(node): Integrate fraud service
- feat(fraud): Implement fraud store
- feat(das): Implement
DASState - feat(cmd): Integration of OpenTelemetry with OTLP exporter
- feat(service/state): Implement balance verification against
AppHash - feat(service/state): Transaction proxy for staking module tx types
- feat(fraud): implement fraud sync
IMPROVEMENTS
- refactor(service/share): No error if namespace not found in
GetSharesByNamespace - refactor(header): Move header sub-services to different directories
- test(service/share): Add full node reconstruction tests
- dep(ipld): Move from
DAGServicetoBlockService - refactor(ipld): Rework retriever
- refactor(fraud): Extend proof structure
- feat(service/share): Handle disconnection of discovered peer
- feat(ipld): Concurrent
GetSharesByNamespace - refactor(cmd): Use
context.WithValueinstead of custom Env implementation - feat(cmd): Provide ability to specify network to user
- feat|refactor(header/sync): network head determination
- params: Switch default network to arabica
BUG FIXES
- fix(service/header): Unlock heightSub lock on rare cases
- fix(core): Prevent spamming of old headers during bridge node sync
- fix(service/share): Fix
GetSharesByNamespaceordering - fix(ipld): Concurrent
GetSharesto prevent blocking of share fetching in case of one unavailable share - fix(ipld): Fix race in rare case when Retriever fetches from both row and col
- fix(ipld): Rely on rsmt2d.Codec constructor to avoid races
- fix(node): Invoke function to ensure empty block data is stored at least once
- fix(das): Return from sampling routine upon failure
- fix(das): Fix checkpoint in catchUp manager
- fix(service/header): Fix header store design issues with
Batch - fix(ipld): Re-enable re-importing of rsmt2d.ExtendedDataSquare
- fix(ipld): Fix races in
doRequestmethod - fix(service/share): Protect datastore autobatch with a lock
- fix(node/p2p): Add condition to restore routing table refresh period
- fix(node): Change applied Availability for bridge node
- fix(fraud): Blocklist peer if sent invalid fraud proof
MISCELLANEOUS
- refactor(core): Remove embedded core node option
- chore(ipld|shares): cleanup Share types, global default rsmt2d codec, various cleanups
- refactor(header): Exchange interface implements Getter
- feat(service/share): Make discovery constants configurable
New Contributors
- @rootulp made their first contribution in https://github.com/celestiaorg/celestia-node/pull/479
- @toanngosy made their first contribution in https://github.com/celestiaorg/celestia-node/pull/496
- @adlerjohn made their first contribution in https://github.com/celestiaorg/celestia-node/pull/605
- @liamsi made their first contribution in https://github.com/celestiaorg/celestia-node/pull/607
- @0xyicheng made their first contribution in https://github.com/celestiaorg/celestia-node/pull/767
- @distractedm1nd made their first contribution in https://github.com/celestiaorg/celestia-node/pull/852
- @iofq made their first contribution in https://github.com/celestiaorg/celestia-node/pull/769
Full Changelog: https://github.com/celestiaorg/celestia-node/compare/v0.2.0...v0.3.0## v0.3.0 | 2022-09-06