47 |
\terms{Design, Reliability, Performance} |
\terms{Design, Reliability, Performance} |
48 |
|
|
49 |
\keywords{dangling links, |
\keywords{dangling links, |
50 |
peer-to-peer, location-independent identifiers} |
peer-to-peer, location-independent identifiers, content addressable networks} |
51 |
|
|
52 |
|
|
53 |
Introduction |
Introduction |
91 |
.. can be used to implement external links, backlinks &c: |
.. can be used to implement external links, backlinks &c: |
92 |
|
|
93 |
However, recent developments in peer-to-peer systems have |
However, recent developments in peer-to-peer systems have |
94 |
rendered this assumption obsolete. Distributed hashtables (DHTs) |
rendered this assumption obsolete. |
95 |
|
Distributed hashtables (DHTs) and other content-addressable network algorithms |
96 |
[malkhi02viceroy-andalso-maymounkov02kademlia-andalso-ratnasamy01can-andalso-stoica01chord-andalso-zhao01tapestry]_ |
[malkhi02viceroy-andalso-maymounkov02kademlia-andalso-ratnasamy01can-andalso-stoica01chord-andalso-zhao01tapestry]_ |
97 |
allow location-independent identifiers |
allow location-independent identifiers |
98 |
to be resolved on a global scale. |
to be resolved on a global scale. |
106 |
all published external links to a document can be found using |
all published external links to a document can be found using |
107 |
a DHT. |
a DHT. |
108 |
|
|
109 |
|
.. Freenet's cryptographical identifiers: |
110 |
|
|
111 |
|
In Freenet [freenet-ieee]_, an anonymous peer-to-peer |
112 |
|
publication system, *cryptographic hashes* |
113 |
|
(see, e.g., [schneier96appliedcryptography]_) |
114 |
|
are used for location-independent identifiers of |
115 |
|
documents versions. Hashes |
116 |
|
are short (often 20 bytes), yet it is practically impossible |
117 |
|
that two different documents will ever have the same hash, |
118 |
|
making them ideal unique identifiers on the Web. |
119 |
|
|
120 |
.. [#] Domain Name System (DNS) [rfc1101]_ is a widely used RRS |
.. [#] Domain Name System (DNS) [rfc1101]_ is a widely used RRS |
121 |
system in the Internet. |
system in the Internet. |
122 |
|
|
139 |
or on the |
or on the |
140 |
public Internet. |
public Internet. |
141 |
|
|
|
.. Freenet's cryptographical identifiers: |
|
|
|
|
|
Location-independent identifiers are not a new idea. |
|
|
In Freenet [freenet-ieee]_, an anonymous peer-to-peer |
|
|
publication system, *cryptographic hashes* |
|
|
(see, e.g., [schneier96appliedcryptography]_) |
|
|
are used to identify versions of documents. Hashes |
|
|
are short (often 20 bytes), yet it is practically impossible |
|
|
that two different documents will ever have the same hash, |
|
|
making them ideal unique identifiers on the Web. |
|
|
|
|
142 |
.. Hashes allow reference to a single version of a |
.. Hashes allow reference to a single version of a |
143 |
document. Documents are refered to by public keys [XXX]. |
document. Documents are refered to by public keys [XXX]. |
144 |
The private key corresponding to a document's public key |
The private key corresponding to a document's public key |
185 |
One of the key innovations in storm is the use |
One of the key innovations in storm is the use |
186 |
of *pointer blocks* |
of *pointer blocks* |
187 |
to build mutable documents on top of |
to build mutable documents on top of |
188 |
the lowest-layer append-and-delete-only model. |
the lowest layer append-and-delete-only model. |
189 |
A pointer block is simply a storm block which says |
A pointer block is simply a storm block which says |
190 |
"The identifier X points to document Id, overriding |
"The identifier X points to document Id, and this block overrides |
191 |
the previous pointer blocks a, b" and contains |
the previous pointer blocks a, b" and contains |
192 |
a digital signature of the above information. The pointer Id |
a digital signature of the above information. The pointer Id |
193 |
contains the public key used for signatures --- this allows |
contains the public key used for signatures --- this allows |
195 |
A suitable user interface around pointers allows the user to |
A suitable user interface around pointers allows the user to |
196 |
still see old-style file names, but with the file names attached |
still see old-style file names, but with the file names attached |
197 |
to his/her person, not to a particular computer. |
to his/her person, not to a particular computer. |
198 |
|
There is also a scheme to compress blocks using differences and reverse |
199 |
|
differences between consecutive blocks but there is no space to explain it here. |
200 |
|
|
201 |
|
|
202 |
.. storing |
.. storing |
203 |
documents on the desktop and publishing and retrieving |
documents on the desktop and publishing and retrieving |
204 |
documents from the network. |
documents from the network. |
205 |
|
|
206 |
.. Pointers |
.. Our system implements append-and-delete-only |
207 |
|
storage; past versions of documents are stored |
208 |
|
unless deleted explicitly. It is possible to |
209 |
|
store only the differences between versions. |
210 |
|
|
211 |
|
Interfacing |
212 |
|
=========== |
213 |
|
|
214 |
.. part of the web -- URN scheme (so far experimental, |
.. part of the web -- URN scheme (so far experimental, |
215 |
targetting registration): |
targetting registration): |
216 |
|
|
217 |
|
|
218 |
We are using an experimental URN namespace |
Storm uses an experimental URN namespace |
219 |
(Uniform Resource Name, a persistent kind of URI) |
(Uniform Resource Name, a persistent kind of URI) |
220 |
and are preparing the registration |
and we are preparing the registration |
221 |
of a real namespace with IANA. |
of a real namespace with IANA. |
222 |
The URN is constructed analogously to a DATA URI (RFC XXX) |
The URN is constructed analogously to a data URL (RFC 2397) |
223 |
from the hash of the block content and the MIME content-type, |
from the MIME content-type, using the hash of the data instead |
224 |
for example ``urn-...XXX``. |
of the data itself. |
|
|
|
|
.. Our system implements append-and-delete-only |
|
|
storage; past versions of documents are stored |
|
|
unless deleted explicitly. It is possible to |
|
|
store only the differences between versions. |
|
225 |
|
|
|
Interfacing |
|
|
=========== |
|
226 |
|
|
227 |
.. On the user level, |
.. On the user level, |
228 |
.. Even without user interface changes, |
.. Even without user interface changes, |