How do unknown parties find each other on Horizon?

Horizon uses the blockchain as a discovery mechanism.  After a device registers itself on Horizon, it may advertise data and/or services it wishes to offer and what compensation it requires (if any).  More specifically, the advertiser creates a blockchain transaction containing a set of key-value pairs associated with its agreement address.  That transaction data will be written into the blockchain by miners on the Horizon blockchain.

When a device wishes to consume data or services from another Horizon participant, it will scan the blockchain looking for an agreement address that is advertising an appropriate set of key-value pairs.  For example, for some of the example Horizon Insights, Software Defined Radio hardware is required, so the code for that Microservice searches the blockchain for agreement addresses that are advertising SDR capabilities.  Also in the key-value pairs is information about what compensation is expected for the data or services.

Discovery over the Horizon blockchain is therefore based solely upon advertised key-value pairs.  Once a device is discovered, it is only known by its unique agreement address.  Even after discovery, the consuming device will be able to communicate with the advertising device only by means of the agreement address specified.  The IP address of the advertising device will not be known through this process.  The privacy of the advertising device is preserved even after it has been discovered.

Note that there is no central entity facilitating this discovery mechanism.  One peer is advertising on the blockchain, and then any number of other peers may then discover the advertising peer based upon the key-value pairs they have written.

Note also that only non-personally-identifiable-information should ever be written to the blockchain (which is transparent and public).  If a set of devices wishes to engage in a agreement after discovery, they can choose to expose addition private information after their agreement has been proposed and accepted.  Exchange of private information will therefore not occur until all involved parties wish this to occur.  Further, this exchange of information will occur via private Whisper communications, not on the public blockchain.

After discovery, devices will typically engage in contracting (agreement proposal and acceptance).