diff --git a/nimbus/rpc/common.nim b/nimbus/rpc/common.nim index 6282039bf..c265dcee9 100644 --- a/nimbus/rpc/common.nim +++ b/nimbus/rpc/common.nim @@ -8,10 +8,22 @@ # those terms. import - strutils, tables, + std/[strutils, tables], nimcrypto, eth/common as eth_common, stint, json_rpc/server, - eth/p2p, - ../config, hexstrings + eth/p2p, eth/p2p/enode, + ../config, ./hexstrings + +type + NodePorts = object + discovery: string + listener : string + + NodeInfo = object + id : string # UInt256 hex + name : string + enode : string # Enode string + ip : string # address string + ports : NodePorts proc setupCommonRPC*(node: EthereumNode, server: RpcServer) = server.rpc("web3_clientVersion") do() -> string: @@ -33,3 +45,16 @@ proc setupCommonRPC*(node: EthereumNode, server: RpcServer) = server.rpc("net_peerCount") do() -> HexQuantityStr: let peerCount = uint node.peerPool.connectedNodes.len result = encodeQuantity(peerCount) + + server.rpc("net_nodeInfo") do() -> NodeInfo: + let enode = toEnode(node) + result = NodeInfo( + id: node.discovery.thisNode.id.toHex, + name: NimbusIdent, + enode: $enode, + ip: $enode.address.ip, + ports: NodePorts( + discovery: $enode.address.udpPort, + listener: $enode.address.tcpPort + ) + )