From a300e12853cc0a62d0a6e2c407d208dce3db9875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?rich=CE=9Brd?= Date: Tue, 18 Jun 2024 15:48:49 -0400 Subject: [PATCH] feat_: wakuext_enr (#5367) --- eth-node/bridge/geth/waku.go | 5 +++++ eth-node/bridge/geth/wakuv2.go | 5 +++++ eth-node/types/waku.go | 2 ++ protocol/messenger_peers.go | 4 ++++ protocol/transport/transport.go | 4 ++++ services/ext/api.go | 4 ++++ wakuv2/waku.go | 9 +++++++++ 7 files changed, 33 insertions(+) diff --git a/eth-node/bridge/geth/waku.go b/eth-node/bridge/geth/waku.go index aa411ffda..ee32a00d7 100644 --- a/eth-node/bridge/geth/waku.go +++ b/eth-node/bridge/geth/waku.go @@ -109,6 +109,11 @@ func (w *GethWakuWrapper) ListenAddresses() ([]string, error) { return nil, errors.New("not available in WakuV1") } +// ENR function only added for compatibility with waku V2 +func (w *GethWakuWrapper) ENR() (string, error) { + return "", errors.New("not available in WakuV1") +} + // PeerCount function only added for compatibility with waku V2 func (w *GethWakuWrapper) DropPeer(peerID string) error { return errors.New("not available in WakuV1") diff --git a/eth-node/bridge/geth/wakuv2.go b/eth-node/bridge/geth/wakuv2.go index 2d3d4bf04..2dd426407 100644 --- a/eth-node/bridge/geth/wakuv2.go +++ b/eth-node/bridge/geth/wakuv2.go @@ -283,6 +283,11 @@ func (w *gethWakuV2Wrapper) ListenAddresses() ([]string, error) { return w.waku.ListenAddresses(), nil } +// ENR function only added for compatibility with waku V2 +func (w *gethWakuV2Wrapper) ENR() (string, error) { + return w.waku.ENR() +} + func (w *gethWakuV2Wrapper) DropPeer(peerID string) error { return w.waku.DropPeer(peerID) } diff --git a/eth-node/types/waku.go b/eth-node/types/waku.go index 31f90a629..e1904e321 100644 --- a/eth-node/types/waku.go +++ b/eth-node/types/waku.go @@ -92,6 +92,8 @@ type Waku interface { ListenAddresses() ([]string, error) + ENR() (string, error) + Peers() map[string]WakuV2Peer StartDiscV5() error diff --git a/protocol/messenger_peers.go b/protocol/messenger_peers.go index 1f5b28eba..91469773f 100644 --- a/protocol/messenger_peers.go +++ b/protocol/messenger_peers.go @@ -36,6 +36,10 @@ func (m *Messenger) ListenAddresses() ([]string, error) { return m.transport.ListenAddresses() } +func (m *Messenger) ENR() (string, error) { + return m.transport.ENR() +} + // Subscribe to a pubsub topic, passing an optional public key if the pubsub topic is protected func (m *Messenger) SubscribeToPubsubTopic(topic string, optPublicKey *ecdsa.PublicKey) error { return m.transport.SubscribeToPubsubTopic(topic, optPublicKey) diff --git a/protocol/transport/transport.go b/protocol/transport/transport.go index 607b2ed14..926d5e5d8 100644 --- a/protocol/transport/transport.go +++ b/protocol/transport/transport.go @@ -651,6 +651,10 @@ func (t *Transport) ListenAddresses() ([]string, error) { return t.waku.ListenAddresses() } +func (t *Transport) ENR() (string, error) { + return t.waku.ENR() +} + func (t *Transport) AddStorePeer(address string) (peer.ID, error) { return t.waku.AddStorePeer(address) } diff --git a/services/ext/api.go b/services/ext/api.go index 40f1bce05..76f3d8bb9 100644 --- a/services/ext/api.go +++ b/services/ext/api.go @@ -1484,6 +1484,10 @@ func (api *PublicAPI) ListenAddresses() ([]string, error) { return api.service.messenger.ListenAddresses() } +func (api *PublicAPI) Enr() (string, error) { + return api.service.messenger.ENR() +} + func (api *PublicAPI) ChangeIdentityImageShowTo(showTo settings.ProfilePicturesShowToType) error { err := api.service.accountsDB.SaveSettingField(settings.ProfilePicturesShowTo, showTo) if err != nil { diff --git a/wakuv2/waku.go b/wakuv2/waku.go index d69bb2fbf..d7cb1e5e8 100644 --- a/wakuv2/waku.go +++ b/wakuv2/waku.go @@ -1692,6 +1692,15 @@ func (w *Waku) ListenAddresses() []string { return result } +func (w *Waku) ENR() (string, error) { + enr := w.node.ENR() + if enr == nil { + return "", errors.New("enr not available") + } + + return enr.String(), nil +} + func (w *Waku) SubscribeToPubsubTopic(topic string, pubkey *ecdsa.PublicKey) error { topic = w.GetPubsubTopic(topic)