forked from cory/tildefriends
33 lines
1.4 KiB
Markdown
33 lines
1.4 KiB
Markdown
|
# 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.
|