illustration
illustration

Slashtags

Technicals

What is Slashtags?

Slashtags is an open-source protocol for creating secure and scalable peer-to-peer applications. It predominantly builds on the lower-level functionality of the Hypercore stack. The foundation of the protocol is implemented within the JavaScript-based Slashtags software development kit.

More about Hypercore
illustration
illustration

Hyperdrives

At the core of Slashtags is a special type of file drive called a hyperdrive. Each hyperdrive is associated with an ed25519 private-public keypair derived from a BIP-39 master node and a name for the drive. What is known as the discovery key is a hash value of the public key.

Hyperdrives can be discovered, read, and copied by peers on a network. The group of peers that stores some or all of the drive’s data is known as its swarm.

Distributed Hash Table

Members of the swarm are tracked within a Kademlia-based Distributed Hash Table (DHT) system on the basis of the hyperdrive’s discovery key. Connections with members of the swarm and DHT nodes are made on the basis of a highly robust UDP holepunching algorithm.

illustration
illustration

Peer Discovery

Only the owner of the private key for a hyperdrive can make changes to it. Yet, other peers in the network can read and copy the data, as long as they have the discovery key. So in order to share a particular hyperdrive with a peer, one just has to hand over its public key, as the discovery key can be derived from it. Schemas for particular data types help ensure efficient data retrieval and resolution, as well as interoperability between applications.

Hyperdrive data can be retrieved from any peer within the swarm. Slashtags relies on a digital signature procedure to ensure that peers can always determine the latest state of a particular hyperdrive.

Peer-to-Peer Applications

With Slashtags, you can easily create powerful peer-to-peer applications. Consider, for example, how we created decentralized profiles with Slashtags for our Bitkit wallet:

When a user creates their profile, the profile data is stored as a file labeled <slashprofile.JSON> in a user's slashdrive on their phone.

When someone else in the network wants the user's contact information,they just import the public key for the use's slashdrive.

Each time they want to see the user's profile information in their wallet, they just query the user's slashdrive for the latest state of the <slashprofile.JSON>.

These profiles can be used for any other application that supports slashtags. In the future, Slashtags will support multi-writer mode so that a single profile can be edited within multiple applications.

illustration
illustration

Why do we call the protocol Slashtags?

A slashtag is a key pair generated with the Slashtags protocol. Typically these key pairs are associated with a hyperdrive, though the protocol also allows for other types of keypairs.

The name “slashtag” derives from the fact that data can be “tagged”, as in “added”, to a public key belonging to a hyperdrive, and that this data can be referenced using a forward slash, just as in any file system.

Key Derivation

Respawn your digital life
from a single master seed

diagram slashtags

Get Started

Start building with Slashtags

Slashtags is open-source and ready for code contributions from the community. Build anything you can imagine.

Ready to start tinkering?

illustration