forked from cory/tildefriends
Cory McWilliams
0bd1463a6b
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3940 ed5197a5-7fde-0310-b194-c3ffbd925b24
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. |