New ask Hacker News story: Ask HN: Is there a descentralized DB with a simple social conflict resolution?
Ask HN: Is there a descentralized DB with a simple social conflict resolution?
4 by madacol | 5 comments on Hacker News.
I've been thinking it might be practical to build a simple decentralized database, where agents just know each other, so conflict resolution does not need to be so complicated and rely more on the social layer. I think this applies to most databases, but I'm particularly thinking of internal enterprise databases, some social networks, any federated database system, and different devices of a single user I'm thinking of this features: 1- Append-only?, full history of operations. Deletes / edits do not remove data, they only modify the "active state" 2- Agents are public keys or similar (DIDs?) 3- Operations are signed, and receivers verify if operation is valid, and sender is allowed 4- Operations form a Merkel-DAG (similar to git, they link to the tips of current "active state", like a commit/merge in git) So far I think I've basically described [OrbitDB](https://ift.tt/h6qYDJx) Consensus is where things get real hard, [OrbitDb seems to use a last-write-wins CRDT](https://ift.tt/tlkvrRx), and although I don't know the details of orbitDb, I think for many simple use-cases, conflicts can just be resolved on the social layer. But I think we need to provide agents with good tools to resolve conflicts I'll try my best here with some ideas: When merging, we can order operations by their timestamp, if operations enter conflict, raise it to the conflicting agents, or someone with permission to solve them. If an agent makes public an operation that forks its own history, mark agent as malicious or compromised, alert other agents, this needs resolution on the social layer, you have proof of misconduct, an agent has signed diverging operations Any operation becomes fully settled if you have proof that all agents of your system have referenced it directly or indirectly through newer operations. Timestamps can be upgraded by using opentimestamps.org to get proof that an operation existed at time X (prevents creation of operations in hindsight). Though this does not prove operation has been made public
4 by madacol | 5 comments on Hacker News.
I've been thinking it might be practical to build a simple decentralized database, where agents just know each other, so conflict resolution does not need to be so complicated and rely more on the social layer. I think this applies to most databases, but I'm particularly thinking of internal enterprise databases, some social networks, any federated database system, and different devices of a single user I'm thinking of this features: 1- Append-only?, full history of operations. Deletes / edits do not remove data, they only modify the "active state" 2- Agents are public keys or similar (DIDs?) 3- Operations are signed, and receivers verify if operation is valid, and sender is allowed 4- Operations form a Merkel-DAG (similar to git, they link to the tips of current "active state", like a commit/merge in git) So far I think I've basically described [OrbitDB](https://ift.tt/h6qYDJx) Consensus is where things get real hard, [OrbitDb seems to use a last-write-wins CRDT](https://ift.tt/tlkvrRx), and although I don't know the details of orbitDb, I think for many simple use-cases, conflicts can just be resolved on the social layer. But I think we need to provide agents with good tools to resolve conflicts I'll try my best here with some ideas: When merging, we can order operations by their timestamp, if operations enter conflict, raise it to the conflicting agents, or someone with permission to solve them. If an agent makes public an operation that forks its own history, mark agent as malicious or compromised, alert other agents, this needs resolution on the social layer, you have proof of misconduct, an agent has signed diverging operations Any operation becomes fully settled if you have proof that all agents of your system have referenced it directly or indirectly through newer operations. Timestamps can be upgraded by using opentimestamps.org to get proof that an operation existed at time X (prevents creation of operations in hindsight). Though this does not prove operation has been made public
Comments
Post a Comment