Skip to content

v0.20.2

Compare
Choose a tag to compare
@Wondertan Wondertan released this 20 Nov 10:12
· 8 commits to main since this release
b24d47f

NOTE: v0.18 and v0.19 are skipped for mainnet

Hey everyone, this is quite a mammoth of a release, so please hang tight. We have two major changes packaged in this release:

  • Shwap (protocol-breaking)
  • Celestia v3 compatibility (API-breaking)

The migration period for this release is quite tight (a bit longer than 2 weeks), so we urge all node operators to upgrade to this version and re-sync against the network by December 2nd.

As this release is API-breaking, we also urge all integrations to migrate to this new version by December 2nd. (The list of API breaks can be found below).

Shwap

This release features Shwap(CIP-19), a protocol-breaking feature that brings massive optimizations to disk usage(16x) and data access latencies. The new protocol is not backwards compatible with the currently deployed protocol and software.

Both protocols will run side-by-side for about a two-week transition period, from November 20 to December 2. During this period, node operators should migrate to the new version. At the end of the period, posted historical and recent data will no longer be available on the old protocol.

Migration Notes

Migration requires resyncing the node from scratch, as it now contains a new storage format.

Migration Steps over the old node:

  • Remove old data:
    • In home directory(default .celestia-<type>) => rm -rf inverted_index index data transients blocks
    • Keep keys directory to preserve peer and chain identity keys in place
  • Config updates
    • If defaults were in use, remove the old config and re-init in the next step
    • If you want to preserve the old config - move BlockstoreCacheSize entry from [Share.EDSStoreParams] section to just [Share]and remove GCIntervalRoutingTableRefreshPeriod
  • Re-init node for the Mocha p2p network
    • celestia init
  • Start the node and monitor syncing
    • celestia start

If the old node has to be kept running - initiate and start the new version in a different directory:

  • celestia init --node.store <new_path>
  • celestia start --node.store <new_path>

Celestia V3 compatibility

This release contains an upgrade to the celestia-app version (to v3). v3 will only be live on the mainnet in mid-December, but this release contains the requirements for compatibility with the upgrade.

Notable API breaks include:

  • simplification of the blob share and state modules via the deduplication of types (via [#3782](#3782))
  • share module now takes height instead of the full ExtendedHeader (via [#3870](#3870))

Comprehensive list of API breaks:

  • GetSharesByNamespace renamed to GetNamespaceData
  • the share module returns shwap.NamespaceData for the GetNamespaceData method
  • the share module now takes height (uint64) instead of the full ExtendedHeader for all methods
  • both the share and blob modules now use the go-square v2 libshare.Namespace (from https://github.com/celestiaorg/go-square/tree/v2.0.0) instead of the old share.Namespace for all methods
  • the state module now uses the go-square v2 libshare.Blob type (from https://github.com/celestiaorg/go-square/tree/v2.0.0) instead of the old one from the state module
  • the blob package now embeds the new go-square v2 libshare.Blob type mentioned above in the blob.Blob struct instead of the old v1 type.

Miscellaneous

What to look out for in the following releases:

  • the -experimental-pruning flag will soon be deprecated in favour of pruning becoming the default mode for all node types, requiring users to pass -archival to retain block history beyond the sampling window
  • the API gateway will be deprecated

What's Changed

Features

Fixes

Refactors

  • refactor(shwap): rename share.root to axisRoots by @walldiss in #3583
  • refactor(shwap): revert DataRoot -> DataHash by @Wondertan in #3585
  • refactor(shwap): Rename remaining dataroot references by @walldiss in #3607
  • refactor!(shwap/store): decouple Q1Q4 and ODS files by @Wondertan in #3643
  • refactor(shwap): Remove new_eds folder by @walldiss in #3738
  • refactor(share/eds): various accessor testing suite improvements by @walldiss in #3737
  • refactor(store): write actual share size to ods by @walldiss in #3863
  • refactoring!(share): migrating to go-square v2 types by @vgonkivs in #3782
  • refactor(nodebuilder): add archival flag by @walldiss in #3868
  • refactor(api): add gateway deprecation notice by @walldiss in #3869
  • !refactor(api/share): use height in share module by @walldiss in #3870
  • refactor(share/availability): simplify light availability by @walldiss in #3895
  • !refactor: rename GetSharesByNamespace to GetNamespaceData by @cristaloleg in #3902
  • refactor: remove blob size check by @rootulp in #3934
  • refactor(share/availability): Move window and constants to share/availability pkg by @renaynay in #3906

Miscellaneous

New Contributors

Full Changelog: v0.17.2...v0.20.2