> IIRC, when a node connects to another node to make a *Request, it > provides the address + listenPort as a "callback number" to use if the > connection goes down. So it's not actually necessary to allow > inbound connections on arbitrary ports, for node-to-node > communications.
If you keep the connections up to an outside node then it doesn't have to call you back. However, this doesn't mean that everything is peachy. Any node that finds out about you will only have your address, not the address of the node you're talking to, so new nodes will never be able to find out about you. Also, you have to open a bunch of connections to all the nodes you know about whenever you start your node. If you want to be a really useful node then you need to open up connections to *all* the nodes you know about so that they can route messages to you at a whim. Otherwise they'll drop you. So it's hypothetically possible to make a modified node that will be considerably more useful to the network but it's still won't behave totally normally. A solution to the problem of letting other nodes find you is the "shadow node" proposal. If your address is relative to the addresses of other
