v0.3.0
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
PayForData
transaction - 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
GetSharesByNamespace
resulting 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-key
utility into separate binary - refactor!(cmd|node): Refactor core flags
FEATURES
- feat(node): Introduce full node type
- feat(service/state): Introduce
StateService
andCoreAccessor
- 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_pfd
endpoint - 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
DAGService
toBlockService
- 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.WithValue
instead 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
GetSharesByNamespace
ordering - fix(ipld): Concurrent
GetShares
to 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
doRequest
method - 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 #479
- @toanngosy made their first contribution in #496
- @adlerjohn made their first contribution in #605
- @liamsi made their first contribution in #607
- @0xyicheng made their first contribution in #767
- @distractedm1nd made their first contribution in #852
- @iofq made their first contribution in #769
Full Changelog: https://github.com/celestiaorg/celestia-node/compare/v0.2.0...v0.3.0## v0.3.0 | 2022-09-06