OCaml-P2P

P2P protocols and algorithms in OCaml

Design

The libraries here implement parts of the design described in:

UPSYCLE: Ubiquitous Publish-Subscribe Infrastructure for Collaboration on Edge Networks

P2P gossip-based protocols

PolderCast

P2P topic-based pub/sub (paper, code)
Privacy enhancements: instead of transmitting node profiles with full subscription sets in the clear, randomized Bloom filters using BLIP are employed together with a Bloom filter-based Private Set Intersection (BFPSI) protocol

RingCast

P2P hybrid dissemination (paper, code)

VICINITY

P2P clustering & topology management (paper, code)

CYCLON

Random Peer Sampling (paper, code)
To ensure uniformity of peer sampling, URPS is used together with CYCLON.

TAPS

Trust-Aware Peer Sampling (paper, code)

TAC

Trust-Aware Clustering (paper, code)

P2P data structures

URPS

Uniform Random Peer Sampler (paper, code)

BLIP

Non-interactive differentially-private similarity computation on Bloom filters (paper, slides, code)

BFPSI

Private Set Intersection based on Bloom filters (paper, code)

Transport

NoiseSocket

Encoding layer for the Noise Protocol Framework (spec, code)