This release is the culmination of a quarter of work from the celestia-node team. It contains a massive, breaking re-architecture of blocksync, among many other improvements and breaking changes.
This release also introduces the blockspacerace testnet. It is only compatible with arabica and blockspacerace at the moment.
Please refer to the changelog for a comprehensive list of new features and refactorings.
What's Changed
BREAKING
- feat(header)!: introduce
header.Headerinterface by @tzdybal in https://github.com/celestiaorg/celestia-node/pull/1304 - refactor!: naming PFD/PayForData to PayForBlob by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1582
- chore!: bump celestia app v0.12.0-rc2 by @evan-forbes in https://github.com/celestiaorg/celestia-node/pull/1617
- feat!: add versioning for pubsub topics in fraud, header packages by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1620
- chore(nodebuilder/p2p)!: Upgrade arabica chain ID to
arabica-4by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1696 - feat!: Move Dockerfile to the root of the project by @jrmanes in https://github.com/celestiaorg/celestia-node/pull/1693
- chore!: bump arabica-4 genesis hash by @Bidon15 in https://github.com/celestiaorg/celestia-node/pull/1701
- chore(nodebuidler/p2p)!: Upgrade arabica to
arabica-5by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1725 - chore!: bump arabica-5 genesis-hash by @Bidon15 in https://github.com/celestiaorg/celestia-node/pull/1735
- chore(nodebuilder/p2p)!: Upgrade arabica chainID for shrex upgrade by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1760
- feat(share)!: blocksync re-architecture by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1730
- chore(nodebuilder/p2p)!: Update genesis hash by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1772
- feat(nodebuilder/header)!: Implement remainder of
header.Moduleby @renaynay in https://github.com/celestiaorg/celestia-node/pull/1748 - feat!(p2p): put networkID as the first sub-string in protocolID by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1808
- refactoring!(libs/header): simplify return params in store.Append by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1831
- feat(share/shrex)!: cleanup shrex server side timeouts by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1885
FEATURE
- feat(share/discovery): Add callback on peers set updates. by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1609
- feat(share/eds): adding traces to edsstore, write/read eds, and getters by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1594
- feat: implement broadcasting a data hash through eds-sub by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1473
- feat(share): implements sync CascadeGetter by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1628
- feat: using tmjson encoding on
core.Headerby @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1641 - feat(node | das | libs/header/sync): add total uptime node metrics + totalSampled das metrics + totalSynced sync metrics by @derrandz in https://github.com/celestiaorg/celestia-node/pull/1638
- Add cel-key utility to Docker images by @jcstein in https://github.com/celestiaorg/celestia-node/pull/1672
- feat(share/shrex): add Rate limit middleware for shrex servers by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1745
- feat(share): allow LNs to GetSharesByNamespace and GetEDS over shrex by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1751
- feat(libhead): introduce peer scoring params for HeaderSub topic by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1766
- feat(libfraud): introduce peer scoring params for FraudSub topic by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1767
- feat(fraud): String for FraudType by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1805
- feat(modp2p): add whitelist for ResourceManager, as eclipse protection by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1809
- feat(modp2p): tune GossipSub by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1756
- misc(libs/header): verify chainID in incoming headers by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1746
- feat: add libheader exchange metrics by @derrandz in https://github.com/celestiaorg/celestia-node/pull/1794
- feat(modp2p): Make IP Colocation configurable for pubsub parameters by @derrandz in https://github.com/celestiaorg/celestia-node/pull/1849
- feat(share/shrex): collect errors from shrex getter by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1884
- feat(libs/header/p2p): allow server to return all stored headers that correspond to the requested range by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1807
- feat(nodebuilder/p2p): Add
blockspaceraceby @renaynay in https://github.com/celestiaorg/celestia-node/pull/1904
REFACTOR
- refactor(share/p2p): ironing out differences between shrex protocols by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1611
- refactor(header): Extract
CoreExchangeandCoreListenerout of the header root package by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1627 - refactor(ipld): removing nmt hasher by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1651
- improvement(libs/header): Check for requested height before fetching it from the store by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1706
- refactor(share): use Relay instead of Subscription for shrexsub and reduce lightavail log verbosity by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1774
- refactor(nodebuilder): Allow setting keyring backend
filewith--keyring.backendflag by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1565 - refactor(share/p2p): Discovery controls
ensurePeerslifecycle by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1789 - improvement(das): use header from header.sub instead of store for recent jobs by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1802
- refactor(das|share): Cleanup timeouts through sampling stack by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1791
- perf(share): don't broadcast datahash of empty EDS by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1814
- perf(share/full): avoid loading EDS for subsequent availability checks by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1819
- improvement(cmd): Auth cmd generates new priv key for jwt if not yet found in node store by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1823
- refactor(share/p2p/shrexeds): Increase ODS write deadline to block time and add hash to log by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1816
- refactor(libhead): unify VerifyAdjacent and VerifyNonAdjacent into Verify by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1777
- refactoring(header/syncer): request verified range of headers by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1749
BUG FIXES
- fix(header/p2p): fix error string by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1618
- fix(daser) replace catchUpDoneCh channel gracefuly by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1631
- fix(p2p/pubsub): extend pubsub options by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1634
- fix(core/listener): Only broadcast datahash if core node is not syncing by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1652
- fix(share/discovery): decouple peer discovery from event processing by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1639
- fix(libs/header/sync): Make ranges.Add thread-safe by @tzdybal in https://github.com/celestiaorg/celestia-node/pull/1649
- fix:
namespaced_dataendpoint by @rootulp in https://github.com/celestiaorg/celestia-node/pull/1526 - fix(header/p2p): add trivial retrying for trustedPeer requested by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1647
- fix(share/discovery): add loop to read events from the channel multiple times by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1684
- bugfix(libs/header): fix data race in syncer by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1682
- bugfix(libs/header): store incoming head in syncer by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1724
- fix(das | share): handle
ErrByzantinefrommultierrs when found withcontext.Canceledby @renaynay in https://github.com/celestiaorg/celestia-node/pull/1762 - fix(nodebuilder/share): Revert providing
shrex.Getterand its associated components to light node by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1770 - fix(eds): don't commit reconstructed EDS in Retriever by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1788
- fix(header): add timeout for the head retrieval by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1793
- fix(nodebuilder/share): Only provide necessary components to Bridge by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1778
- fix(core): Don't store eds if its hash already exists in eds.Store by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1786
- fix: fix protocolID representation by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1810
- fix(modp2p): pass only resolved addresses to resource manager by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1811
- feat(das): Don't sample recent jobs twice by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1815
- bugfix(libs/header/exchange): do not request an empty range by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1818
- fix(libs/header/syncer): fix bounds during syncing by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1850
- fix(libs/header/p2p): store already fetched headers in case of timeout by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1803
- fix(share/peer-manager): round robin pointer out of range by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1859
- fix(share/test): TestShareAvailable_DisconnectedFullNodes wait before exit by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1858
- fix(share/ipld): use parent context for ipld session instead of request context by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1855
- fix(Makefile): exit if an error appears by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1868
- bugfix(libs/header/p2p): fix range validation in session by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1871
- fix(libs/header/sync): resolve head synchronization issue by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1878
- fix(modp2p): change the timecache strategy for gossip sub by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1873
- fix(cmd/cel-key): Ensure keyring-backend is actually
testby default by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1879 - fix(das): always set result when worker sampled by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1882
- fix(header/p2p): return on context to avoid ugly errors on stop by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1883
- fix(share): Fix empty EDS / empty root initialisation by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1897
- fix(header/sync): fix possible out of bounds panic by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1892
MISCELLANEOUS
- chore(nodebuilder/p2p): Add Kaarina to arabica by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1619
- improvement(das): Add timeout for sampling in DASer by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1615
- docs: fix minor typos by @omahs in https://github.com/celestiaorg/celestia-node/pull/1636
- chore(swamp): replace cosmos prefix with celestia in swamp tests by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1583
- feat(share/discovery): Ensure only one instance of EnsurePeers is running by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1642
- feat: bump arabica chain-id and genesis hash by @Bidon15 in https://github.com/celestiaorg/celestia-node/pull/1645
- chore(nodebuilder/p2p): Update Arabica kaarina peerID by @Bidon15 in https://github.com/celestiaorg/celestia-node/pull/1650
- nodebuilder: make proxy constructors private in all modules by @Jpserrat in https://github.com/celestiaorg/celestia-node/pull/1643
- chore: upgrade to celestia-app 0.12.0-rc4 by @rootulp in https://github.com/celestiaorg/celestia-node/pull/1648
- deps: temporary replace go-libp2p with the custom fork containing a hotfx by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1646
- chore: bump celestia-app to v0.12.0-rc5 by @evan-forbes in https://github.com/celestiaorg/celestia-node/pull/1679
- fix(Makefile): make install should not invoke build by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1673
- chore(deps): bump golangci/golangci-lint-action from 3.3.1 to 3.4.0 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1655
- bump(metrics): upgrade otel to the latest version by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1537
- fix: flake in TestNamespaceHasher_CorruptedData by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1686
- dep(pubsub): upgrade pubsub version by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1688
- chore: bump celestia-app v0.12.0-rc6 by @evan-forbes in https://github.com/celestiaorg/celestia-node/pull/1689
- chore(go.mod): Depend on upstream libp2p (AKA remove hlibp2p) by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1700
- chore: bump celestia-app to v0.12.0-rc7 by @evan-forbes in https://github.com/celestiaorg/celestia-node/pull/1723
- chore(libs/header/p2p): Fixing some debug logs by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1741
- feat: Use common Docker Build Pipeline by @jrmanes in https://github.com/celestiaorg/celestia-node/pull/1737
- feat(nodebuilder/gateway): Add warn log if gateway is enabled so users know to use with caution by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1753
- refactor(share/getters): cleaning up error logs, wrapping cascadegetter with teegetter by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1761
- refactor: Cleanup old Pipeline by @jrmanes in https://github.com/celestiaorg/celestia-node/pull/1764
- das: Add timeout log for how long failed sampling routine took by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1783
- swamp: rename Components to Config by @richardgreg in https://github.com/celestiaorg/celestia-node/pull/1787
- chore(.github): Add @walldiss to codeowners by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1769
- refactor(modp2p): Introduce String method for Network and use it everywhere by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1765
- deps: bump libp2p and all supporting libs by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1800
- chore(modp2p): update blocktime to match core by @distractedm1nd in https://github.com/celestiaorg/celestia-node/pull/1773
- chore(deps): bump github.com/ipld/go-car from 0.5.0 to 0.6.0 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1691
- refactor: Keep only the common CI by @jrmanes in https://github.com/celestiaorg/celestia-node/pull/1750
- refactor(nodebuilder/tests/swamp): Wait til height 2 to begin filling blocks by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1847
- chore(deps): bump go.opentelemetry.io/otel from 1.11.2 to 1.13.0 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1709
- chore(deps): bump go.opentelemetry.io/otel/trace from 1.11.2 to 1.13.0 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1710
- test(share/getters): Fix cascade test by @renaynay in https://github.com/celestiaorg/celestia-node/pull/1820
- chore: bump app to official v0.12.0 by @evan-forbes in https://github.com/celestiaorg/celestia-node/pull/1843
- chore(deps): bump golang.org/x/crypto from 0.5.0 to 0.6.0 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1826
- chore(deps): bump github.com/hashicorp/go-retryablehttp from 0.7.1-0.20211018174820-ff6d014e72d9 to 0.7.2 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1827
- misc(github/workflows): add refactoring label and remove improvement by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1872
- Extend label automation to add external label by @MSevey in https://github.com/celestiaorg/celestia-node/pull/1869
- .github: add labels to PRs by @MSevey in https://github.com/celestiaorg/celestia-node/pull/1877
- lint(everything): sort imports by @walldiss in https://github.com/celestiaorg/celestia-node/pull/1806
- LICENSE: update copyright year and owner by @MSevey in https://github.com/celestiaorg/celestia-node/pull/1887
- chore(Makefile): shush sort-imports by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1893
- Shorten labels to match convential prefixes by @Wondertan in https://github.com/celestiaorg/celestia-node/pull/1894
- refactoring(libs/header): cleanup config params by @vgonkivs in https://github.com/celestiaorg/celestia-node/pull/1830
- chore(deps): bump github.com/ipfs/go-merkledag from 0.9.0 to 0.10.0 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1867
- chore(deps): bump google.golang.org/grpc from 1.52.0 to 1.53.0 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1864
- chore(deps): bump github.com/libp2p/go-libp2p-routing-helpers from 0.6.0 to 0.6.1 by @dependabot in https://github.com/celestiaorg/celestia-node/pull/1866
New Contributors
- @omahs made their first contribution in https://github.com/celestiaorg/celestia-node/pull/1636
- @Jpserrat made their first contribution in https://github.com/celestiaorg/celestia-node/pull/1643
- @jrmanes made their first contribution in https://github.com/celestiaorg/celestia-node/pull/1693
- @richardgreg made their first contribution in https://github.com/celestiaorg/celestia-node/pull/1787
Full Changelog: https://github.com/celestiaorg/celestia-node/compare/v0.6.2...v0.7.0