diff --git a/simulations/mixnet/check_cover_traffic.sh b/simulations/mixnet/check_cover_traffic.sh index f79ab5893..a5763fbfc 100755 --- a/simulations/mixnet/check_cover_traffic.sh +++ b/simulations/mixnet/check_cover_traffic.sh @@ -12,7 +12,7 @@ for i in 1 2 3 4 5; do if [ -z "$metrics" ]; then echo " (unreachable)" else - echo "$metrics" | grep -E "mix_cover_|mix_slots_" | grep -v "^#" || echo " (no cover metrics yet)" + echo "$metrics" | grep -E "mix_cover_|mix_slot_" | grep -v "^#" || echo " (no cover metrics yet)" fi echo "" done diff --git a/simulations/mixnet/config.toml b/simulations/mixnet/config.toml index 44ad6addf..fcf3eda39 100644 --- a/simulations/mixnet/config.toml +++ b/simulations/mixnet/config.toml @@ -27,5 +27,5 @@ nat = "extip:127.0.0.1" ext-multiaddr = ["/ip4/127.0.0.1/tcp/60001"] ext-multiaddr-only = true ip-colocation-limit=0 -mix-user-message-limit=2 -mix-disable-spam-protection=true +mix-user-message-limit=4 +mix-disable-spam-protection=false diff --git a/simulations/mixnet/config1.toml b/simulations/mixnet/config1.toml index ad5fccea7..a65cc2f5a 100644 --- a/simulations/mixnet/config1.toml +++ b/simulations/mixnet/config1.toml @@ -28,6 +28,6 @@ nat = "extip:127.0.0.1" ext-multiaddr = ["/ip4/127.0.0.1/tcp/60002"] ext-multiaddr-only = true ip-colocation-limit=0 -mix-user-message-limit=2 -mix-disable-spam-protection=true +mix-user-message-limit=4 +mix-disable-spam-protection=false #staticnode = ["/ip4/127.0.0.1/tcp/60001/p2p/16Uiu2HAmPiEs2ozjjJF2iN2Pe2FYeMC9w4caRHKYdLdAfjgbWM6o", "/ip4/127.0.0.1/tcp/60003/p2p/16Uiu2HAmTEDHwAziWUSz6ZE23h5vxG2o4Nn7GazhMor4bVuMXTrA","/ip4/127.0.0.1/tcp/60004/p2p/16Uiu2HAmPwRKZajXtfb1Qsv45VVfRZgK3ENdfmnqzSrVm3BczF6f","/ip4/127.0.0.1/tcp/60005/p2p/16Uiu2HAmRhxmCHBYdXt1RibXrjAUNJbduAhzaTHwFCZT4qWnqZAu"] diff --git a/simulations/mixnet/config2.toml b/simulations/mixnet/config2.toml index dc7ea12c6..b37bb9759 100644 --- a/simulations/mixnet/config2.toml +++ b/simulations/mixnet/config2.toml @@ -28,6 +28,6 @@ nat = "extip:127.0.0.1" ext-multiaddr = ["/ip4/127.0.0.1/tcp/60003"] ext-multiaddr-only = true ip-colocation-limit=0 -mix-user-message-limit=2 -mix-disable-spam-protection=true +mix-user-message-limit=4 +mix-disable-spam-protection=false #staticnode = ["/ip4/127.0.0.1/tcp/60001/p2p/16Uiu2HAmPiEs2ozjjJF2iN2Pe2FYeMC9w4caRHKYdLdAfjgbWM6o", "/ip4/127.0.0.1/tcp/60002/p2p/16Uiu2HAmLtKaFaSWDohToWhWUZFLtqzYZGPFuXwKrojFVF6az5UF","/ip4/127.0.0.1/tcp/60004/p2p/16Uiu2HAmPwRKZajXtfb1Qsv45VVfRZgK3ENdfmnqzSrVm3BczF6f","/ip4/127.0.0.1/tcp/60005/p2p/16Uiu2HAmRhxmCHBYdXt1RibXrjAUNJbduAhzaTHwFCZT4qWnqZAu"] diff --git a/simulations/mixnet/config3.toml b/simulations/mixnet/config3.toml index bdf2478e1..9b256ea08 100644 --- a/simulations/mixnet/config3.toml +++ b/simulations/mixnet/config3.toml @@ -28,6 +28,6 @@ nat = "extip:127.0.0.1" ext-multiaddr = ["/ip4/127.0.0.1/tcp/60004"] ext-multiaddr-only = true ip-colocation-limit=0 -mix-user-message-limit=2 -mix-disable-spam-protection=true +mix-user-message-limit=4 +mix-disable-spam-protection=false #staticnode = ["/ip4/127.0.0.1/tcp/60002/p2p/16Uiu2HAmLtKaFaSWDohToWhWUZFLtqzYZGPFuXwKrojFVF6az5UF", "/ip4/127.0.0.1/tcp/60003/p2p/16Uiu2HAmTEDHwAziWUSz6ZE23h5vxG2o4Nn7GazhMor4bVuMXTrA","/ip4/127.0.0.1/tcp/60001/p2p/16Uiu2HAmPiEs2ozjjJF2iN2Pe2FYeMC9w4caRHKYdLdAfjgbWM6o","/ip4/127.0.0.1/tcp/60005/p2p/16Uiu2HAmRhxmCHBYdXt1RibXrjAUNJbduAhzaTHwFCZT4qWnqZAu"] diff --git a/simulations/mixnet/config4.toml b/simulations/mixnet/config4.toml index d667cd963..d616896e6 100644 --- a/simulations/mixnet/config4.toml +++ b/simulations/mixnet/config4.toml @@ -28,6 +28,6 @@ nat = "extip:127.0.0.1" ext-multiaddr = ["/ip4/127.0.0.1/tcp/60005"] ext-multiaddr-only = true ip-colocation-limit=0 -mix-user-message-limit=2 -mix-disable-spam-protection=true +mix-user-message-limit=4 +mix-disable-spam-protection=false #staticnode = ["/ip4/127.0.0.1/tcp/60001/p2p/16Uiu2HAmPiEs2ozjjJF2iN2Pe2FYeMC9w4caRHKYdLdAfjgbWM6o", "/ip4/127.0.0.1/tcp/60003/p2p/16Uiu2HAmTEDHwAziWUSz6ZE23h5vxG2o4Nn7GazhMor4bVuMXTrA","/ip4/127.0.0.1/tcp/60004/p2p/16Uiu2HAmPwRKZajXtfb1Qsv45VVfRZgK3ENdfmnqzSrVm3BczF6f","/ip4/127.0.0.1/tcp/60002/p2p/16Uiu2HAmLtKaFaSWDohToWhWUZFLtqzYZGPFuXwKrojFVF6az5UF"] diff --git a/simulations/mixnet/setup_credentials.nim b/simulations/mixnet/setup_credentials.nim index ef3ee88d7..cffd60e9e 100644 --- a/simulations/mixnet/setup_credentials.nim +++ b/simulations/mixnet/setup_credentials.nim @@ -20,7 +20,7 @@ import const KeystorePassword = "mix-rln-password" # Must match protocol.nim - DefaultUserMessageLimit = 2'u64 # ~12 msgs/min with 10s epochs + DefaultUserMessageLimit = 4'u64 # R=4 slots per 10s epoch SpammerUserMessageLimit = 3'u64 # Higher limit for spammer testing # Peer IDs derived from nodekeys in config files diff --git a/vendor/mix-rln-spam-protection-plugin b/vendor/mix-rln-spam-protection-plugin index bb787a684..bf56c9b9a 160000 --- a/vendor/mix-rln-spam-protection-plugin +++ b/vendor/mix-rln-spam-protection-plugin @@ -1 +1 @@ -Subproject commit bb787a684b1dd335c82790fc505595e5a54cd6dc +Subproject commit bf56c9b9a640e612ce34aa3776c4eedfd5366ab3 diff --git a/vendor/nim-libp2p b/vendor/nim-libp2p index f7ebceb4e..6ba3e3ae8 160000 --- a/vendor/nim-libp2p +++ b/vendor/nim-libp2p @@ -1 +1 @@ -Subproject commit f7ebceb4ea3c9271a1e0eae404dbccd23dd51574 +Subproject commit 6ba3e3ae847c2dcf4030597034303cc85b1f76b4 diff --git a/waku/discovery/waku_kademlia.nim b/waku/discovery/waku_kademlia.nim index aab3a9819..77de264f2 100644 --- a/waku/discovery/waku_kademlia.nim +++ b/waku/discovery/waku_kademlia.nim @@ -9,8 +9,8 @@ import libp2p/[peerid, multiaddress, switch], libp2p/extended_peer_record, libp2p/crypto/curve25519, - libp2p/protocols/[kademlia, kad_disco], - libp2p/protocols/kademlia_discovery/types as kad_types, + libp2p/protocols/[kademlia, service_discovery], + libp2p/protocols/service_discovery/types as kad_types, libp2p/protocols/mix/mix_protocol import waku/waku_core, waku/node/peer_manager @@ -19,20 +19,20 @@ logScope: topics = "waku extended kademlia discovery" const - DefaultExtendedKademliaDiscoveryInterval* = chronos.seconds(5) - ExtendedKademliaDiscoveryStartupDelay* = chronos.seconds(5) + DefaultExtendedServiceDiscoveryInterval* = chronos.seconds(5) + ExtendedServiceDiscoveryStartupDelay* = chronos.seconds(5) type MixNodePoolSizeProvider* = proc(): int {.gcsafe, raises: [].} NodeStartedProvider* = proc(): bool {.gcsafe, raises: [].} - ExtendedKademliaDiscoveryParams* = object + ExtendedServiceDiscoveryParams* = object bootstrapNodes*: seq[(PeerId, seq[MultiAddress])] mixPubKey*: Option[Curve25519Key] advertiseMix*: bool = false WakuKademlia* = ref object - protocol*: KademliaDiscovery + protocol*: ServiceDiscovery peerManager: PeerManager discoveryLoop: Future[void] running*: bool @@ -42,7 +42,7 @@ type proc new*( T: type WakuKademlia, switch: Switch, - params: ExtendedKademliaDiscoveryParams, + params: ExtendedServiceDiscoveryParams, peerManager: PeerManager, getMixNodePoolSize: MixNodePoolSizeProvider = nil, isNodeStarted: NodeStartedProvider = nil, @@ -50,13 +50,13 @@ proc new*( if params.bootstrapNodes.len == 0: info "creating kademlia discovery as seed node (no bootstrap nodes)" - let kademlia = KademliaDiscovery.new( + let kademlia = ServiceDiscovery.new( switch, bootstrapNodes = params.bootstrapNodes, config = KadDHTConfig.new( validator = kad_types.ExtEntryValidator(), selector = kad_types.ExtEntrySelector() ), - codec = ExtendedKademliaDiscoveryCodec, + codec = ExtendedServiceDiscoveryCodec, ) try: @@ -197,7 +197,7 @@ proc runDiscoveryLoop( while wk.running: # Wait for node to be started if not wk.isNodeStarted.isNil() and not wk.isNodeStarted(): - await sleepAsync(ExtendedKademliaDiscoveryStartupDelay) + await sleepAsync(ExtendedServiceDiscoveryStartupDelay) continue var records: seq[ExtendedPeerRecord] @@ -247,7 +247,7 @@ proc runDiscoveryLoop( proc start*( wk: WakuKademlia, - interval: Duration = DefaultExtendedKademliaDiscoveryInterval, + interval: Duration = DefaultExtendedServiceDiscoveryInterval, minMixPeers: int = 0, ): Future[Result[void, string]] {.async: (raises: []).} = if wk.running: diff --git a/waku/factory/node_factory.nim b/waku/factory/node_factory.nim index 38b96ab0b..da1a0d4ea 100644 --- a/waku/factory/node_factory.nim +++ b/waku/factory/node_factory.nim @@ -180,7 +180,7 @@ proc setupProtocols( node.wakuKademlia = WakuKademlia.new( node.switch, - ExtendedKademliaDiscoveryParams( + ExtendedServiceDiscoveryParams( bootstrapNodes: conf.kademliaDiscoveryConf.get().bootstrapNodes, mixPubKey: mixPubKey, advertiseMix: conf.mixConf.isSome(), diff --git a/waku/waku_mix/protocol.nim b/waku/waku_mix/protocol.nim index 04cf02d5c..2256b5555 100644 --- a/waku/waku_mix/protocol.nim +++ b/waku/waku_mix/protocol.nim @@ -102,7 +102,7 @@ proc new*( let totalSlots = userMessageLimit.get(2) let ct = ConstantRateCoverTraffic.new( totalSlots = totalSlots, - epochDurationSec = 10.0, + epochDuration = 10.seconds, useInternalEpochTimer = disableSpamProtection, ) @@ -137,8 +137,11 @@ proc new*( localMixNodeInfo, peermgr.switch, spamProtection = spamProtectionOpt, - delayStrategy = Opt.some(DelayStrategy( - ExponentialDelayStrategy.new(meanDelay = 100, rng = crypto.newRng()))), + delayStrategy = Opt.some( + DelayStrategy( + ExponentialDelayStrategy.new(meanDelay = 100, rng = crypto.newRng()) + ) + ), coverTraffic = Opt.some(CoverTraffic(ct)), )