└── readme.txt /readme.txt: -------------------------------------------------------------------------------- 1 | 2 | What is scuttlebutt? 3 | 4 | Status of this memo 5 | 6 | draft spec 7 | 8 | Abstract 9 | 10 | The goal of this document is to specify what it means to say you have 11 | implemented "scuttlebutt". Because scuttlebutt is intended as an living, 12 | changing protocol, this is necessarily in terms of other implementations. 13 | That is, you have implemented scuttlebutt if you can communicate with other scuttlebutt 14 | implementations. 15 | 16 | Definition of terms 17 | 18 | 1. Protocol Layer. 19 | Signing format. 20 | Transport format. 21 | 22 | 2. Platform Layer. 23 | Content format. 24 | 25 | 3. Application Layer. 26 | 27 | 28 | Defining interoperability. 29 | 30 | To say that Alice and Bob both speak scuttlebutt, it MUST be true that 31 | a message created in one implementation can be transferred to, validated, 32 | and rendered (in the application layer of) another implementation. This MUST 33 | apply in both directions. 34 | 35 | Although both implementations may store the message, it is not required 36 | that their database formats be mutually intelligible. 37 | 38 | If we consider 3 implementations, the situation is more complicated. 39 | If Carol implements a new transport format, and Bob also supports it, 40 | Bob is doing scuttlebutt because he can mutually exchange messages with Alice, 41 | who is defined as the source of scuttlebutt. If Carol supports the old format 42 | but chooses to use the new transport format when communicating with bob, that is still 43 | scuttlebutt. If Carol discontinues the old format, she can still receive Alice's 44 | messages via Bob, so that is still scuttlebutt. If Bob also discontinues the old format, 45 | then they have broken scuttlebutt because they cannot receive Alice's messages. 46 | However if Alice also supports the new transport format, then scuttlebutt is still happening. 47 | 48 | If Carol introduces a new signing format there is a greater risk of breaking scuttlebutt. 49 | For that signing format to be considered scuttlebutt, it must be accepted by other 50 | scuttlebutt peers. As long as there is one format that all peers can mutually produce 51 | and consume, then scuttlebutt is still happening. 52 | 53 | A particular format may be consumed but not produced by other peers. It's not required 54 | that Alice and Bob can both produce the same type of messages, just that Alice and Bob 55 | can consume each other's messages. 56 | 57 | There is also the possibility of transports that can only move old messages, such as by 58 | the message hash. Of course, there needs to exist some other transport that can move new messages. 59 | The main transport protocol does this by requesting new messages signed by a particular public key. 60 | If Bob supports the new signing format, he can create new format messages that reference 61 | old format messages, from Alice. And then Carol can request Alice's old-format messages by hash 62 | references in Bob's messages. If Alice upgrades to the new signing format and stops producing 63 | old format messages, then it's still scuttlebutt even if the peers no longer have the ability 64 | to replicate or produce new old-format messages. As long as there is some way to still aquire 65 | and understand the old messages. 66 | 67 | For example, due to many quirks in the old format, it's not desirable to force new implementors 68 | to implement it. But to minimally support it, they may transport it in a few format, store 69 | it in a new format, and convert it into the old format for signing and hashing. The new format 70 | must just retain sufficient context for it to be possible to convert to the old signing format. 71 | 72 | Alice and Bob's scuttlebutt implementations must be sufficiently compatibile, but 73 | this does not mean they need to be identicle. Alice may store her messages in a different 74 | database format to Bob. Database formats MAY be mutually intelligible, but it is not required. 75 | --------------------------------------------------------------------------------