scuttlego

module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 8, 2023 License: MIT

README

scuttlego CI Go Reference

A Go implementation of the Secure Scuttlebutt protocol. This implementation was designed to be used by the Planetary client and attempts to be efficient, stable and keep a relatively low memory footprint. As scuttlego is under active development the exposed interfaces may undergo some changes as its API stabilizes.

Features

Supported
  • Transport (handshake, box stream, RPC layer)
  • Support for the default feed format
  • Tracking the social graph
  • Connection manager (local peers, predefined pubs)
  • Replicating messages using createHistoryStream and Epidemic Broadcast Trees
  • Replication scheduler (prioritise closer feeds, avoid replicating the same messages simultaneously from various peers etc.)
  • Replicating and creating blobs
  • Pushing blobs
  • Tunneling via rooms
  • Some commands and queries for managing room aliases
Planned
  • Connection manager (dynamic discovery of pubs from feeds)
  • Handling blob wants received from remote peers
  • Cleaning up old blobs and messages
  • Private messages
  • Private groups
  • Support for other feed formats
  • Metafeeds

Community

If you want to talk about scuttlego feel free to post on Secure Scuttlebutt using the #scuttlego channel.

Also check out Matrix channels such as #golang-ssb-general:autonomic.zone and #planetary:matrix.org.

Protocol

To get an overview of the technical aspects of the Secure Scuttlebutt protocol check out the following resources:

Contributing

Check out our contributing documentation.

If you find an issue, please report it on the issue tracker.

Acknowledgements

This implementation depends on go-ssb and associated libraries under the hood. The elements which didn't have to be reimplemented from scratch thanks to that are mainly:

  • the handshake mechanism
  • the box stream protocol
  • the verification and signing of messages
  • broadcasting and receiving local UDP advertisements

We are ever grateful for the work done by the authors and contributors of go-ssb and associated libraries as without them scuttlego most likely wouldn't have been completed.

Directories

Path Synopsis
cmd
log-debugger command
app
di
domain/transport
Package transport implements the protocol stack responsible for exchanging data between Secure Scuttlebutt peers.
Package transport implements the protocol stack responsible for exchanging data between Secure Scuttlebutt peers.
domain/transport/boxstream
Package boxstream implements the Secret Handshake and the box stream protocol.
Package boxstream implements the Secret Handshake and the box stream protocol.
ports/network
Package network handles incoming network connections.
Package network handles incoming network connections.
ports/pubsub
Package pubsub receives internal events.
Package pubsub receives internal events.
ports/rpc
Package rpc implements handlers for incoming Secure Scuttlebutt RPC requests.
Package rpc implements handlers for incoming Secure Scuttlebutt RPC requests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL