Secure Scuttlebutt - a decentralized social platform

Posted on June 8, 2019 by VI

As mentioned in my post about off-grid computing I learned about secure scuttlebutt a few months ago. I have been using it for some time now and I’m going to share that experience with you.

WTF is Scuttlebutt?

Secure Scuttlebutt or ssb is a gossip-protocol facilitating a decentralized communication platform. There are several applications built on top of this protocol from which I am currently using patchwork (desktop client) and manyverse (android client).
Patchwork let’s you follow people, post messages, subscribe and participate in channels and generally interact with others. Manyverse only has very basic features so far but it seems to be the only client available for my phone at the moment.

How it works (compared to a client-server model)

Gossip

The term gossip refers to the way messages get passed along throughout the network.
In a traditional client-server protocol a client application would have to know how to connect the server on the network. This has two implications:

  • The client has to know where the server is
  • The client has to be able to connect directly to the server

In a gossip-protocol, no direct connection is necessary. Instead messages are passed on from client to client, just like real-life gossip.
This makes it possible to work seamlessly when a single node or a partition of the network gets cut off the global network and rejoins later.
Patchwork and Manyverse by default replicate feeds two hops far. This means you fetch the feeds from those you follow and those your follows follow.

Identities

In the regular web, you would delegate authority over your identity to some server, holding account information, messages etc. In ssb your identity lives entirely on your own device in the form of an asymmetric key-pair.
Therefore, there is no such thing as registering an account or logging in somewhere.

Append only feed

When you post a message (private or public) it is simply appended to your feed (Also called stream sometimes). The feed is basically a cryptographically secured linked-list (just like a blockchain git repository), meaning it’s essentially a linked list where every element contains the content-hash of the previous one and is signed by the identities’ private-key.

How do I see other feeds and vise versa?

In a local area network

Ssb-clients use IP-multicasting to find each other on the same ethernet-segment or wifi.

Over the internet (using pubs)

Since most clients run behind firewalls, NAT-gateways, etc. it is difficult to make any computer with a consumer-grade uplink accessible from the internet. Therefore, people have come up with the idea of pubs.
A pub is simply a ssb-node that’s running 24/7 on a public IP-address (acting as a server in this case). Joining a pub means following it and having it follow you back as well. This way the pub will replicate your posts and keep them available publicly.

How to find new people

If you join the scuttleverse, it is most likely you don’t know anybody who uses it.
To find people to follow (and people to follow you as well) it is useful to join one or more public pubs. Also it is useful to post an introduction to yourself in the #new-people channel.
In general, subscribing to channels is a good Idea to find content you might be interested in.
As you start to interact with people and follow them some will follow you back and you’ll get integrated into the network.

My Experience so far

I’ve been using ssb more than the fediverse lately and had some interesting impressions.

  • The tone is much more decent and polite than in regular social networks.
  • The speed of communication is quite slow and less stressful.
  • People seem to take more time to put their thoughts into their posts.

All together, as a person suffering from constant femo and horror vaccui this style of communication feels way more healthy to me than, let’s say, the fediverse or twitter.

Finding the right Pub

There is a list of pubs on github.

Onboarding

Creating your first identity, joining a pub and syncing up with the network is often referred to as onboarding.
This usually includes downloading and indexing all feeds from everyone on your pub and can take from 30 minutes up to 2 hours (my experience) on a regular laptop.

Introducing yourself

After finishing the onboarding-process, you should write a quick introduction to yourself in the #new-people channel as mentioned above.

Multi-device Setup

In general, a ssb-identity is bound to one device. While you could (in theory) simply copy your private-key onto another device there is no mechanism in dealing with conflicting posts (forking your feed). There is a lot of discussion in the #same-as channel about how to manage multiple identities on different devices. My solution so far is:

  • Using patchwork on my laptop as my main identity.
  • Using manyverse on my phone as a secondary identity.
  • Having my secondary identity only follow my main identity.
  • Cross-referencing my identities by mentioning them in each other’s profile descriptions.

This allows me to see posts from everyone my main-identity follows (mind the 2-hop replication) without pulling in too much data from others.

Useful Resources

If I managed to point your attention to trying out scuttlebbutt, have a look at the project’s website.
Also read the FAQ.
Anyways, there are lots of helpful people out in the scuttleverse.