2.9 KiB
Key problems and existing approaches
See links in overview.md for some mighty attempts at comprehensive lists of dweb protocols and projects.
The purpose of this document is to try to analyze how some of the existing dweb projects attack certain key problems:
- discovery of users and content
- interoperable messaging
- message queueing and persistence
- reputation
- identity and pseudonymity
- metadata and ownership
- economy of services
- scalability
- testing and metrics
Fundamental user stories being addressed here: I want to...send a message to a person I know, and I don't know what system they use for messaging; find a topic or person by keyword search; find reliable and credible information or resources on a topic; know the ownership/conditions around resources I find; have a way to pay for all the services without privacy intrusions; have a fast and stable experience at global scale; and have some way to evaluate all of the above on different systems.
Discovery
-
gossip mesh systems
-
indexing and follow-bots
how does one discover users and topics within each ecosystem IRIS - WoT mapping of human readable names to identity attributes - https://github.com/irislib/iris
Messaging between systems
What does a message from a user to another user look like on the wire? (how similar are the schemas? can there be a universal schema with namespacing?)
- Matrix - https://matrix.org/docs/spec/ (proposal for related events - https://github.com/matrix-org/matrix-doc/blob/matthew/msc1849/proposals/1849-aggregations.md) Matrix messages are sent to rooms, which users are subscribed to. to message a user you first invite them to a room
PUT /_matrix/client/r0/rooms/%21636q39766251%3Aexample.com/send/m.room.message/35 HTTP/1.1
Content-Type: application/json
{
"msgtype": "m.text",
"body": "hello"
}
- ActivityPub - https://www.w3.org/TR/activitypub/ POST to the user's server's outbox endpoint
"type": "Note",
"to": ["https://chatty.example/ben/"],
"attributedTo": "https://social.example/alyssa/",
"content": "Say, did you finish reading that book I lent you?"}
Message queueing and persistence
-
Matrix - peered storage, replicated JSON between nodes
-
GUN - graph db
-
Mastodon - federated servers
General decentralized storage
-
IPFS - immutable, content-hash addressed
-
DAT
-
mutable systems using CRDTs
Example: GUN stores hacker noon annotations on user local storage - https://www.coindesk.com/hacker-noon-is-storing-content-on-a-blockchain-after-ditching-medium
Reputation/credibility
- IRIS
Identity
Metadata and ownership
- Ceramic
Economy of services
Scalability
- AXE (reduce unneeded connections) https://gun.eco/docs/AXE