3 ms·
> What are some real world apps using CRDTs that have really good experiences? Since people loved my other hot take :) I suppose "good experience" can be subj
by yazaddaruvala 2y ago
> What are some real world apps using CRDTs that have really good experiences?
Since people loved my other hot take :)
I suppose "good experience" can be subjective, but Blockchains are also in practice a distributed trust-less CRDT that is used by a LOT of people.
- With redundant validation, across more than 2 nodes, used to solve for conflict resolution.
- and proof of work/stake used to solve for distributed trust.
Again, academically, maybe not a CRDT because they will not "always converge". Hard forks can happen. However, pragmatically, Blockchains are a CRDT.
- EGreg 2y agoI think blockchains are overkill because they're trying to get a global consensus about every transaction in the world, which is very expensive (with electricity, stake etc.). They're trying to solve the additional problem of preventing "forking" of a history. Whereas if you allow forks then CRDTs are more lightweight. Internet Computer canisters, Merkle DAGs (like IOTA), Hashgraphs and Holochains are probably a better architecture than Blockchains. Having said that, I think Merkle Trees are the future, for minimizing the amount of sync. They let you see exactly what changed, and so on. https://joelgustafson.com/posts/2023-05-04/merklizing-the-key-value-store-for-fun-and-profit https://joelgustafson.com/posts/2023-05-04/merklizing-the-ke... https://github.com/canvasxyz/okra-js https://github.com/canvasxyz/okra-js There's already great software done by Dat (later called Hypercore, now called Holepunch) that has an append-only log based on the SLEEP protocol. That's essentially all you need, in my opinion. They've built everything from key-value databases (hyperbee) to full-scale file systems (hyperdrive) on top of it. Beaker browser has been built on top of it. I mean, merging state-based CRDTs is cool, but you may as well just use operation-based CRDTs with something like Hypercore or the older PouchDB.
- EGreg 2y agoIf anyone is familiar, I would like to ask: How does Okra compare to something like Quadrable: https://github.com/hoytech/quadrable-solidity https://github.com/hoytech/quadrable-solidity
- _vufv 2y agoThe cat runs, eats and has fur. The cat is a dog.
- jffhn 2y ago"Plato had defined Man as an animal, biped and featherless, and was applauded. Diogenes plucked a fowl and brought it into the lecture room with the words, "Here is Plato's man."" (Diogenes Laertius, Lives of Eminent Philosophers)
- josephg 2y agoAuthor here > Again, academically, maybe not a CRDT because they will not "always converge". Hard forks can happen. However, pragmatically, Blockchains are a CRDT. The term "CRDT" is an academic term. So the academic definition matters. They're not "pragmatically" a CRDT because that's simply not how we decide what is and isn't a CRDT. The proper definition is any algorithm, replicated across multiple computers in a network with these 3 properties (at least according to wikipedia): 1. The application can update any replica independently, concurrently and without coordinating with other replicas. 2. An algorithm (itself part of the data type) automatically resolves any inconsistencies that might occur. 3. Although replicas may have different state at any particular point in time, they are guaranteed to eventually converge. Blockchains meet criteria 2 and 3. But in my opinion, property 1 is too much of a stretch. In a blockchain, you can't meaningfully update your local replica independently and without coordination. Sure - you can add local transactions. But blockchains care about global consensus, not the local state. A transaction in a blockchain isn't generally considered to have happened until its been included in a block & witnessed throughout the network. This is in stark contrast to, say, Apple Notes (which uses a CRDT internally). In Notes, I can edit a note on my phone and the note changes. There's no consensus required before my new edits are considered to be legitimate.
- espadrine 2y agoI would say blockchains fit this definition. What I get away from that is that this definition is not restrictive enough. Similarly, a list of operations with Lamport timestamps fits this definition. However, just like the blockchain, it makes no effort to preserve user intent. To go to an extreme, a merge operation which replaces the current content with the empty string, is a CRDT per this definition.