github celestiaorg/celestia-node v0.7.0
v0.7.0 - Blockspace Race

latest releases: v0.18.0-rc7, v0.16.2-beta.4, v0.16.2-beta.3...
19 months ago

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.Header interface by @tzdybal in #1304
  • refactor!: naming PFD/PayForData to PayForBlob by @distractedm1nd in #1582
  • chore!: bump celestia app v0.12.0-rc2 by @evan-forbes in #1617
  • feat!: add versioning for pubsub topics in fraud, header packages by @vgonkivs in #1620
  • chore(nodebuilder/p2p)!: Upgrade arabica chain ID to arabica-4 by @renaynay in #1696
  • feat!: Move Dockerfile to the root of the project by @jrmanes in #1693
  • chore!: bump arabica-4 genesis hash by @Bidon15 in #1701
  • chore(nodebuidler/p2p)!: Upgrade arabica to arabica-5 by @renaynay in #1725
  • chore!: bump arabica-5 genesis-hash by @Bidon15 in #1735
  • chore(nodebuilder/p2p)!: Upgrade arabica chainID for shrex upgrade by @renaynay in #1760
  • feat(share)!: blocksync re-architecture by @distractedm1nd in #1730
  • chore(nodebuilder/p2p)!: Update genesis hash by @renaynay in #1772
  • feat(nodebuilder/header)!: Implement remainder of header.Module by @renaynay in #1748
  • feat!(p2p): put networkID as the first sub-string in protocolID by @vgonkivs in #1808
  • refactoring!(libs/header): simplify return params in store.Append by @vgonkivs in #1831
  • feat(share/shrex)!: cleanup shrex server side timeouts by @walldiss in #1885

FEATURE

  • feat(share/discovery): Add callback on peers set updates. by @walldiss in #1609
  • feat(share/eds): adding traces to edsstore, write/read eds, and getters by @distractedm1nd in #1594
  • feat: implement broadcasting a data hash through eds-sub by @vgonkivs in #1473
  • feat(share): implements sync CascadeGetter by @Wondertan in #1628
  • feat: using tmjson encoding on core.Header by @distractedm1nd in #1641
  • feat(node | das | libs/header/sync): add total uptime node metrics + totalSampled das metrics + totalSynced sync metrics by @derrandz in #1638
  • Add cel-key utility to Docker images by @jcstein in #1672
  • feat(share/shrex): add Rate limit middleware for shrex servers by @walldiss in #1745
  • feat(share): allow LNs to GetSharesByNamespace and GetEDS over shrex by @distractedm1nd in #1751
  • feat(libhead): introduce peer scoring params for HeaderSub topic by @Wondertan in #1766
  • feat(libfraud): introduce peer scoring params for FraudSub topic by @Wondertan in #1767
  • feat(fraud): String for FraudType by @Wondertan in #1805
  • feat(modp2p): add whitelist for ResourceManager, as eclipse protection by @Wondertan in #1809
  • feat(modp2p): tune GossipSub by @Wondertan in #1756
  • misc(libs/header): verify chainID in incoming headers by @vgonkivs in #1746
  • feat: add libheader exchange metrics by @derrandz in #1794
  • feat(modp2p): Make IP Colocation configurable for pubsub parameters by @derrandz in #1849
  • feat(share/shrex): collect errors from shrex getter by @walldiss in #1884
  • feat(libs/header/p2p): allow server to return all stored headers that correspond to the requested range by @vgonkivs in #1807
  • feat(nodebuilder/p2p): Add blockspacerace by @renaynay in #1904

REFACTOR

  • refactor(share/p2p): ironing out differences between shrex protocols by @distractedm1nd in #1611
  • refactor(header): Extract CoreExchange and CoreListener out of the header root package by @renaynay in #1627
  • refactor(ipld): removing nmt hasher by @distractedm1nd in #1651
  • improvement(libs/header): Check for requested height before fetching it from the store by @vgonkivs in #1706
  • refactor(share): use Relay instead of Subscription for shrexsub and reduce lightavail log verbosity by @distractedm1nd in #1774
  • refactor(nodebuilder): Allow setting keyring backend file with --keyring.backend flag by @renaynay in #1565
  • refactor(share/p2p): Discovery controls ensurePeers lifecycle by @renaynay in #1789
  • improvement(das): use header from header.sub instead of store for recent jobs by @walldiss in #1802
  • refactor(das|share): Cleanup timeouts through sampling stack by @walldiss in #1791
  • perf(share): don't broadcast datahash of empty EDS by @Wondertan in #1814
  • perf(share/full): avoid loading EDS for subsequent availability checks by @Wondertan in #1819
  • improvement(cmd): Auth cmd generates new priv key for jwt if not yet found in node store by @renaynay in #1823
  • refactor(share/p2p/shrexeds): Increase ODS write deadline to block time and add hash to log by @renaynay in #1816
  • refactor(libhead): unify VerifyAdjacent and VerifyNonAdjacent into Verify by @Wondertan in #1777
  • refactoring(header/syncer): request verified range of headers by @vgonkivs in #1749

BUG FIXES

  • fix(header/p2p): fix error string by @vgonkivs in #1618
  • fix(daser) replace catchUpDoneCh channel gracefuly by @walldiss in #1631
  • fix(p2p/pubsub): extend pubsub options by @vgonkivs in #1634
  • fix(core/listener): Only broadcast datahash if core node is not syncing by @renaynay in #1652
  • fix(share/discovery): decouple peer discovery from event processing by @vgonkivs in #1639
  • fix(libs/header/sync): Make ranges.Add thread-safe by @tzdybal in #1649
  • fix: namespaced_data endpoint by @rootulp in #1526
  • fix(header/p2p): add trivial retrying for trustedPeer requested by @Wondertan in #1647
  • fix(share/discovery): add loop to read events from the channel multiple times by @vgonkivs in #1684
  • bugfix(libs/header): fix data race in syncer by @vgonkivs in #1682
  • bugfix(libs/header): store incoming head in syncer by @vgonkivs in #1724
  • fix(das | share): handle ErrByzantine from multierrs when found with context.Canceled by @renaynay in #1762
  • fix(nodebuilder/share): Revert providing shrex.Getter and its associated components to light node by @renaynay in #1770
  • fix(eds): don't commit reconstructed EDS in Retriever by @Wondertan in #1788
  • fix(header): add timeout for the head retrieval by @Wondertan in #1793
  • fix(nodebuilder/share): Only provide necessary components to Bridge by @renaynay in #1778
  • fix(core): Don't store eds if its hash already exists in eds.Store by @renaynay in #1786
  • fix: fix protocolID representation by @vgonkivs in #1810
  • fix(modp2p): pass only resolved addresses to resource manager by @Wondertan in #1811
  • feat(das): Don't sample recent jobs twice by @walldiss in #1815
  • bugfix(libs/header/exchange): do not request an empty range by @vgonkivs in #1818
  • fix(libs/header/syncer): fix bounds during syncing by @vgonkivs in #1850
  • fix(libs/header/p2p): store already fetched headers in case of timeout by @vgonkivs in #1803
  • fix(share/peer-manager): round robin pointer out of range by @walldiss in #1859
  • fix(share/test): TestShareAvailable_DisconnectedFullNodes wait before exit by @walldiss in #1858
  • fix(share/ipld): use parent context for ipld session instead of request context by @walldiss in #1855
  • fix(Makefile): exit if an error appears by @vgonkivs in #1868
  • bugfix(libs/header/p2p): fix range validation in session by @vgonkivs in #1871
  • fix(libs/header/sync): resolve head synchronization issue by @Wondertan in #1878
  • fix(modp2p): change the timecache strategy for gossip sub by @Wondertan in #1873
  • fix(cmd/cel-key): Ensure keyring-backend is actually test by default by @renaynay in #1879
  • fix(das): always set result when worker sampled by @Wondertan in #1882
  • fix(header/p2p): return on context to avoid ugly errors on stop by @Wondertan in #1883
  • fix(share): Fix empty EDS / empty root initialisation by @renaynay in #1897
  • fix(header/sync): fix possible out of bounds panic by @Wondertan in #1892

MISCELLANEOUS

  • chore(nodebuilder/p2p): Add Kaarina to arabica by @renaynay in #1619
  • improvement(das): Add timeout for sampling in DASer by @walldiss in #1615
  • docs: fix minor typos by @omahs in #1636
  • chore(swamp): replace cosmos prefix with celestia in swamp tests by @vgonkivs in #1583
  • feat(share/discovery): Ensure only one instance of EnsurePeers is running by @walldiss in #1642
  • feat: bump arabica chain-id and genesis hash by @Bidon15 in #1645
  • chore(nodebuilder/p2p): Update Arabica kaarina peerID by @Bidon15 in #1650
  • nodebuilder: make proxy constructors private in all modules by @Jpserrat in #1643
  • chore: upgrade to celestia-app 0.12.0-rc4 by @rootulp in #1648
  • deps: temporary replace go-libp2p with the custom fork containing a hotfx by @Wondertan in #1646
  • chore: bump celestia-app to v0.12.0-rc5 by @evan-forbes in #1679
  • fix(Makefile): make install should not invoke build by @Wondertan in #1673
  • chore(deps): bump golangci/golangci-lint-action from 3.3.1 to 3.4.0 by @dependabot in #1655
  • bump(metrics): upgrade otel to the latest version by @vgonkivs in #1537
  • fix: flake in TestNamespaceHasher_CorruptedData by @distractedm1nd in #1686
  • dep(pubsub): upgrade pubsub version by @vgonkivs in #1688
  • chore: bump celestia-app v0.12.0-rc6 by @evan-forbes in #1689
  • chore(go.mod): Depend on upstream libp2p (AKA remove hlibp2p) by @renaynay in #1700
  • chore: bump celestia-app to v0.12.0-rc7 by @evan-forbes in #1723
  • chore(libs/header/p2p): Fixing some debug logs by @renaynay in #1741
  • feat: Use common Docker Build Pipeline by @jrmanes in #1737
  • feat(nodebuilder/gateway): Add warn log if gateway is enabled so users know to use with caution by @renaynay in #1753
  • refactor(share/getters): cleaning up error logs, wrapping cascadegetter with teegetter by @distractedm1nd in #1761
  • refactor: Cleanup old Pipeline by @jrmanes in #1764
  • das: Add timeout log for how long failed sampling routine took by @renaynay in #1783
  • swamp: rename Components to Config by @richardgreg in #1787
  • chore(.github): Add @walldiss to codeowners by @renaynay in #1769
  • refactor(modp2p): Introduce String method for Network and use it everywhere by @Wondertan in #1765
  • deps: bump libp2p and all supporting libs by @Wondertan in #1800
  • chore(modp2p): update blocktime to match core by @distractedm1nd in #1773
  • chore(deps): bump github.com/ipld/go-car from 0.5.0 to 0.6.0 by @dependabot in #1691
  • refactor: Keep only the common CI by @jrmanes in #1750
  • refactor(nodebuilder/tests/swamp): Wait til height 2 to begin filling blocks by @renaynay in #1847
  • chore(deps): bump go.opentelemetry.io/otel from 1.11.2 to 1.13.0 by @dependabot in #1709
  • chore(deps): bump go.opentelemetry.io/otel/trace from 1.11.2 to 1.13.0 by @dependabot in #1710
  • test(share/getters): Fix cascade test by @renaynay in #1820
  • chore: bump app to official v0.12.0 by @evan-forbes in #1843
  • chore(deps): bump golang.org/x/crypto from 0.5.0 to 0.6.0 by @dependabot in #1826
  • chore(deps): bump github.com/hashicorp/go-retryablehttp from 0.7.1-0.20211018174820-ff6d014e72d9 to 0.7.2 by @dependabot in #1827
  • misc(github/workflows): add refactoring label and remove improvement by @vgonkivs in #1872
  • Extend label automation to add external label by @MSevey in #1869
  • .github: add labels to PRs by @MSevey in #1877
  • lint(everything): sort imports by @walldiss in #1806
  • LICENSE: update copyright year and owner by @MSevey in #1887
  • chore(Makefile): shush sort-imports by @Wondertan in #1893
  • Shorten labels to match convential prefixes by @Wondertan in #1894
  • refactoring(libs/header): cleanup config params by @vgonkivs in #1830
  • chore(deps): bump github.com/ipfs/go-merkledag from 0.9.0 to 0.10.0 by @dependabot in #1867
  • chore(deps): bump google.golang.org/grpc from 1.52.0 to 1.53.0 by @dependabot in #1864
  • chore(deps): bump github.com/libp2p/go-libp2p-routing-helpers from 0.6.0 to 0.6.1 by @dependabot in #1866

New Contributors

Full Changelog: v0.6.2...v0.7.0

Don't miss a new celestia-node release

NewReleases is sending notifications on new releases.