This repository has been archived by the owner on Feb 8, 2023. It is now read-only.
Describing relationships between various naming and communication systems #379
Labels
Mutable Data
Naming, Real-Time updates, IPNS
Communication and naming systems are fundamentally related by the idea that in order for a set of parties to communicate they must have a particular communication channel. This communication channel has a name, whether it is explicit (e.g. #ircChannel,
hash(publickey)
) or implicit (e.g. Alice and Bob's bidirectional TCP channel).To explore this more thoroughly and see how it relates to the distributed naming/communication world we'll examine the mappings between a few closely related systems.
The below thoughts are still a bit rough, but describe the layout of space of some systems that distributed application developers may care about (IPNS, Dat, SSB, IRC, Email, etc.)
Our Systems
The Equivalences
1. Chat <-> Multi-writer Naming
Chat: We can create an arbitrary number of topics
t
which any number of users can then post to. Posts are not deleted.Multi-writer Naming: We can create an arbitrary number of objects
o
which any number of users can modify. Traces of the modifications are not deleted.Chat -> Multi-writer Naming
For any object
o
that we would like to have many users collaborate on:o
for users to post toIf the Chat system is Open then users will not require being pre-registered and therefore we can build an Open Multi-writer naming system.
Alternatively, if the Chat system is Closed then we will only be able to build a Closed Multi-writer naming system
Multi-writer Naming -> Chat
For any topic
t
that we would like to have many users post to:t
that users can modify as an append-only logAs above, if the naming system is open we can build an open chat system, but if it's closed we can only build a closed chat system.
2. Open Multi-writer Naming -> Email
For any user
u
that we would like to have many users be able to send messages to that onlyu
can read:u
that is an append-only log associated with a cryptographic public/private key pair(u_pub, u_priv)
s
wants to send a message tou
they create an append operation with their message in it that is encrypted withu_pub
3. Open Multi-writer Naming <-> Email + Single-writer Naming
Email + Single-writer Naming -> Open Multi-writer Naming
For any object
o
that we would like to have many users collaborate on:u_i
wants to join the collaboration:u_i
create a single-writer objecto_i
u_i
create their own composite objectC
that incorporates all the changes of each of theo_j
u_i
discover all of the otheru_j
and send them an email notifying them to addo_i
to their local copy ofC
u_i
wants to modifyo
they create a modification operation and put it ino_i
Note: there is an assumption here that the
u_i
can discover the relevantu_j
, in some circumstances this could occur within the context of the email + single-writer systems or might be a separate system. At worst this makes the equivalenceEmail + Single-writer Naming + Discovery <-> Open Multi-writer Naming
, since a Key-Value Store Open Multi-writer Naming system could be used for discovery.Open Multi-writer Naming -> Email + Single-writer Naming
Open Multi-writer Naming -> Single-writer Naming
For any object
o
that we would like to have many users,u_i
, read from and only 1 user,Admin
write to.o-mw
that is associated with a cryptographic public/private key pair(Admin_pub, Admin_priv)
Admin
wants to modifyo
it publishes a modification operation too-mw
and signs it withAdmin_priv
u_i
want to see the latest state ofo
they read the state ofo-mw
rejecting any changes that cannot be verified byAdmin_pub
Open Multi-writer Naming -> Email
Described above
4. Single-writer Naming -> Closed Multi-writer Naming
For any named object
o
thatN
predetermined users would like to collaboratively modify:N
users (designatedu_i
) create a single-writer named objecto_i
C
that incorporates all the changes of each of theo_i
u_i
wants to modifyo
they create a modification operation and put it ino_i
The text was updated successfully, but these errors were encountered: