## server.features Return a list of features and services supported by the server. **Signature** > Function: > server.features() > > Version changed: > 1.4.2 *hosts* key is no longer required, but recommended. **Result** > A dictionary of keys and values. Each key represents a feature or > service of the server, and the value gives additional information. > > The following features MUST be reported by the server. Additional > key-value pairs may be returned. > > - *genesis_hash* > > The hash of the genesis block. This is used to detect if a peer is > connected to one serving a different network. > > - *hash_function* > > The hash function the server uses for `script hashing`. The client must > use this function to hash pay-to-scripts to produce script hashes > to send to the server. The default is "sha256". "sha256" is > currently the only acceptable value. > > - *server_version* > > A string that identifies the server software. Should be the same > as the result to the `server.version` RPC call. > > - *protocol_max* > > - *protocol_min* > > Strings that are the minimum and maximum Electrum protocol > versions this server speaks. Example: "1.1". > > - *pruning* > > An integer, the pruning limit. Omit or set to > `null` if there is no pruning > limit. Should be the same as what would suffix the letter `p` in > the IRC real name. > > The following features are RECOMMENDED that be reported by the > servers. > > - *hosts* > > A dictionary, keyed by host name, that this server can be reached > at. If this dictionary is missing, then this is a way to signal to > other servers that while this host is reachable, it does not wish > to peer with other servers. A server SHOULD stop peering with a > peer if it sees the *hosts* dictionary for its peer is empty > and/or no longer contains the expected route (e.g. hostname). > Normally this dictionary will only contain a single entry; other > entries can be used in case there are other connection routes > (e.g. Tor). > > The value for a host is itself a dictionary, with the following > optional keys: > > - *ssl_port* > > An integer. Omit or set to `null` > if SSL connectivity is not provided. > > - *tcp_port* > > An integer. Omit or set to `null` > if TCP connectivity is not provided. > > - *ws_port* > > An integer. Omit or set to `null` > if Web Socket () connectivity is not > provided. > > - *wss_port* > > An integer. Omit or set to `null` > if Web Socket Secure () connectivity is > not provided. > > A server should ignore information provided about any host other > than the one it connected to. **Example Result** { "genesis_hash": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "hosts": {"14.3.140.101": {"tcp_port": 51001, "ssl_port": 51002}}, "protocol_max": "1.0", "protocol_min": "1.0", "pruning": null, "server_version": "ElectrumX 1.0.17", "hash_function": "sha256" }