I'm toying currently with an app to do play by post d&d campaigns on Dat, I make one user create a Dat archive to hold game data, then each player has their own archive for their character, the game archive hold references to the public keys for each one, and then the application takes each character feed and merge them to present a seamless discussion.
This feels like contributing to the same document, and yet each user is in total control of their data (almost total control, because they cannot decide to erase it if other people are already seeding it). I also love the possibilities of scaling it implies : when each user hosts their own data, the number of users doesn't matter (provided they all interact in reasonably small groups, of course).
EDIT: oh btw, I can create archives on-the-fly because I'm using Beaker browser's api. I don't know if it's something possible with Dat by itself.
So how do you build consensus if everyone is responsible for hosting their own part?
Suppose I wanted a group activity. Who enforces any rules? What if someone deletes something?
How does a personal swarm recover from the same user making two conflicting edits? Is it just totally borked from then on?
And about consensus... how in Dat can I have the others deny an operation in the Dat, if it violates some rule? Like if I wanted to double-spend a token, for instance. A single, non divisible token, mind you.
Note: I'll only speak for my toy app, not pretending to be an expert of Dat, obviously.
I don't try to build a consensus (if by that we mean conciliating possibly conflicting entries, like Stellar if doing, for example), I just merge feeds. For now, it's as simple as it gets : my feeds (one in each character's archive) are json array of objects each containing a timestamp and a message, I just concat them and sort by timestamp. Of course, this won't fly for long, I'll soon have to separate data sources in chunks and process them as stream to avoid loading everything in memory at once, but for now, it's good enough to explore what I can do with the protocol.
I have the feeling your questions could be sum up as : how do you implement authority if there is no central control of data? (my apologies if I got it wrong and make you say something you haven't). The answer is : you don't.
With a standard app on a server, if you don't enforce data integrity, one user can possibly break the application for all users. With an app like the one I'm building, an user only share their data with a small group of friends and can only affect them. If they corrupt their data, the app is only broken for them. "Congratulation, you broke your toy. Now what?" (edit: in my app case, removing that person from the group would be enough to fix the data).
Of course, this reduces seriously the scope of what kind of app you can build (forget banking apps, or anything where anonymous people interact with one an other at a public scale). I'm perfectly fine with that : I can build my usual small tool services without pondering if it's worth mantaining, renting a domain name and renting a server. I'm not trying to build uber or bitcoin.
Please note that I'm not saying that consensus protocol and security can't be implemented with Dat, I'm just saying that it doesn't matter for what I'm currently building (and which is my only experience with dat so far).
Not asking how to implement authority, but rather how to implement consensus. In other words, if A pays B, how does B know that the transaction really committed? If the data is there now, I need it to be there later, too. If everyone is just writing to their own Dat, how do I know they won't just "forget" that they paid me?
If you want to implement payment, that's clearly the wrong tool for the job :) (although, it could easily leverage cryptocurrency networks)
Personally, I see the dweb as internet of the early days, when we were all writing blogs and publishing tools just because we found it cool. If Dat makes it difficult for big players to launch commercial products on it, I would call that a feature (but it's too early to say if it's the case). They already have the web for that.
I'm toying currently with an app to do play by post d&d campaigns on Dat, I make one user create a Dat archive to hold game data, then each player has their own archive for their character, the game archive hold references to the public keys for each one, and then the application takes each character feed and merge them to present a seamless discussion.
This feels like contributing to the same document, and yet each user is in total control of their data (almost total control, because they cannot decide to erase it if other people are already seeding it). I also love the possibilities of scaling it implies : when each user hosts their own data, the number of users doesn't matter (provided they all interact in reasonably small groups, of course).
EDIT: oh btw, I can create archives on-the-fly because I'm using Beaker browser's api. I don't know if it's something possible with Dat by itself.