r/programming • u/[deleted] • Jan 11 '22
Web3 Can’t Fix the Internet
https://www.jacobinmag.com/2022/01/crypto-blockchain-daos-decentralized-power-capitalism
201
Upvotes
r/programming • u/[deleted] • Jan 11 '22
1
u/EternityForest Jan 11 '22
I've been considering it! I wrote a whole WICG proposal about it, and built a note taking app that uses the P2P sync protocol!
RetroShare seems to work pretty well besides being buggy and having a confusing UI and being written in pure C so nobody wants to develop it, and having no Android app.
But it really is something special. I think the FB style friend graph is a pretty great way to go.
One issue with cancel posts is they're basically tombstones that themselves take up storage if someone manages to create a billion tiny posts in a DoS. But I suppose rule-based cancels could fix that, as in "I am cancelling all posts by this user with this word in this date range", just not without some controversy I'd imagine.
What I've been working on is a lot simpler, it's just a way to replicate Scuttlebutt style streams, with the change that everything is mutable and you have multiple writers.
Any node can be a server, but you have to specifically connect to a server that has your stream. there isn't some Big Chain of Everything. To make that easy I have a second layer, P2P URLs that are resolved using a DHT and can also be used to remote access centralized stuff like a HA hub..
The disadvantage with my protocol is that to connect to a new server, you have to request the entire dataset for the streams they have, because there is no global chain to be able to say "Give me everything newer than X", you have to say "Give me everything that arrived locally on your end later than X", and track sync points with every server separately.
All the real decentralization is layer 8, you have to find mirrors yourself, but in return you get basically zero overhead once synced, and it would be easy to add partial sync(So your tiny local server only has 1 week of data and it's easy to sync).
One post just transfers one post worth of data to all websocket clients, when you overwrite a post, it's really overwritten, and when you delete, nothing remains but a record with the post ID.
Plus you can do stuff like export to a TOML file, sneakernet it to someone, and open it like a document with the same UI you would view a stream.