Search in sources :

Example 1 with GossipPeerScoreParams

use of io.libp2p.pubsub.gossip.GossipPeerScoreParams in project teku by ConsenSys.

the class LibP2PParamsFactory method createPeerScoreParams.

public static GossipPeerScoreParams createPeerScoreParams(final GossipPeerScoringConfig config) {
    final GossipPeerScoreParamsBuilder builder = GossipPeerScoreParams.builder().topicScoreCap(config.getTopicScoreCap()).appSpecificWeight(config.getAppSpecificWeight()).ipColocationFactorWeight(config.getIpColocationFactorWeight()).ipColocationFactorThreshold(config.getIpColocationFactorThreshold()).behaviourPenaltyWeight(config.getBehaviourPenaltyWeight()).behaviourPenaltyDecay(config.getBehaviourPenaltyDecay()).behaviourPenaltyThreshold(config.getBehaviourPenaltyThreshold()).decayInterval(config.getDecayInterval()).decayToZero(config.getDecayToZero()).retainScore(config.getRetainScore());
    // Configure optional params
    config.getAppSpecificScorer().ifPresent(scorer -> {
        final Function1<? super PeerId, Double> appSpecificScore = peerId -> scorer.scorePeer(new LibP2PNodeId(peerId));
        builder.appSpecificScore(appSpecificScore);
    });
    config.getDirectPeerManager().ifPresent(mgr -> {
        final Function1<? super PeerId, Boolean> isDirectPeer = peerId -> mgr.isDirectPeer(new LibP2PNodeId(peerId));
        builder.isDirect(isDirectPeer);
    });
    config.getWhitelistManager().ifPresent(mgr -> {
        // Ip whitelisting
        final Function1<? super String, Boolean> isIpWhitelisted = mgr::isWhitelisted;
        builder.ipWhitelisted(isIpWhitelisted);
    });
    return builder.build();
}
Also used : GossipPeerScoreParams(io.libp2p.pubsub.gossip.GossipPeerScoreParams) GossipScoringConfig(tech.pegasys.teku.networking.p2p.gossip.config.GossipScoringConfig) GossipPeerScoreParamsBuilder(io.libp2p.pubsub.gossip.builders.GossipPeerScoreParamsBuilder) GossipConfig(tech.pegasys.teku.networking.p2p.gossip.config.GossipConfig) GossipParams(io.libp2p.pubsub.gossip.GossipParams) GossipScoreParams(io.libp2p.pubsub.gossip.GossipScoreParams) Function1(kotlin.jvm.functions.Function1) Collectors(java.util.stream.Collectors) GossipPeerScoringConfig(tech.pegasys.teku.networking.p2p.gossip.config.GossipPeerScoringConfig) PeerId(io.libp2p.core.PeerId) GossipTopicScoreParams(io.libp2p.pubsub.gossip.GossipTopicScoreParams) LibP2PNodeId(tech.pegasys.teku.networking.p2p.libp2p.LibP2PNodeId) Map(java.util.Map) GossipTopicsScoreParams(io.libp2p.pubsub.gossip.GossipTopicsScoreParams) GossipTopicScoringConfig(tech.pegasys.teku.networking.p2p.gossip.config.GossipTopicScoringConfig) LibP2PNodeId(tech.pegasys.teku.networking.p2p.libp2p.LibP2PNodeId) GossipPeerScoreParamsBuilder(io.libp2p.pubsub.gossip.builders.GossipPeerScoreParamsBuilder)

Aggregations

PeerId (io.libp2p.core.PeerId)1 GossipParams (io.libp2p.pubsub.gossip.GossipParams)1 GossipPeerScoreParams (io.libp2p.pubsub.gossip.GossipPeerScoreParams)1 GossipScoreParams (io.libp2p.pubsub.gossip.GossipScoreParams)1 GossipTopicScoreParams (io.libp2p.pubsub.gossip.GossipTopicScoreParams)1 GossipTopicsScoreParams (io.libp2p.pubsub.gossip.GossipTopicsScoreParams)1 GossipPeerScoreParamsBuilder (io.libp2p.pubsub.gossip.builders.GossipPeerScoreParamsBuilder)1 Map (java.util.Map)1 Collectors (java.util.stream.Collectors)1 Function1 (kotlin.jvm.functions.Function1)1 GossipConfig (tech.pegasys.teku.networking.p2p.gossip.config.GossipConfig)1 GossipPeerScoringConfig (tech.pegasys.teku.networking.p2p.gossip.config.GossipPeerScoringConfig)1 GossipScoringConfig (tech.pegasys.teku.networking.p2p.gossip.config.GossipScoringConfig)1 GossipTopicScoringConfig (tech.pegasys.teku.networking.p2p.gossip.config.GossipTopicScoringConfig)1 LibP2PNodeId (tech.pegasys.teku.networking.p2p.libp2p.LibP2PNodeId)1