Introducing IOTA Area Codes (IACs)

IACs are short, tryte-encoded, location codes that can be used to tag and retrieve IOTA transactions related to specific locations. The IACs are typically 10 trytes long and will represent a 13.5m by 13.5m area, at the equator. However IACs can be 11 trytes long and represent a 2.8m by 3.5m grid.

IACs are a direct copy of the Open Location Codes, also known as Plus Codes, proposed by Google Zurich in 2014. There are a few minor changes to make it compatible with IOTA’s encoding.

Why this is powerful

When publishing information on IOTA there is no way to easily identify transactions that relate to a geographic areas. These transactions could contain localized service advertisements, sensor information or any number of other data formats.

In order to find transactions related to an area you’d have to register your transactions with a centralized service, like a data marketplace, that collects locations to store and serve it to consumers.

By using IACs in the first 11 trytes of the 27 tryte tag field in an IOTA transaction, we can localize an IOTA transaction to a 2.8m by 3.5m area. This allows for someone to find a transaction related to a small area, however the real value of this system comes from the ability to query large swaths of land for related transactions.

Querying large areas

The original OLC protocol is able to accurately represent areas on the globe by using 5 pairs of characters. Each pair of characters added to the code represent a 400x increase in accuracy. A side effect of the code being determined by sequential set of pairs, rather than a unique code, is we are able to vary the accuracy by removing pairs from right to left. This allows us to ingest and store the pairs in a way that we can query some what efficiently.

So by querying the initial 4 trytes of tags, that match the correct IAC format, we can find transactions in a 100km by 100km area.

Example: By querying for all tags that start with NPHT we can find all items in a 100km by 100km area covering Berlin & parts of Potsdam. Then by using these 6 trytes: NPHTQO we are able to see transactions within a few suburbs in central/north Berlin.

Examples

Today, we are publishing the library that enables encoding and decoding of location data. Along with this, Martyn Janes has created a fully featured demonstration that allows you to do the following:

Create & convert IACs

Publish IAC messages to the Devnet

Wildcard query all IAC transactions on the Devnet.

Watch IAC transactions appear in realtime on a map.

Demo Application: https://iota-poc-area-codes.dag.sh/

Github Library: https://github.com/iotaledger/iota-area-codes

NPM Repo: https://www.npmjs.com/package/@iota/area-codes