NODE_EXT_SERVICE: Advertise other services also available at this node.

It is not necessary to build all functionality into bitcoind, to form a decentralized network.  <vendor hat: on>  BitPay's insight open source block explorer API project requires, and runs on top of, bitcoind.  Therefore, at the same IP address as bitcoind, other services are made available to the public (scriptPubkey queries, other added-value queries).  This results in a decentralized network of "anyone running a full node _and_ an insight server", as a subset of the whole P2P net.  </vendor hat>

Obviously, we want to build this in a generic, vendor-neutral way.

Services may only advertise added services **if and only if** the external services are at the same IP address that is being advertised.

It makes sense to have a well-defined coarse include order. I.e. first your own include, then dependencies within the project, then dependencies outside the project. This makes sure that your own include file (in this case extservices.h) includes everything it needs on its own.

As for alphabetical sorting, it could be argued that that is a step too far, although if you want to define *some* fixed ordering within the groups alphabetical makes most sense. For example it makes it easier to see duplicates.