Module P2p_taps
TAPS: Trust-Aware Peer Sampling
This is an OCaml implementation of a Trust-Aware Peer Sampling protocol based on the TAPS2 protocol described in the thesis Harnessing the power of implicit and explicit socialnetworks through decentralization.
Protocol
The protocol is based on a gossip exchange, similar to random peer sampling protocols such as CYCLON, but biases node selection based on local trust information.
This implementation differs from TAPS2 in two key ways:
- trust values are asymmetric, thus no agreement necessary between nodes about symmetric trust values
- nodes only use local information to establish trust values, without relying on multi-hop trust paths. They store trust information about direct friends, and discover friends-of-friends via a private set intersection protocol; future work remains to research asynchronous trust that considers multi-hop trust as well.
Each node maintains two views:
- an EXPLICIT view of nodes with associated local asymmetric trust values,
- a dynamic TAPS view that view exchanges can modify
The view exchange mechanism this module implements is identical to the one from TAPS2, with the following properties:
- Biased view selection: prefer more trusted entries when merging received views
- Continuous bootsrapping: continuously exchange information between both views of both types of nodes, thus TAPS-TAPS, TAPS-EXPL, EXPL-TAPS, EXPL-EXPL exchanges all happen in a randomized manner
module Default_config : S.CONFIG
Default TAC protocol configuration parameters
module Make : functor (Node_id : P2p.S.NODE_ID) -> functor (Node : P2p.S.NODE with type nid := Node_id.t) -> functor (View : P2p.S.VIEW with type nid := Node_id.t and type node := Node.t) -> functor (Config : S.CONFIG) -> P2p.S.GOSSIP with type node := Node.t and type view := View.t
Functor building an implementation of TAPS given a
Node_id
,Node
, and gossipView
.
module S : sig ... end