# "*": "https://raw.githubusercontent.com/wefindx/schema/master/method/oo-item.yaml" # "base:title": "0oo - Event sourcing and CRDTs as data storage" "og:title": "Event sourcing and CRDTs as data storage" "og:description": "I'm not particularly fond of the block chain. It functions as a distributed ledger but I think there is a simpler combination of technologies that provides a slightly different architecture for general purpose data storage. One problem with block chain is the centralisation of miners and the proof of work is inefficient. If you disagree with the network, you have to be a miner to change the course of transactions on the network. There are no chargebacks on Bitcoin. You cannot get money transferred to the wrong address or reverse stolen money. You cannot 'disagree' or 'vote against' other actors …" "og:image": "https://avatars0.githubusercontent.com/u/28134655" "og:url": "/method/63001/" "base:css": "/static/css/bootstrap.min.9c25540d6272.css" "base:extra-css": "/static/css/base.57997aeac1df.css" "base:favicon": "/static/favicon.acaa334f0136.ico" "base:body_class": "" "layout:logo": "/static/0oo.8d2a8bbef612.svg" "layout:index": "/" "layout:menu": "/menu/" "layout:categories": "/intents/" "layout:ideas": "/methods/" "layout:projects": "/projects/" "layout:users": "/users/" "layout:about": "/about/" "layout:help": "/help/" "layout:bug_report": "https://github.com/wefindx/0oo" "layout:login": "/accounts/login/" "layout:light-off": "/darken/?darken=true" "layout:set-monolingual": "/mulang/?mulang=false" "layout:lang": "Language" "layout:set-language-post-action": "/i18n/setlang/" "layout:csrf-token": "BKXQZTpzkDukqDDDxxRZ9fFrmSgAlZWM9JhyphnbWewwe9viGLyJXXWM3ZvqYw8S" "layout:input-next": "/method/63001/" "layout:languages": [{"code": "ja", "is-active": "false", "name": "日本語"}, {"code": "lt", "is-active": "false", "name": "Lietuviškai"}, {"code": "zh-hans", "is-active": "false", "name": "简体中文"}, {"code": "en", "is-active": "true", "name": "English"}, {"code": "ru", "is-active": "false", "name": "Русский"}, {"code": "oo", "is-active": "false", "name": "O;o,"}] # "item:parent:intents": [{"url": "/intent/74001/", "title": "Distributed data storage"}] "item:title": "Event sourcing and CRDTs as data storage" "item:summary": "I think event sourcing and CRDTs can be combined to provide an alternative to the blockchain for general purpose data storage" "item:voting": +1 "item:voting:add": "/admin/hlog/voting/add/?method=63001" "item:voting:csrf_token": "BKXQZTpzkDukqDDDxxRZ9fFrmSgAlZWM9JhyphnbWewwe9viGLyJXXWM3ZvqYw8S" "item:voting:submit-value-option": {"selected": "[-]", "value": "-"} "item:voting:submit-value-option": {"selected": "[+]", "value": "+"} "item:base-administration": false "item:body": | I'm not particularly fond of the block chain. It functions as a distributed ledger but I think there is a simpler combination of technologies that provides a slightly different architecture for general purpose data storage. One problem with block chain is the centralisation of miners and the proof of work is inefficient. If you disagree with the network, you have to be a miner to change the course of transactions on the network. There are no chargebacks on Bitcoin. You cannot get money transferred to the wrong address or reverse stolen money. You cannot 'disagree' or 'vote against' other actors in the system. Also a problem with bitcoin is the landed wealth problem. Essentially early adopters or early adopters in the case of commercial coins get the lion's share of wealth in any cryptocurrency. It's inherently unfair, like aristocratic wealth from birth. Nobody earns their bitcoins. So this idea is to represent a ledger of transactions as both as a [CRDT](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type) so that arbitrary transactions can be combined in any order from any peer. The second is that events are event sourced so the new state of the system is the product of applying a reduction function over all past events. To disagree with the system state, you simply exclude or create reversing events to the transaction stream. This undoes previous transactions. So if you used this event sourcing with CRDTs to indicate ownership, a community of people would have to mark other sources of information as trusted to get the final decision of the network. This system also tracks debts automatically as balances may not reconcile. (If people decide to reverse a transaction en masse, the reversed transactions could cause a negative balance elsewhere in the system) Event sourcing helps produce a final state in a simple CRUD app. Two users on a P2P network can edit the same field in a record and this will produce two different versions of the data. They are mergeable through CRDTs merge operator and event sourced reduction. "item:source-date": "" "item:permalink": "/method/63001/?l=en" "item:owner": "chronological" "item:created": "2021-09-01T21:05:58.668316" "item:ownerlink": "/user/198/chronological" # "item:link:items": - "id": "l-21001" "url": "https://github.com/yjs/yjs" "text": "Efficient CRDTs" "note": "Yjs is an efficient CRDT implementation in JavaScript." "owner": "chronological" "ownerlink": "/user/198/chronological" "permalink": "/method/63001/?l=en#l-21001" "created": "2021-09-01T23:11:18.561567" - "id": "l-22001" "url": "https://www.eventstore.com/event-sourcing" "text": "Event sourcing introduction" "note": "An explanation of event sourcing" "owner": "chronological" "ownerlink": "/user/198/chronological" "permalink": "/method/63001/?l=en#l-22001" "created": "2021-09-01T23:12:40.888519" - "id": "l-23001" "url": "https://braid.org/algorithms/shelf" "text": "A very simple CRDT in a few 100 lines of code" "note": "CRDTs can be simple" "owner": "chronological" "ownerlink": "/user/198/chronological" "permalink": "/method/63001/?l=en#l-23001" "created": "2021-09-04T01:35:45.670798" "item:link:add": "/admin/hlog/link/add/?parent=63001" "item:project:items": "item:project:add": "/admin/hlog/project/add/?parent=63001" "item:comment:add": "/methods/addnote?parent=63001" "item:comment:add:csrf_token": "BKXQZTpzkDukqDDDxxRZ9fFrmSgAlZWM9JhyphnbWewwe9viGLyJXXWM3ZvqYw8S" "item:comment:form": |