Docs

Insights on Horizon


DevGuide

Overview

Horizon is designed to host applications producing insight at the edge (Horizon Insights).  A typical application with multiple edge devices providing data to the cloud for analytics would be built on Horizon as a Horizon Insight.  Horizon Insights use Horizon's decentralized tools and services to enable data & services providers and consumers to discover each other, safely form binding agreements, and begin working together to deploy and execute Insight compute.

Explore the material linked from this page to see some early Horizon Insights "live", or to find out more information about how Horizon Insights work.

Horizon Insights

In order to exercise Horizon and gain experience, the team has developed some experimental applications, called "Insights".  Anyone who adds an edge device to Horizon has the option to contribute data to one or more Insights and visualize the data from their device and all devices in the Horizon community.

Currently we have the following Insights available for participation:

  1. SDR-FM: Speech-to-Text and Sentiment Analysis
  2. Aircraft Tracking
  3. SDR-UI: Radio Spectrum Analysis
  4. Network Speed Test
  5. Personal Weather Station
  6. GPS Location
  7. PurpleAir Air Quality Monitoring

Additional Insights are under development by the Horizon team, and others.  Stay tuned for more links to appear here soon.

Please visit the links above for more information, screen captures and links to live visualizations.  If you have a device that is participating in any Horizon Insights, drill down to see the data from your specific device.

How Horizon Insights Work

The video below gives an overview of the major components of a Blue Horizon Insight application.

In general Horizon participants' devices use the Horizon tools to discover each other, and to automatically negotiate Smart Contracts, then collaborate to achieve mutually agreeable outcomes per the Smart Contract agreement.  As devices go through various states toward completion, information is recorded in the open and permanent ledger that is the Horizon blockchain.  Anything written there can be read by any Horizon participant.  All state information in Horizon is kept on the blockchain.  

The Horizon blockchain is decentralized, with full copies being held by all miners on Horizon.  It is updated by means of a consensus of the miners (for more information about how that aspect of Horizon works, please see our Blockchain Primer).  The important point here is that the Horizon blockchain, although completely decentralized, acts as a global public message bus that all devices use for discovery, negotiation, and transaction.

Note that whenever participants' devices need to exchange information that should not be public (e.g., their GPS coordinates, device serial numbers, etc.) they will normally use Whisper, a secure and private peer-to-peer messaging system.  Since messages sent via Whisper are private they are never recorded on the blockchain.

In order to read/write data from/to the blockchain, Horizon Insights rely on the Horizon Colonus agent.  Colonus runs on each participating device.  Those participating devices could be: IoT Things, IoT gateways, or cloud servers.  Colonus is what connects each participant onto the Horizon blockchain and peer-to-peer technologies and therefore onto Horizon.  Colonus enables devices to write information onto the blockchain to make offers, proposals, accept proposals from others, etc., and also enables this information to be read.

During the experimental phase, Horizon is using a private blockchain (where we have created the genesis block, and we provide and control all of the blockchain miners).  Horizon will work identically on a public blockchain.

In addition to Colonus, all Thing participants are currently expected to run Docker as well, in order to enable code containers to be delivered to them and executed.  (This limitation will be removed in a future release.)

During the experimental phase, Horizon uses a private BitTorrent network where all seeders are controlled by the Horizon team.

Interactions between Horizon participants often happen as follows.  Notice that even unknown and untrusted parties can discover each other in this manner, and safely enter into a binding agreement.  Notice also that all of this can be fully automated based on any desired policies and will be governed by self-executing smart contracts.

Producer:

  • Advertises (offers) data or services it wishes to sell (via blockchain)

Consumer:

  • Develops and publishes a Docker container containing code for the edge devices to run
  • Polls the blockchain until it finds a suitable offer
  • Escrows the appropriate funds (via blockchain)
  • Proposes to the Producer to purchase access (via blockchain)

Producer:

  • Accepts the Consumer’s proposal (via blockchain)
  • Downloads the Consumer’s signed Docker container (via BitTorrent, see BitTorrent Primer for more info)
  • Runs the container (which presumably will “call home” to deliver higher value, lower volume data to the Consumer)

Consumer:

  • Verifies that the Producer has complied with the contract (e.g., is delivering data to “home”)
  • Releases escrow so the Producer gets paid (via blockchain)

From the steps above, you can see that the only assumption required to enable safe and secure contracting between unknown and untrusted parties on Horizon is that an escrow service exists that is trusted by both parties.  To help bootstrap Horizon, the Horizon team has provided an escrow service as well.  The first several experiments built on Horizon all use the Horizon team's escrow service.

Note that when the Consumer in the above example published their code container, this entails a few steps.  The Docker container must be built, tagged, cryptographically signed, and uploaded to our private Horizon Docker BitTorrent seeders.

During the experimental phase, the Horizon team is the only trusted cryptographic signing authority.