removing mix repo as dependency and using mix from libp2p repo (#3632)

* use released version of libp2p 1.14.2
This commit is contained in:
Prem Chaitanya Prathi 2025-10-23 10:00:11 +05:30 committed by GitHub
parent 9808e205af
commit 8be45180aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 39 additions and 32 deletions

4
.gitmodules vendored
View File

@ -184,7 +184,3 @@
url = https://github.com/waku-org/waku-rlnv2-contract.git
ignore = untracked
branch = master
[submodule "vendor/mix"]
path = vendor/mix
url = https://github.com/vacp2p/mix/
branch = main

View File

@ -29,8 +29,8 @@ import
peerid, # Implement how peers interact
protobuf/minprotobuf, # message serialisation/deserialisation from and to protobufs
nameresolving/dnsresolver,
protocols/mix/curve25519,
] # define DNS resolution
import mix/curve25519
import
waku/[
waku_core,

View File

@ -7,14 +7,14 @@ import
confutils,
libp2p/crypto/crypto,
libp2p/crypto/curve25519,
libp2p/protocols/mix,
libp2p/protocols/mix/curve25519,
libp2p/multiaddress,
eth/keys,
eth/p2p/discoveryv5/enr,
metrics,
metrics/chronos_httpserver
import mix, mix/mix_protocol, mix/curve25519
import
waku/[
common/logging,
@ -119,7 +119,7 @@ proc setupAndPublish(rng: ref HmacDrbgContext, conf: LightPushMixConf) {.async.}
conn = node.wakuMix.toConnection(
MixDestination.init(dPeerId, pxPeerInfo.addrs[0]), # destination lightpush peer
WakuLightPushCodec, # protocol codec which will be used over the mix connection
Opt.some(MixParameters(expectReply: Opt.some(true), numSurbs: Opt.some(byte(1)))),
MixParameters(expectReply: Opt.some(true), numSurbs: Opt.some(byte(1))),
# mix parameters indicating we expect a single reply
).valueOr:
error "failed to create mix connection", error = error

1
vendor/mix vendored

@ -1 +0,0 @@
Subproject commit 5e95337693ad0787baec1ee25293f454c2d105ca

2
vendor/nim-libp2p vendored

@ -1 +1 @@
Subproject commit aa8ce46f782240cb99a7222c474022b8cfd24e52
Subproject commit 0309685cd27d4bf763c8b3be86a76c33bcfe67ea

View File

@ -24,14 +24,13 @@ requires "nim >= 2.2.4",
"stew",
"stint",
"metrics",
"libp2p >= 1.13.0",
"libp2p >= 1.14.2",
"web3",
"presto",
"regex",
"results",
"db_connector",
"minilru",
"https://github.com/vacp2p/mix#0.1.0"
"minilru"
### Helper functions
proc buildModule(filePath, params = "", lang = "c"): bool =

View File

@ -1,5 +1,5 @@
import chronicles, std/options, results
import libp2p/crypto/crypto, libp2p/crypto/curve25519, mix/curve25519
import libp2p/crypto/crypto, libp2p/crypto/curve25519, libp2p/protocols/mix/curve25519
import ../waku_conf, waku/waku_mix
logScope:

View File

@ -17,7 +17,7 @@ import
libp2p/transports/tcptransport,
libp2p/transports/wstransport,
libp2p/utility,
mix
libp2p/protocols/mix
import
../waku_node,
@ -207,10 +207,8 @@ proc lightpushPublishHandler(
let conn = node.wakuMix.toConnection(
MixDestination.init(peer.peerId, peer.addrs[0]),
WakuLightPushCodec,
Opt.some(
MixParameters(expectReply: Opt.some(true), numSurbs: Opt.some(byte(1)))
# indicating we only want a single path to be used for reply hence numSurbs = 1
),
MixParameters(expectReply: Opt.some(true), numSurbs: Opt.some(byte(1))),
# indicating we only want a single path to be used for reply hence numSurbs = 1
).valueOr:
error "could not create mix connection"
return lighpushErrorResult(

View File

@ -22,9 +22,8 @@ import
libp2p/transports/tcptransport,
libp2p/transports/wstransport,
libp2p/utility,
mix,
mix/mix_node,
mix/mix_protocol
libp2p/protocols/mix,
libp2p/protocols/mix/mix_protocol
import
../waku_core,

View File

@ -3,7 +3,7 @@
import
std/[options, bitops, sequtils, net, tables], results, eth/keys, libp2p/crypto/crypto
import ../common/enr, ../waku_core/codecs
import mix/mix_protocol
import libp2p/protocols/mix
const CapabilitiesEnrField* = "waku2"

View File

@ -1,12 +1,11 @@
{.push raises: [].}
import chronicles, std/[options, tables, sequtils], chronos, results, metrics
import chronicles, std/[options, tables, sequtils], chronos, results, metrics, strutils
import
libp2p/crypto/curve25519,
mix/mix_protocol,
mix/mix_node,
mix/mix_metrics,
libp2p/protocols/mix,
libp2p/protocols/mix/mix_node,
libp2p/[multiaddress, multicodec, peerid],
eth/common/keys
@ -117,14 +116,30 @@ proc startMixNodePoolMgr*(mix: WakuMix) {.async.} =
heartbeat "Updating mix node pool", 5.seconds:
mix.populateMixNodePool()
]#
proc toMixNodeTable(bootnodes: seq[MixNodePubInfo]): Table[PeerId, MixPubInfo] =
var mixNodes = initTable[PeerId, MixPubInfo]()
for node in bootnodes:
let peerId = getPeerIdFromMultiAddr(node.multiAddr).valueOr:
let pInfo = parsePeerInfo(node.multiAddr).valueOr:
error "Failed to get peer id from multiaddress: ",
error = error, multiAddr = $node.multiAddr
continue
mixNodes[peerId] = createMixPubInfo(node.multiAddr, node.pubKey)
let peerId = pInfo.peerId
var peerPubKey: crypto.PublicKey
if not peerId.extractPublicKey(peerPubKey):
warn "Failed to extract public key from peerId, skipping node", peerId = peerId
continue
if peerPubKey.scheme != PKScheme.Secp256k1:
warn "Peer public key is not Secp256k1, skipping node",
peerId = peerId, scheme = peerPubKey.scheme
continue
let multiAddr = MultiAddress.init(node.multiAddr).valueOr:
error "Failed to parse multiaddress", multiAddr = node.multiAddr, error = error
continue
mixNodes[peerId] = MixPubInfo.init(peerId, multiAddr, node.pubKey, peerPubKey.skkey)
info "using mix bootstrap nodes ", bootNodes = mixNodes
return mixNodes
@ -138,10 +153,11 @@ proc new*(
): WakuMixResult[T] =
let mixPubKey = public(mixPrivKey)
info "mixPrivKey", mixPrivKey = mixPrivKey, mixPubKey = mixPubKey
let nodeMultiAddr = MultiAddress.init(nodeAddr).valueOr:
return err("failed to parse mix node address: " & $nodeAddr & ", error: " & error)
let localMixNodeInfo = initMixNodeInfo(
nodeAddr, mixPubKey, mixPrivKey, peermgr.switch.peerInfo.publicKey.skkey,
peermgr.switch.peerInfo.privateKey.skkey,
peermgr.switch.peerInfo.peerId, nodeMultiAddr, mixPubKey, mixPrivKey,
peermgr.switch.peerInfo.publicKey.skkey, peermgr.switch.peerInfo.privateKey.skkey,
)
if bootnodes.len < mixMixPoolSize:
warn "publishing with mix won't work as there are less than 3 mix nodes in node pool"