From 50deb8f188ab565dd752b7a273caf80e31d3713c Mon Sep 17 00:00:00 2001 From: Prem Chaitanya Prathi Date: Thu, 30 Apr 2026 21:52:57 +0530 Subject: [PATCH] chore: migrate to libp2p_mix package Mix has been extracted from nim-libp2p into its own package at logos-co/nim-libp2p-mix. Update all imports of libp2p/protocols/mix* to use libp2p_mix*, add the new package as a vendored submodule and nimble dep, and bump the mix-rln-spam-protection-plugin submodule to its corresponding migration branch. Verified end-to-end with simulations/mixnet (5-node mixnet + chat2mix): - All 5 wakunode2 instances mount /mix/1.0.0 successfully - RLN spam-protection loads and registers - chat2mix publishes via lightpush with mixify=true - Cover traffic runs at the configured 20s interval --- .gitmodules | 4 ++++ apps/chat2mix/chat2mix.nim | 4 ++-- examples/lightpush_mix/lightpush_publisher_mix.nim | 4 ++-- vendor/mix-rln-spam-protection-plugin | 2 +- vendor/nim-libp2p-mix | 1 + waku.nimble | 1 + waku/discovery/waku_kademlia.nim | 2 +- waku/factory/conf_builder/mix_conf_builder.nim | 2 +- waku/node/kernel_api/lightpush.nim | 2 +- waku/node/waku_node.nim | 4 ++-- waku/waku_enr/capabilities.nim | 2 +- waku/waku_mix/protocol.nim | 14 +++++++------- 12 files changed, 24 insertions(+), 18 deletions(-) create mode 160000 vendor/nim-libp2p-mix diff --git a/.gitmodules b/.gitmodules index 19c4eec17..2e3ec953f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -200,3 +200,7 @@ url = https://github.com/logos-co/mix-rln-spam-protection-plugin.git ignore = untracked branch = master +[submodule "vendor/nim-libp2p-mix"] + path = vendor/nim-libp2p-mix + url = git@github.com:logos-co/nim-libp2p-mix.git + branch = master diff --git a/apps/chat2mix/chat2mix.nim b/apps/chat2mix/chat2mix.nim index f969fdb13..6f22b8c3d 100644 --- a/apps/chat2mix/chat2mix.nim +++ b/apps/chat2mix/chat2mix.nim @@ -29,9 +29,9 @@ import peerid, # Implement how peers interact protobuf/minprotobuf, # message serialisation/deserialisation from and to protobufs nameresolving/dnsresolver, - protocols/mix/curve25519, - protocols/mix/mix_protocol, ] # define DNS resolution +import libp2p_mix/curve25519 +import libp2p_mix/mix_protocol import waku/[ waku_core, diff --git a/examples/lightpush_mix/lightpush_publisher_mix.nim b/examples/lightpush_mix/lightpush_publisher_mix.nim index 104de8552..893b15368 100644 --- a/examples/lightpush_mix/lightpush_publisher_mix.nim +++ b/examples/lightpush_mix/lightpush_publisher_mix.nim @@ -7,8 +7,8 @@ import confutils, libp2p/crypto/crypto, libp2p/crypto/curve25519, - libp2p/protocols/mix, - libp2p/protocols/mix/curve25519, + libp2p_mix, + libp2p_mix/curve25519, libp2p/multiaddress, eth/keys, eth/p2p/discoveryv5/enr, diff --git a/vendor/mix-rln-spam-protection-plugin b/vendor/mix-rln-spam-protection-plugin index b2fe03f86..8222ae3a9 160000 --- a/vendor/mix-rln-spam-protection-plugin +++ b/vendor/mix-rln-spam-protection-plugin @@ -1 +1 @@ -Subproject commit b2fe03f8693b0893fa5674b39410c979e4fb57e9 +Subproject commit 8222ae3a98d83308bd98e92ea24b3d841d6c7289 diff --git a/vendor/nim-libp2p-mix b/vendor/nim-libp2p-mix new file mode 160000 index 000000000..13e9b585c --- /dev/null +++ b/vendor/nim-libp2p-mix @@ -0,0 +1 @@ +Subproject commit 13e9b585c50d7328d508eae815c2a3245039a9e4 diff --git a/waku.nimble b/waku.nimble index dcfad6201..04839dcdd 100644 --- a/waku.nimble +++ b/waku.nimble @@ -25,6 +25,7 @@ requires "nim >= 2.2.4", "stint", "metrics", "libp2p >= 1.15.0", + "libp2p_mix", "web3", "presto", "regex", diff --git a/waku/discovery/waku_kademlia.nim b/waku/discovery/waku_kademlia.nim index fd5dfc1ac..0308e98e1 100644 --- a/waku/discovery/waku_kademlia.nim +++ b/waku/discovery/waku_kademlia.nim @@ -11,7 +11,7 @@ import libp2p/crypto/curve25519, libp2p/protocols/[kademlia, service_discovery], libp2p/protocols/service_discovery/types as kad_types, - libp2p/protocols/mix/mix_protocol + libp2p_mix/mix_protocol import waku/waku_core, waku/node/peer_manager diff --git a/waku/factory/conf_builder/mix_conf_builder.nim b/waku/factory/conf_builder/mix_conf_builder.nim index 7af7a4ad1..ec67d1a03 100644 --- a/waku/factory/conf_builder/mix_conf_builder.nim +++ b/waku/factory/conf_builder/mix_conf_builder.nim @@ -1,5 +1,5 @@ import chronicles, std/options, results -import libp2p/crypto/crypto, libp2p/crypto/curve25519, libp2p/protocols/mix/curve25519 +import libp2p/crypto/crypto, libp2p/crypto/curve25519, libp2p_mix/curve25519 import ../waku_conf, waku/waku_mix logScope: diff --git a/waku/node/kernel_api/lightpush.nim b/waku/node/kernel_api/lightpush.nim index 2b7d1064d..658de7696 100644 --- a/waku/node/kernel_api/lightpush.nim +++ b/waku/node/kernel_api/lightpush.nim @@ -17,7 +17,7 @@ import libp2p/transports/tcptransport, libp2p/transports/wstransport, libp2p/utility, - libp2p/protocols/mix + libp2p_mix import ../waku_node, diff --git a/waku/node/waku_node.nim b/waku/node/waku_node.nim index d73d8250f..35cc44f29 100644 --- a/waku/node/waku_node.nim +++ b/waku/node/waku_node.nim @@ -23,8 +23,8 @@ import libp2p/transports/wstransport, libp2p/utility, libp2p/utils/offsettedseq, - libp2p/protocols/mix, - libp2p/protocols/mix/mix_protocol + libp2p_mix, + libp2p_mix/mix_protocol import waku/[ diff --git a/waku/waku_enr/capabilities.nim b/waku/waku_enr/capabilities.nim index 26899fbb4..6a5b5338f 100644 --- a/waku/waku_enr/capabilities.nim +++ b/waku/waku_enr/capabilities.nim @@ -3,7 +3,7 @@ import std/[options, bitops, sequtils, net, tables], results, eth/keys, libp2p/crypto/crypto import ../common/enr, ../waku_core/codecs -import libp2p/protocols/mix +import libp2p_mix const CapabilitiesEnrField* = "waku2" diff --git a/waku/waku_mix/protocol.nim b/waku/waku_mix/protocol.nim index 2256b5555..b9f518d6d 100644 --- a/waku/waku_mix/protocol.nim +++ b/waku/waku_mix/protocol.nim @@ -5,13 +5,13 @@ import chronicles, std/[options, sequtils], chronos, results, metrics import libp2p/crypto/curve25519, libp2p/crypto/crypto, - libp2p/protocols/mix, - libp2p/protocols/mix/mix_node, - libp2p/protocols/mix/mix_protocol, - libp2p/protocols/mix/mix_metrics, - libp2p/protocols/mix/delay_strategy, - libp2p/protocols/mix/spam_protection, - libp2p/protocols/mix/cover_traffic, + libp2p_mix, + libp2p_mix/mix_node, + libp2p_mix/mix_protocol, + libp2p_mix/mix_metrics, + libp2p_mix/delay_strategy, + libp2p_mix/spam_protection, + libp2p_mix/cover_traffic, libp2p/[multiaddress, multicodec, peerid, peerinfo], eth/common/keys