From e27acb641cf0e5b931b9dd1f02b54d72a6b4ceba Mon Sep 17 00:00:00 2001 From: Marcin Czenko Date: Tue, 19 May 2026 09:43:16 +0200 Subject: [PATCH] alignes with the new dependency structure - MIX is now in a separate repo --- libp2p_storage_mix_transport.nimble | 1 + mix_ping_quic.nim | 20 ++++++++++++------- mix_ping_tcp.nim | 30 +++++++++++++++++++---------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/libp2p_storage_mix_transport.nimble b/libp2p_storage_mix_transport.nimble index 362bdd4..9480957 100644 --- a/libp2p_storage_mix_transport.nimble +++ b/libp2p_storage_mix_transport.nimble @@ -7,6 +7,7 @@ entryPoints = @["mix_ping_tcp.nim", "mix_ping_quic.nim"] requires "nim >= 2.0.0" requires "libp2p >= 1.15.3" +requires "https://github.com/logos-co/nim-libp2p-mix.git#feat/mix-read-behavior" requires "chronicles >= 0.11.0" requires "chronos >= 4.2.2" requires "results >= 0.5.0" diff --git a/mix_ping_quic.nim b/mix_ping_quic.nim index 4691ff9..7dd99cf 100644 --- a/mix_ping_quic.nim +++ b/mix_ping_quic.nim @@ -13,9 +13,6 @@ import chronicles, chronos, results import std/[strformat, sequtils, sugar] import libp2p/[ - protocols/mix, - protocols/mix/mix_protocol, - protocols/mix/curve25519, protocols/ping, peerid, multiaddress, @@ -24,13 +21,16 @@ import libp2p/[ crypto/crypto, crypto/secp, ] +import libp2p_mix +import libp2p_mix/mix_protocol +import libp2p_mix/curve25519 const NumMixNodes = 10 proc generateLocalQuicMixNodeInfo(): MixNodeInfo = let (mixPrivKey, mixPubKey) = generateKeyPair().expect("Generate key pair error") - keyPair = SkKeyPair.random(newRng()[]) + keyPair = SkKeyPair.random(newRng()) pubKeyProto = PublicKey(scheme: Secp256k1, skkey: keyPair.pubkey) MixNodeInfo( @@ -52,9 +52,15 @@ proc createSwitch( multiAddr: MultiAddress, libp2pPrivKey: Opt[SkPrivateKey] = Opt.none(SkPrivateKey) ): Switch = var rng = newRng() - let skkey = libp2pPrivKey.valueOr(SkKeyPair.random(rng[]).seckey) + let skkey = libp2pPrivKey.valueOr(SkKeyPair.random(rng).seckey) let privKey = PrivateKey(scheme: Secp256k1, skkey: skkey) - newStandardSwitchBuilder(privKey = Opt.some(privKey), addrs = multiAddr, transport = TransportType.QUIC).build() + SwitchBuilder + .new() + .withRng(rng) + .withPrivateKey(privKey) + .withAddress(multiAddr) + .withQuicTransport() + .build() proc mixPingSimulation() {.async: (raises: [Exception]).} = @@ -109,7 +115,7 @@ proc mixPingSimulation() {.async: (raises: [Exception]).} = defer: await destNode.stop() - let pingProto = Ping.new() + let pingProto = Ping.new(rng = newRng()) destNode.mount(pingProto) # Start destination switch after mounting Ping. diff --git a/mix_ping_tcp.nim b/mix_ping_tcp.nim index 915ef57..5ec7a33 100644 --- a/mix_ping_tcp.nim +++ b/mix_ping_tcp.nim @@ -13,8 +13,6 @@ import chronicles, chronos, results import std/[sequtils, sugar] import libp2p/[ - protocols/mix, - protocols/mix/mix_protocol, protocols/ping, peerid, multiaddress, @@ -23,25 +21,37 @@ import libp2p/[ crypto/crypto, crypto/secp, ] +import libp2p_mix +import libp2p_mix/mix_protocol const NumMixNodes = 10 proc createSwitch( - multiAddr: MultiAddress, libp2pPrivKey: Opt[SkPrivateKey] = Opt.none(SkPrivateKey) + multiAddr: MultiAddress, + rng: Rng, + libp2pPrivKey: Opt[SkPrivateKey] = Opt.none(SkPrivateKey), ): Switch = - var rng = newRng() - let skkey = libp2pPrivKey.valueOr(SkKeyPair.random(rng[]).seckey) + let skkey = libp2pPrivKey.valueOr(SkKeyPair.random(rng).seckey) let privKey = PrivateKey(scheme: Secp256k1, skkey: skkey) - newStandardSwitchBuilder(privKey = Opt.some(privKey), addrs = multiAddr).build() + SwitchBuilder + .new() + .withRng(rng) + .withPrivateKey(privKey) + .withAddress(multiAddr) + .withTcpTransport() + .withMplex() + .withNoise() + .build() proc mixPingSimulation() {.async: (raises: [Exception]).} = - let mixNodeInfos = MixNodeInfo.generateRandomMany(NumMixNodes) + let rng = newRng() + let mixNodeInfos = MixNodeInfo.generateRandomMany(NumMixNodes, rng) var switches: seq[Switch] = @[] var mixProtos: seq[MixProtocol] = @[] # Start switches first so wildcard listen addresses are resolved to dialable addresses. for nodeInfo in mixNodeInfos: - var switch = createSwitch(nodeInfo.multiAddr, Opt.some(nodeInfo.libp2pPrivKey)) + var switch = createSwitch(nodeInfo.multiAddr, rng, Opt.some(nodeInfo.libp2pPrivKey)) await switch.start() info "Mix node switch", peerId = switch.peerInfo.peerId, @@ -81,11 +91,11 @@ proc mixPingSimulation() {.async: (raises: [Exception]).} = mixProtos.add(proto) # Create a destination node (not part of the mix network) - let destNode = createSwitch(MultiAddress.init("/ip4/0.0.0.0/tcp/0").tryGet()) + let destNode = createSwitch(MultiAddress.init("/ip4/0.0.0.0/tcp/0").tryGet(), rng) defer: await destNode.stop() - let pingProto = Ping.new() + let pingProto = Ping.new(rng = rng) destNode.mount(pingProto) # Start destination switch after mounting Ping.