tildefriends/apps/cory/docs/ssb.md

37 lines
1.6 KiB
Markdown
Raw Normal View History

# Secure Scuttlebutt from Scratch
[Back to index](#index)
This aims to be the missing reference for those who wish to create a Secure
Scuttlebutt client from scratch.
## Discovery
A good way to get started is to participate in local network discovery with a known working
client on the same network. The
[Scuttlebutt Programming Guide](https://ssbc.github.io/scuttlebutt-protocol-guide/#local-network)
is a good start, here, with a few things to note:
1. Some clients advertise multiple addresses separated by semicolons (`;`).
2. Some clients advertise alternative protocols than `shs` and use hostnames instead of
IPv4 addresses.
So be prepared to accept variations.
## Secret Handshake, Box Stream, and RPC Protocol
Now that two clients are aware of eachother, they need to complete a secret handshake.
The [programming guide](https://ssbc.github.io/scuttlebutt-protocol-guide/#handshake)
is once again a good reference.
The box stream and RPC protocol can both be implemented from the
[same documentation](https://ssbc.github.io/scuttlebutt-protocol-guide/#box-stream)
without surprises.
## Synchronizing Data
So now you're discovering other clients on the local network, connecting, performing
a secret handshake, and making remote procedure calls over box streams. The next step
is to start synchronizing feeds over the network. The goal, after all, is to author
messages in your local append-only log and have them show up in distant clients, or
vice versa.
## References
* [https://ssbc.github.io/scuttlebutt-protocol-guide/](https://ssbc.github.io/scuttlebutt-protocol-guide/)
* [https://dev.planetary.social/](https://dev.planetary.social/)