Apply libp2p update

This commit is contained in:
Arnaud 2026-06-12 17:14:18 +04:00
parent 20e820f07b
commit 06bd7842c1
No known key found for this signature in database
GPG Key ID: A6C7C781817146FA
10 changed files with 53 additions and 41 deletions

View File

@ -140,7 +140,7 @@ switch("warning", "ObservableStores:off")
# Too many false positives for "Warning: method has lock level <unknown>, but another method has 0 [LockLevel]"
switch("warning", "LockLevel:off")
switch("define", "libp2p_pki_schemes=secp256k1")
switch("define", "libp2p_pki_schemes=secp256k1,rsa")
#TODO this infects everything in this folder, ideally it would only
# apply to storage.nim, but since storage.nims is used for other purpose
# we can't use it. And storage.cfg doesn't work

View File

@ -314,8 +314,15 @@ proc new*(
## Create a new BlockExcNetwork instance
##
# libp2p now requires a non-nil handler at construction; the real one is set
# by self.init() below. This placeholder only exists until then.
proc placeholder(
conn: Connection, proto: string
): Future[void] {.async: (raises: [CancelledError]).} =
discard
let self = lp_protocol.new(
BlockExcNetwork, @[Codec], nil, maxIncomingStreamsTotal = maxInflight
BlockExcNetwork, @[Codec], placeholder, maxIncomingStreamsTotal = maxInflight
)
self.switch = switch
self.getConn = connProvider

View File

@ -94,7 +94,7 @@ import std/typetraits
import pkg/chronicles except toJson, `%`
import json_serialization/writer as json_serialization_writer
from pkg/chronos import TransportAddress
from pkg/libp2p import Cid, MultiAddress, `$`
from pkg/libp2p import Cid, MultiAddress, SignedPeerRecord, `$`
import pkg/questionable
import pkg/questionable/results
import ./utils/json except formatIt # TODO: remove exception?
@ -248,6 +248,8 @@ formatIt(UInt256):
$it
formatIt(MultiAddress):
$it
formatIt(SignedPeerRecord):
$it
formatIt(LogFormat.textLines, array[32, byte]):
it.short0xHexLog
formatIt(LogFormat.json, array[32, byte]):

View File

@ -263,7 +263,8 @@ proc new*(
var switchBuilder = SwitchBuilder
.new()
.withPrivateKey(privateKey)
.withAddresses(@[listenMultiAddr], enableWildcardResolver = true)
.withAddresses(@[listenMultiAddr])
.withWildcardResolver()
.withIdentifyPusher(false)
.withRng(random.Rng.instance().libp2pRng)
.withNoise()
@ -469,7 +470,7 @@ proc new*(
info "Relay reservation updated", addresses = publicAddrs
# relay addresses are for download traffic only, not DHT routing
discovery.announceRelayAddrs(publicAddrs),
rng = random.Rng.instance(),
rng = random.Rng.instance().libp2pRng,
)
relayService.setup(switch)

View File

@ -7,7 +7,6 @@ import pkg/storage/chunker
import pkg/storage/stores
import ../../asynctest
import ../helpers/switchutils
type CountingStore* = ref object of NetworkStore
lookups*: Table[Cid, int]

View File

@ -20,7 +20,7 @@ suite "Discovery - SPR record logic":
udpPort = Port(8090)
setup:
key = PrivateKey.random(Rng.instance()).get()
key = PrivateKey.random(Rng.instance().libp2pRng).get()
disc = Discovery.new(key, announceAddrs = @[])
test "announceDirectAddrs sets the SPR with both TCP and UDP addresses":

View File

@ -56,8 +56,8 @@ method sendDialRequest*(
proc serverSwitch(): Switch =
SwitchBuilder
.new()
.withRng(Rng.instance())
.withPrivateKey(PrivateKey.random(Rng.instance()).get())
.withRng(Rng.instance().libp2pRng)
.withPrivateKey(PrivateKey.random(Rng.instance().libp2pRng).get())
.withAddresses(@[MultiAddress.init(listenAddr).get()])
.withTcpTransport(flags)
.withNoise()
@ -77,8 +77,8 @@ asyncchecksuite "NAT detection - simulated NAT":
let relayClient = relayClientModule.RelayClient.new()
natNode = SwitchBuilder
.new()
.withRng(Rng.instance())
.withPrivateKey(PrivateKey.random(Rng.instance()).get())
.withRng(Rng.instance().libp2pRng)
.withPrivateKey(PrivateKey.random(Rng.instance().libp2pRng).get())
.withAddresses(@[MultiAddress.init(listenAddr).get()])
.withNatTransport(router, flags)
.withNoise()
@ -86,9 +86,11 @@ asyncchecksuite "NAT detection - simulated NAT":
.withCircuitRelay(relayClient)
.build()
relay = AutoRelayService.new(1, relayClient, nil, Rng.instance())
relay = AutoRelayService.new(1, relayClient, nil, Rng.instance().libp2pRng)
autorelayservice.setup(relay, natNode)
disc = Discovery.new(PrivateKey.random(Rng.instance()).get(), announceAddrs = @[])
disc = Discovery.new(
PrivateKey.random(Rng.instance().libp2pRng).get(), announceAddrs = @[]
)
# nodes start in client mode until Reachable
disc.protocol.clientMode = true
@ -203,7 +205,7 @@ asyncchecksuite "NAT detection - dial request candidates":
test "autonat handles the observed dialable address":
let mockClient = MockAutonatV2Client()
let autonat = AutonatV2Service.new(
Rng.instance(),
Rng.instance().libp2pRng,
mockClient,
AutonatV2ServiceConfig.new(
enableDialableCandidates = true, maxQueueSize = 1, minConfidence = 0.5

View File

@ -36,9 +36,10 @@ asyncchecksuite "NAT reaction - port mapping":
var autoRelay: AutoRelayService
setup:
autoRelay =
AutoRelayService.new(1, relayClientModule.RelayClient.new(), nil, Rng.instance())
key = PrivateKey.random(Rng.instance()).get()
autoRelay = AutoRelayService.new(
1, relayClientModule.RelayClient.new(), nil, Rng.instance().libp2pRng
)
key = PrivateKey.random(Rng.instance().libp2pRng).get()
disc = Discovery.new(key, announceAddrs = @[])
sw = newStandardSwitch()
await sw.start()
@ -149,7 +150,7 @@ asyncchecksuite "NAT reaction - address announcing":
var disc: Discovery
setup:
key = PrivateKey.random(Rng.instance()).get()
key = PrivateKey.random(Rng.instance().libp2pRng).get()
disc = Discovery.new(key, announceAddrs = @[])
sw = newStandardSwitch()
await sw.start()
@ -179,7 +180,7 @@ asyncchecksuite "NAT reaction - address announcing":
check disc.getSpr().data.seqNo == seqNo
test "peerInfo observer announces addresses when Reachable":
let autonat = AutonatV2Service.new(Rng.instance())
let autonat = AutonatV2Service.new(Rng.instance().libp2pRng)
discard setupPeerInfoObserver(
sw, autonat, disc, NatPortMapper(discoveryPort: discoveryPort)
)
@ -193,7 +194,7 @@ asyncchecksuite "NAT reaction - address announcing":
check disc.announceAddrs == sw.peerInfo.addrs
test "peerInfo observer announces the mapped external UDP port when a mapping is active":
let autonat = AutonatV2Service.new(Rng.instance())
let autonat = AutonatV2Service.new(Rng.instance().libp2pRng)
let mapper =
NatPortMapper(discoveryPort: discoveryPort, activeUdpPort: some(Port(40001)))
discard setupPeerInfoObserver(sw, autonat, disc, mapper)
@ -210,7 +211,7 @@ asyncchecksuite "NAT reaction - address announcing":
sprAddrs
test "peerInfo observer does not announce when the node is not Reachable":
let autonat = AutonatV2Service.new(Rng.instance())
let autonat = AutonatV2Service.new(Rng.instance().libp2pRng)
discard setupPeerInfoObserver(
sw, autonat, disc, NatPortMapper(discoveryPort: discoveryPort)
)

View File

@ -4,7 +4,7 @@ import pkg/libp2p/wire
import ./helpers
import ../asynctest
import ../../storage/rng
import ../../storage/rng as storage_rng
import ../../storage/nat
import ./natsimulation
@ -22,22 +22,22 @@ proc cannotConnect(a, b: Switch): Future[bool] {.async.} =
return false
return not a.isConnected(b.peerInfo.peerId)
proc newSwitch(rng: Rng): Switch =
proc newSwitch(rng: storage_rng.Rng): Switch =
SwitchBuilder
.new()
.withRng(rng)
.withPrivateKey(PrivateKey.random(rng).get())
.withRng(rng.libp2pRng)
.withPrivateKey(PrivateKey.random(rng.libp2pRng).get())
.withAddresses(@[MultiAddress.init(listenAddr).get()])
.withTcpTransport(flags)
.withNoise()
.withYamux()
.build()
proc newNatSwitch(router: NatRouter, rng: Rng): Switch =
proc newNatSwitch(router: NatRouter, rng: storage_rng.Rng): Switch =
SwitchBuilder
.new()
.withRng(rng)
.withPrivateKey(PrivateKey.random(rng).get())
.withRng(rng.libp2pRng)
.withPrivateKey(PrivateKey.random(rng.libp2pRng).get())
.withAddresses(@[MultiAddress.init(listenAddr).get()])
.withNatTransport(router, flags)
.withNoise()
@ -49,8 +49,8 @@ asyncchecksuite "Nat transport - Endpoint-Independent Filtering":
setup:
let router = NatRouter.new(EndpointIndependent)
bootstrap = newSwitch(Rng.instance())
natNode = newNatSwitch(router, Rng.instance())
bootstrap = newSwitch(storage_rng.Rng.instance())
natNode = newNatSwitch(router, storage_rng.Rng.instance())
await bootstrap.start()
await natNode.start()
@ -67,9 +67,9 @@ asyncchecksuite "Nat transport - Address-Dependent Filtering":
setup:
let router = NatRouter.new(AddressDependent)
bootstrap = newSwitch(Rng.instance())
thirdNode = newSwitch(Rng.instance())
natNode = newNatSwitch(router, Rng.instance())
bootstrap = newSwitch(storage_rng.Rng.instance())
thirdNode = newSwitch(storage_rng.Rng.instance())
natNode = newNatSwitch(router, storage_rng.Rng.instance())
await bootstrap.start()
await thirdNode.start()
await natNode.start()
@ -99,9 +99,9 @@ asyncchecksuite "Nat transport - Address-and-Port-Dependent Filtering":
setup:
let router = NatRouter.new(AddressAndPortDependent)
bootstrap = newSwitch(Rng.instance())
thirdNode = newSwitch(Rng.instance())
natNode = newNatSwitch(router, Rng.instance())
bootstrap = newSwitch(storage_rng.Rng.instance())
thirdNode = newSwitch(storage_rng.Rng.instance())
natNode = newNatSwitch(router, storage_rng.Rng.instance())
await bootstrap.start()
await thirdNode.start()
await natNode.start()
@ -131,8 +131,8 @@ asyncchecksuite "Nat transport - Double NAT":
setup:
router = NatRouter.new(DoubleNat)
bootstrap = newSwitch(Rng.instance())
natNode = newNatSwitch(router, Rng.instance())
bootstrap = newSwitch(storage_rng.Rng.instance())
natNode = newNatSwitch(router, storage_rng.Rng.instance())
await bootstrap.start()
await natNode.start()
@ -154,8 +154,8 @@ asyncchecksuite "Nat transport - Port Mapping":
setup:
router = NatRouter.new(AddressAndPortDependent)
bootstrap = newSwitch(Rng.instance())
natNode = newNatSwitch(router, Rng.instance())
bootstrap = newSwitch(storage_rng.Rng.instance())
natNode = newNatSwitch(router, storage_rng.Rng.instance())
await bootstrap.start()
await natNode.start()

2
vendor/nim-libp2p vendored

@ -1 +1 @@
Subproject commit 2be4e5edb39c113be7c293d53ec17c6cadbb9640
Subproject commit 1bd3b986c82ab37a509fc84ca0ad7ea67a705a1b