HistorySync Hard Fork: Upgrade Your Node by Feb 15

Hi @everyone , we wanted to inform that Ceramic’s first ever hard-fork is approaching.

The HistorySync release changes the way parts of the anchoring system work to enable the upcoming release of ComposeDB. Specifically these changes allow nodes to discover and sync existing data for a given data model from the other nodes on the network.

This means that all Ceramic nodes operating on the Ceramic mainnet must be upgraded to running at least version 2.18.0 of the @ceramicnetwork/cli package by February 15, 2023.

Nodes that have not upgraded by that time will no longer be able to verify anchor commits from the network, which will lead to all writes eventually becoming corrupted and lost due to CACAO timeout errors. To reiterate, nodes that have not upgraded by February 15, 2023 will begin to have all of their writes fail. If you are operating a Ceramic mainnet node, please let us know ASAP if you have any concerns about upgrading your Ceramic node by February 15, 2023.

Protocol Changes

There are 2 main changes we are making to the way anchoring (timestamping) works:

  1. Transactions to put anchor tree merkle roots onto Ethereum will no longer be simple regular transactions. Instead there will be an anchor smart contract and we will call an “anchor” function that causes the smart contract to emit an “anchor event” that ethereum RPC clients can subscribe to. This will make it easier for Ceramic nodes to discover when anchors happen and to sync the history of anchor events.
  2. The second change is designed to make the system more resilient to block reorgs on Ethereum. Ceramic anchor commits will no longer include the specific blockNumber and blockTimestamp that the anchor event was included in, as it’s possible the transaction could later be reorged into a new block. Instead, Ceramic will only use the transaction hash and will look up which blockNumber the transaction was included in from Ethereum directly.

Both of these changes require changes to the js-ceramic node implementation so that the node can still know how to verify and apply anchor commits with the new behavior. Nodes that haven’t upgraded will have failures when applying anchor commits. Data update commits that fail to be anchored within the CACAO timeout period will then start failing to apply as the node will not be able to verify that the update was created during the time when the CACAO (the capability that gave the app permission to write into the stream on behalf of the user) was valid. This can wind up corrupting the state of streams and invalidating writes that seemed to be applied successfully at first, but then are later invalidated when their CACAO times out.

3 Likes

Bumping this up to make sure that everyone see the message above. It’s important that all Ceramic nodes operating on the Ceramic mainnet are upgraded to running at least version 2.18.0 of the @ceramicnetwork/cli package by February 15, 2023.

Attention @everyone!

One last reminder about the Ceramic’s first-ever hard-fork that is approaching very soon. Ceramic nodes operating on the Ceramic mainnet must be upgraded to running at least version 2.18.0 of the @ceramicnetwork/cli package by February 15, 2023, 5PM UTC. Failing to update in time will lead to corrupted writes. You can find more details about the hard-fork in our latest blogpost: Hard Fork: Upgrade Your Node by Feb 15

1 Like

Related to my post above, just wanted to make sure that it’s emphasised enough that as part of the protocol change, Ceramic’s testnet Clay will be wiped of existing data models. Leading up to ComposeDB’s Mainnet launch on February 22, we expect one more Clay wipe as well. For those that are currently building on ComposeDB - after the data models are wiped out, you will be able to re-create them by following the usual workflow - from graphql model definition to creating and publishing composites.