At high level, each node that is a member of the broadcast mesh
exposes a 'join' operation to outside nodes. Join utilizes the
mesh broadcast (among current members) to accomplish a consensus
to accept the applicant. As a result, every node has a consistent
view of membership.
Of key interest, regarding resisting Sybils, is that the join mechanism
provides a synchronization point where the application can
insert arbitrary conditions for joining.
Join conditions are checked by member nodes before signing off
to accept. E.g. all or a subset of member nodes can verify that the
applicant has created stake on some blockchain.
The paper also provides a 'leave' procedure, which could be reused
to kick out nodes (by consensus) which are not meeting their obligations.
In short, DBRB is one possible implementation of the "ambient peer discovery" mechanism that GossipSub assumes given.
I found a very recent publication which adds a membership mechanism on top of a broadcast system (like gossipsub):
Dynamic Byzantine Reliable Broadcast (DBRB) https://arxiv.org/abs/2001.06271
At high level, each node that is a member of the broadcast mesh exposes a 'join' operation to outside nodes. Join utilizes the mesh broadcast (among current members) to accomplish a consensus to accept the applicant. As a result, every node has a consistent view of membership.
Of key interest, regarding resisting Sybils, is that the join mechanism provides a synchronization point where the application can insert arbitrary conditions for joining.
Join conditions are checked by member nodes before signing off to accept. E.g. all or a subset of member nodes can verify that the applicant has created stake on some blockchain.
The paper also provides a 'leave' procedure, which could be reused to kick out nodes (by consensus) which are not meeting their obligations.
In short, DBRB is one possible implementation of the "ambient peer discovery" mechanism that GossipSub assumes given.