mirror of
https://github.com/waku-org/nwaku.git
synced 2025-02-10 14:06:38 +00:00
chore: remove deprecated enr record init method
This commit is contained in:
parent
caf78249b2
commit
0627b4f8f2
@ -63,27 +63,6 @@ suite "Waku ENR - Capabilities bitfield":
|
|||||||
check:
|
check:
|
||||||
bitfield.toCapabilities() == @[Capabilities.Relay, Capabilities.Store]
|
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":
|
test "cannot decode capabilities from record":
|
||||||
## Given
|
## Given
|
||||||
let
|
let
|
||||||
@ -221,32 +200,6 @@ suite "Waku ENR - Multiaddresses":
|
|||||||
multiaddrs.contains(addr1)
|
multiaddrs.contains(addr1)
|
||||||
multiaddrs.contains(addr2)
|
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":
|
test "cannot decode multiaddresses from record":
|
||||||
## Given
|
## Given
|
||||||
let
|
let
|
||||||
|
@ -223,16 +223,29 @@ proc init*(
|
|||||||
|
|
||||||
proc getEnr*(netConfig: NetConfig,
|
proc getEnr*(netConfig: NetConfig,
|
||||||
wakuDiscV5 = none(WakuDiscoveryV5),
|
wakuDiscV5 = none(WakuDiscoveryV5),
|
||||||
nodeKey: crypto.PrivateKey): enr.Record =
|
nodeKey: crypto.PrivateKey): Result[enr.Record, string] =
|
||||||
if wakuDiscV5.isSome():
|
if wakuDiscV5.isSome():
|
||||||
return wakuDiscV5.get().protocol.getRecord()
|
return ok(wakuDiscV5.get().protocol.getRecord())
|
||||||
|
|
||||||
return enr.Record.init(1, nodekey,
|
var builder = EnrBuilder.init(nodeKey, seqNum = 1)
|
||||||
netConfig.enrIp,
|
|
||||||
netConfig.enrPort,
|
builder.withIpAddressAndPorts(
|
||||||
netConfig.discv5UdpPort,
|
ipAddr = netConfig.enrIp,
|
||||||
netConfig.wakuFlags,
|
tcpPort = netConfig.enrPort,
|
||||||
netConfig.enrMultiaddrs)
|
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 =
|
proc getAutonatService*(rng = crypto.newRng()): AutonatService =
|
||||||
## AutonatService request other peers to dial us back
|
## AutonatService request other peers to dial us back
|
||||||
@ -347,11 +360,15 @@ proc new*(T: type WakuNode,
|
|||||||
services = @[Service(getAutonatService(rng))],
|
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(
|
return WakuNode(
|
||||||
peerManager: PeerManager.new(switch, peerStorage),
|
peerManager: PeerManager.new(switch, peerStorage),
|
||||||
switch: switch,
|
switch: switch,
|
||||||
rng: rng,
|
rng: rng,
|
||||||
enr: netConfig.getEnr(wakuDiscv5, nodekey),
|
enr: nodeEnrRes.get(),
|
||||||
announcedAddresses: netConfig.announcedAddresses,
|
announcedAddresses: netConfig.announcedAddresses,
|
||||||
wakuDiscv5: if wakuDiscV5.isSome(): wakuDiscV5.get() else: nil,
|
wakuDiscv5: if wakuDiscV5.isSome(): wakuDiscV5.get() else: nil,
|
||||||
)
|
)
|
||||||
|
@ -195,46 +195,3 @@ func multiaddrs*(record: TypedRecord): Option[seq[MultiAddress]] =
|
|||||||
return none(seq[MultiAddress])
|
return none(seq[MultiAddress])
|
||||||
|
|
||||||
some(decodeRes.value)
|
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")
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user