From 0627b4f8f2c83d34ece6baeaa64b2d8b9244937b Mon Sep 17 00:00:00 2001 From: Lorenzo Delgado Date: Tue, 4 Apr 2023 15:35:15 +0200 Subject: [PATCH] chore: remove deprecated enr record init method --- tests/v2/test_waku_enr.nim | 47 ----------------------------------- waku/v2/node/waku_node.nim | 35 +++++++++++++++++++------- waku/v2/protocol/waku_enr.nim | 43 -------------------------------- 3 files changed, 26 insertions(+), 99 deletions(-) diff --git a/tests/v2/test_waku_enr.nim b/tests/v2/test_waku_enr.nim index c7988eb46..65c06f14e 100644 --- a/tests/v2/test_waku_enr.nim +++ b/tests/v2/test_waku_enr.nim @@ -63,27 +63,6 @@ suite "Waku ENR - Capabilities bitfield": check: bitfield.toCapabilities() == @[Capabilities.Relay, Capabilities.Store] - test "encode and decode record with capabilities field (deprecated)": - # TODO: Remove after removing the `Record.init()` proc - ## Given - let enrkey = generatesecp256k1key() - let caps = CapabilitiesBitfield.init(Capabilities.Relay, Capabilities.Store) - - let record = Record.init(1, enrkey, wakuFlags=some(caps)) - - ## When - let typedRecord = record.toTyped() - require typedRecord.isOk() - - let bitfieldOpt = typedRecord.value.waku2 - - ## Then - check bitfieldOpt.isSome() - - let bitfield = bitfieldOpt.get() - check: - bitfield.toCapabilities() == @[Capabilities.Relay, Capabilities.Store] - test "cannot decode capabilities from record": ## Given let @@ -221,32 +200,6 @@ suite "Waku ENR - Multiaddresses": multiaddrs.contains(addr1) multiaddrs.contains(addr2) - test "encode and decode record with multiaddrs field (deprecated)": - # TODO: Remove after removing the `Record.init()` proc - ## Given - let enrkey = generatesecp256k1key() - let caps = CapabilitiesBitfield.init(Capabilities.Relay, Capabilities.Store) - - let - addr1 = MultiAddress.init("/ip4/127.0.0.1/tcp/80/ws").get() - addr2 = MultiAddress.init("/ip4/127.0.0.1/tcp/443/wss").get() - - ## When - let record = Record.init(1, enrkey, wakuFlags=some(caps), multiaddrs = @[addr1, addr2]) - - let typedRecord = record.toTyped() - require typedRecord.isOk() - - let multiaddrsOpt = typedRecord.value.multiaddrs - - ## Then - check multiaddrsOpt.isSome() - - let multiaddrs = multiaddrsOpt.get() - check: - multiaddrs.contains(addr1) - multiaddrs.contains(addr2) - test "cannot decode multiaddresses from record": ## Given let diff --git a/waku/v2/node/waku_node.nim b/waku/v2/node/waku_node.nim index 9c8774a22..eab95e2b4 100644 --- a/waku/v2/node/waku_node.nim +++ b/waku/v2/node/waku_node.nim @@ -223,16 +223,29 @@ proc init*( proc getEnr*(netConfig: NetConfig, wakuDiscV5 = none(WakuDiscoveryV5), - nodeKey: crypto.PrivateKey): enr.Record = + nodeKey: crypto.PrivateKey): Result[enr.Record, string] = if wakuDiscV5.isSome(): - return wakuDiscV5.get().protocol.getRecord() + return ok(wakuDiscV5.get().protocol.getRecord()) - return enr.Record.init(1, nodekey, - netConfig.enrIp, - netConfig.enrPort, - netConfig.discv5UdpPort, - netConfig.wakuFlags, - netConfig.enrMultiaddrs) + var builder = EnrBuilder.init(nodeKey, seqNum = 1) + + builder.withIpAddressAndPorts( + ipAddr = netConfig.enrIp, + tcpPort = netConfig.enrPort, + udpPort = netConfig.discv5UdpPort + ) + + if netConfig.wakuFlags.isSome(): + builder.withWakuCapabilities(netConfig.wakuFlags.get()) + + if netConfig.enrMultiAddrs.len > 0: + builder.withMultiaddrs(netConfig.enrMultiAddrs) + + let recordRes = builder.build() + if recordRes.isErr(): + return err($recordRes.error) + + return ok(recordRes.get()) proc getAutonatService*(rng = crypto.newRng()): AutonatService = ## AutonatService request other peers to dial us back @@ -347,11 +360,15 @@ proc new*(T: type WakuNode, services = @[Service(getAutonatService(rng))], ) + let nodeEnrRes = getEnr(netConfig, wakuDiscv5, nodekey) + if nodeEnrRes.isErr(): + raise newException(Defect, "failed to generate the node ENR record: " & $nodeEnrRes.error) + return WakuNode( peerManager: PeerManager.new(switch, peerStorage), switch: switch, rng: rng, - enr: netConfig.getEnr(wakuDiscv5, nodekey), + enr: nodeEnrRes.get(), announcedAddresses: netConfig.announcedAddresses, wakuDiscv5: if wakuDiscV5.isSome(): wakuDiscV5.get() else: nil, ) diff --git a/waku/v2/protocol/waku_enr.nim b/waku/v2/protocol/waku_enr.nim index 3b8e685c6..1b78626d5 100644 --- a/waku/v2/protocol/waku_enr.nim +++ b/waku/v2/protocol/waku_enr.nim @@ -195,46 +195,3 @@ func multiaddrs*(record: TypedRecord): Option[seq[MultiAddress]] = return none(seq[MultiAddress]) some(decodeRes.value) - -## Utils - - - -## ENR - -func init*(T: type enr.Record, - seqNum: uint64, - privateKey: crypto.PrivateKey, - enrIp = none(ValidIpAddress), - enrTcpPort = none(Port), - enrUdpPort = none(Port), - wakuFlags = none(CapabilitiesBitfield), - multiaddrs: seq[MultiAddress] = @[]): T {. - deprecated: "Use Waku commons EnrBuilder instead" .} = - - assert privateKey.scheme == PKScheme.Secp256k1 - - ## Waku-specific ENR fields (https://rfc.vac.dev/spec/31/) - var wakuEnrFields: seq[FieldPair] - - # `waku2` field - if wakuFlags.isSome(): - wakuEnrFields.add(toFieldPair(CapabilitiesEnrField, @[wakuFlags.get().uint8])) - - # `multiaddrs` field - if multiaddrs.len > 0: - let value = encodeMultiaddrs(multiaddrs) - wakuEnrFields.add(toFieldPair(MultiaddrEnrField, value)) - - let - rawPk = privateKey.getRawBytes().expect("Private key is valid") - pk = keys.PrivateKey.fromRaw(rawPk).expect("Raw private key is of valid length") - - enr.Record.init( - seqNum=seqNum, - pk=pk, - ip=enrIp, - tcpPort=enrTcpPort, - udpPort=enrUdpPort, - extraFields=wakuEnrFields - ).expect("Record within size limits")