Files: ab873c2885cbee350d729e22e361d9c2197608e0 / concepts / link.md
Link
what I recall is @substack suggested "cypherlink" as the term for a hash used as a link (also called a merkle link in ipfs) which I liked because it sounded like a riff on "hyperlink" and "cypherpunk". After that, "cypherspace" was pretty obvious.
I was staying with @substack and @johnny at the time. The design I had planned was cyphernet but switched to the secure-scuttlebutt design because it was simpler and had more predictable replication performance.
Messages can reference three types of Secure Scuttlebutt entities: messages, feeds, and blobs (i.e. files). Messages and blobs are referred to by their hashes, but a feed is referred to by its signing public key.
To indicate the type of ID, a "sigil" is prepended to the string. They are:
@
for feeds%
for messages&
for blobs
Additionally, each ID has a "tag" appended to indicate the hash or key algorithm. Some example IDs:
- A feed:
@LA9HYf5rnUJFHHTklKXLLRyrEytayjbFZRo76Aj/qKs=.ed25519
- A message:
%MPB9vxHO0pvi2ve2wh6Do05ZrV7P6ZjUQ+IEYnzLfTs=.sha256
- A blob:
&Pe5kTo/V/w4MToasp1IuyMrMcCkQwDOdyzbyD5fy4ac=.sha256
When IDs are found in the messages, they may be treated as links, with the keyname acting as a "relation" type. An example of this:
sbot publish --type post \
--root "%MPB9vxHO0pvi2ve2wh6Do05ZrV7P6ZjUQ+IEYnzLfTs=.sha256" \
--branch "%kRi8MzGDWw2iKNmZak5STshtzJ1D8G/sAj8pa4bVXLI=.sha256" \
--text "this is a reply!"
sbot.publish({
type: "post",
root: "%MPB9vxHO0pvi2ve2wh6Do05ZrV7P6ZjUQ+IEYnzLfTs=.sha256",
branch: "%kRi8MzGDWw2iKNmZak5STshtzJ1D8G/sAj8pa4bVXLI=.sha256",
text: "this is a reply!"
})
In this example, the root and branch keys are the relations. SSB automatically builds an index based on these links, to allow queries such as "all messages with a root link to this message."
Built with git-ssb-web