Some weeks ago we finished
go-ds-crdt as the new datastore backend for the IPFS Cluster shared state. Since them we’ve been polishing it a bit.
go-ds-crdt provides a distributed key-value store using CRDTs and implements the Datastore interface. The idea is that any datastore can now be replaced by a replicated datastore.
go-ds-crdt is agnostic to IPFS/libp2p and just needs a way to broadcast updates to all the replicas and to fetch CID-addressed (IPLD) blocks. Of course, it can work with libp2p PubSub for broadcasting and with IPFS for announcing / retrieving blocks (or IPFS-lite).
Although I have not used OrbitDB personally, it is based on the same principles, except so far we did not have anything like this in Go-land.