diff --git a/cmd/rpcdaemon/services/eth_backend.go b/cmd/rpcdaemon/services/eth_backend.go
index e939acd0d129eeff37c9b718211bd1b956a3d367..758343d80c7bf598c418dbb69ecf5691f1129ddc 100644
--- a/cmd/rpcdaemon/services/eth_backend.go
+++ b/cmd/rpcdaemon/services/eth_backend.go
@@ -182,11 +182,16 @@ func (back *RemoteBackend) NodeInfo(ctx context.Context, limit uint32) ([]p2p.No
 
 	ret := make([]p2p.NodeInfo, 0, len(nodes.NodesInfo))
 	for _, node := range nodes.NodesInfo {
-		var protocols map[string]interface{}
-		if err = json.Unmarshal(node.Protocols, &protocols); err != nil {
+		var rawProtocols map[string]json.RawMessage
+		if err = json.Unmarshal(node.Protocols, &rawProtocols); err != nil {
 			return nil, fmt.Errorf("cannot decode protocols metadata: %w", err)
 		}
 
+		protocols := make(map[string]interface{}, len(rawProtocols))
+		for k, v := range rawProtocols {
+			protocols[k] = v
+		}
+
 		ret = append(ret, p2p.NodeInfo{
 			Enode:      node.Enode,
 			ID:         node.Id,