From fa57dcddef980dbc99e22779c4f69e05073fa446 Mon Sep 17 00:00:00 2001 From: Prem Chaitanya Prathi Date: Tue, 25 Mar 2025 14:33:42 +0530 Subject: [PATCH] filter peers if mix is enabled --- vendor/mix | 2 +- waku/node/waku_node.nim | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/vendor/mix b/vendor/mix index 230a5c495..2f8ed4e38 160000 --- a/vendor/mix +++ b/vendor/mix @@ -1 +1 @@ -Subproject commit 230a5c49583f8d82711f047e1ece21da9eff2b01 +Subproject commit 2f8ed4e389a166b6905a83ab2dc3b9bd1fc36b04 diff --git a/waku/node/waku_node.nim b/waku/node/waku_node.nim index 96c3dae2c..68b9de0a4 100644 --- a/waku/node/waku_node.nim +++ b/waku/node/waku_node.nim @@ -249,6 +249,8 @@ proc getBootStrapMixNodes*(node: WakuNode): Table[PeerId, MixPubInfo] = #TODO: Ideally these procs should be moved out into mix specific file, but keeping it here for now. proc mixPoolFilter*(cluster: Option[uint16], peer: RemotePeerInfo): bool = + # Note that origin based(discv5) filtering is not done intentionally + # so that more mix nodes can be discovered. if peer.enr.isNone(): trace "peer has no ENR", peer = $peer return false @@ -257,11 +259,14 @@ proc mixPoolFilter*(cluster: Option[uint16], peer: RemotePeerInfo): bool = debug "peer has mismatching cluster", peer = $peer return false - #TODO: Filter if mix is enabled + # Filter if mix is enabled + if not peer.enr.get().supportsCapability(Capabilities.Mix): + debug "peer doesn't support mix", peer = $peer + return false return true -proc addPeerId*(multiaddr: MultiAddress, peerId: PeerId): MultiAddress = +proc appendPeerIdToMultiaddr*(multiaddr: MultiAddress, peerId: PeerId): MultiAddress = if multiaddr.contains(multiCodec("p2p")).get(): return multiaddr @@ -295,7 +300,7 @@ proc populateMixNodePool*(node: WakuNode) {.async.} = let remotePeerENR = remotePeers[i].enr.get() # TODO: use the most exposed/external multiaddr of the peer, right now using the first let maddrWithPeerId = - toString(addPeerId(remotePeers[i].addrs[0], remotePeers[i].peerId)) + toString(appendPeerIdToMultiaddr(remotePeers[i].addrs[0], remotePeers[i].peerId)) trace "remote peer ENR", peerId = remotePeers[i].peerId, enr = remotePeerENR, maddr = maddrWithPeerId