IOTA Area Codes — A proposal to geo-tag IOTA Transactions
The full article was originally published by Lewis Freiberg on Medium. Read the full article here.
IOTA is a flexible protocol that can be utilized in various ways. The most common is value transfer via the native token. However, IOTA can be easily extended by building standards on top of the base protocol. Both Masked Authenticated Messaging & Flash Channels are a perfect example of this.
Today we are proposing a new standard that will enable IOTA-based applications to be built around geographic regions.
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.
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.
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
IACs are a meant to be a catalyst for the community. The standard, in its current format, is useful but could be much better. We encourage you to drop by the Github and create some pull-requests to improve the code or suggest examples.