Skip to main content

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.

A diagram depicting the high level network structure
A depiction of a SLRP cluster under BlossomSub – each black circle corresponds to a node, a box with arrows indicates a participant, and 3, 2, and 1 nested circles indicate remaining envelope depth

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:

Gossip Channel Join/Graft:
  1. A node scans the list for nodes with ROUTE capability.
  2. At random, six nodes are picked, and an enveloped 3-depth gossip channel with each is created.
  3. 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.
  4. Nodes processing within that bitmask will gossip a GRAFT[bitmask] message with a fresh random graft public key, exchanged with the gossiped JOIN key. This GRAFT should only occur on one of the gossip channels.
  5. 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:

Score(peer) = TC(
4
Σ
n=1
wn,tPn,t) + w5P5 + w6P6

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:

  1. Time in Mesh for Topic – The time spent as a member of the mesh for the given topic.
  2. First Message Deliveries for Topic – The count of times the peer was the first to deliver messages for the topic.
  3. Mesh Message Delivery Rate/Failures for Topic – The delivery metric intended to penalize peers engaging in behaviors likely to be explicitly dropping messages.
  4. Invalid Messages for Topic – The metric intended to penalize peers delivering application-invalid messages.
  5. Application-Specific Score – A deferring score that is application-specific and left to implementation.
  6. 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:

Implicit Node Scoring:
  1. V = Σni=1rivi, where V is the aggregate sum of duration of data blocks made available vi, and the rate at which they were requested ri. The purpose is to reward long-term retention of data.
  2. A = avg({r1a1, r2a2, ..., rnan}), where A 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.
  3. Score = V + A