Skip to content

Commit

Permalink
chore: remove deprecated enr record init method
Browse files Browse the repository at this point in the history
  • Loading branch information
Lorenzo Delgado committed Apr 4, 2023
1 parent caf7824 commit 0627b4f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 99 deletions.
47 changes: 0 additions & 47 deletions tests/v2/test_waku_enr.nim
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
35 changes: 26 additions & 9 deletions waku/v2/node/waku_node.nim
Expand Up @@ -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
Expand Down Expand Up @@ -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,
)
Expand Down
43 changes: 0 additions & 43 deletions waku/v2/protocol/waku_enr.nim
Expand Up @@ -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")

0 comments on commit 0627b4f

Please sign in to comment.