P2P Communication
Amending the GossipSub protocol, we replace the topic subscription/broadcast process to not be an exact matching basis, but rather a counting bloom filter based approach, hence the name Blossom, a portmanteau of Bloom-Sum. The scoring system is also amended to take advantage of the message reconstruction protocol ensuring node mesh behaviors are correct, connectivity between nodes is altered to incorporate a circuit construction, and finally time/rate related metrics are instead replaced by generic consumption of unforgeable proofs of valid behavior. These alterations drastically improve privacy (IP collection is useless), remove cheap Sybil attack potential (by virtue of making it very expensive to overwhelm the network), and no longer require message inspection/processing at multiple points, reducing redundant compute costs.
Peer Discovery
Peer discovery is achieved through an open peer exchange, where nodes will offer a score-indexed list of peers in terms of ip address and public route keys, or graph address and capabilities.
Node operation capabilities are typically self-adjusting, but in the event a node operator explicitly configures their node to enable/disable certain capabilities (at the impact of their score), only the capabilities the node broadcasts support for will be given.
Peer Connections
Peer connections are established using the same terminology as GossipSub, with the topics switched with a bitmask:
- A node scans the list for nodes with
ROUTE
capability. - At random, six nodes are picked, and an enveloped 3-depth gossip channel with each is created.
- The node gossips a bandwidth-adjusted
JOIN[bitmask]
message (bitmasks are calculated relative to bandwidth, this adjusts periodically) with a fresh random join public key. - Nodes processing within that bitmask will gossip a
GRAFT[bitmask]
message with a fresh random graft public key, exchanged with the gossipedJOIN
key. ThisGRAFT
should only occur on one of the gossip channels. - Nodes accepting the
GRAFT
initiate an ad-hoc join of Triple-Ratchet for the cluster, and begin participation in SLRP.
For routing functionality, we can adopt the basic GossipSub scoring mechanism:
The values in this formula are defined as environment-specific weights wi
, and parameter values, P1
through P4
are further indexed to the specific topic and capped per TC
. The parameters are defined as follows:
- Time in Mesh for Topic – The time spent as a member of the mesh for the given topic.
- First Message Deliveries for Topic – The count of times the peer was the first to deliver messages for the topic.
- Mesh Message Delivery Rate/Failures for Topic – The delivery metric intended to penalize peers engaging in behaviors likely to be explicitly dropping messages.
- Invalid Messages for Topic – The metric intended to penalize peers delivering application-invalid messages.
- Application-Specific Score – A deferring score that is application-specific and left to implementation.
- IP Collocation Factor – The metric penalizing the number of peers connecting from the same IP address, that surpasses an application-controlled threshold.
To preserve anonymity and unlinkability of application-level functions, the other functions are only associated with a graph address and carry an implicit scoring system:
V = Σni=1rivi
, whereV
is the aggregate sum of duration of data blocks made availablevi
, and the rate at which they were requestedri
. The purpose is to reward long-term retention of data.A = avg({r1a1, r2a2, ..., rnan})
, whereA
is the averaged ratio of attested data requests processed:unprocessed, and the inverse rate at which they were requested. The purpose is to reward rare data deliverability.Score = V + A