mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
Implement GetIdentity in the node API (#8230)
* initial implementation * register metadata provider * final implementation * tests * fixed imports * gazelle * code review * small cleanup * change errors.Wrap to status.Errorf * gazelle + goimports Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
This commit is contained in:
@@ -19,7 +19,46 @@ import (
|
||||
|
||||
// GetIdentity retrieves data about the node's network presence.
|
||||
func (ns *Server) GetIdentity(ctx context.Context, _ *ptypes.Empty) (*ethpb.IdentityResponse, error) {
|
||||
return nil, errors.New("unimplemented")
|
||||
ctx, span := trace.StartSpan(ctx, "nodeV1.GetIdentity")
|
||||
defer span.End()
|
||||
|
||||
peerId := ns.PeerManager.PeerID().Pretty()
|
||||
|
||||
serializedEnr, err := p2p.SerializeENR(ns.PeerManager.ENR())
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "could not obtain enr: %v", err)
|
||||
}
|
||||
enr := "enr:" + serializedEnr
|
||||
|
||||
sourcep2p := ns.PeerManager.Host().Addrs()
|
||||
p2pAddresses := make([]string, len(sourcep2p))
|
||||
for i := range sourcep2p {
|
||||
p2pAddresses[i] = sourcep2p[i].String() + "/p2p/" + peerId
|
||||
}
|
||||
|
||||
sourceDisc, err := ns.PeerManager.DiscoveryAddresses()
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "could not obtain discovery address: %v", err)
|
||||
}
|
||||
discoveryAddresses := make([]string, len(sourceDisc))
|
||||
for i := range sourceDisc {
|
||||
discoveryAddresses[i] = sourceDisc[i].String()
|
||||
}
|
||||
|
||||
metadata := ðpb.Metadata{
|
||||
SeqNumber: ns.MetadataProvider.MetadataSeq(),
|
||||
Attnets: ns.MetadataProvider.Metadata().Attnets,
|
||||
}
|
||||
|
||||
return ðpb.IdentityResponse{
|
||||
Data: ðpb.Identity{
|
||||
PeerId: peerId,
|
||||
Enr: enr,
|
||||
P2PAddresses: p2pAddresses,
|
||||
DiscoveryAddresses: discoveryAddresses,
|
||||
Metadata: metadata,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetPeer retrieves data about the given peer.
|
||||
|
||||
Reference in New Issue
Block a user