ELI9: Azimuth (previously known as NB-PoW)
The full article was originally published by Jake Cahill on Medium. Read the full article here.
A simple explanation (ELI9=explain like I am 9) of Azimuth (also known as NB-PoW) — A different approach to proof of work that we are working on as part of our long-term vision for IOTA. This post is the result of a collaboration among Marcos Andrade, Philipp Blum, Andrew Brough, Jake Cahill, Dave de Fijter, Sabri Goldberg, Sergey Ivancheglo, Igor Nielsen, Navin Ramachandran, and Samuel Reid.
First, let’s set the scene…
A wireless IoT device walks into a bar and starts doing push-ups.
“You don’t need to prove how much work you can do anymore” says the barmaid.
She looks at him, notes down his position at the bar and hands him the drink.
“Why are you writing down my position?” he asks.
The barmaid explains. “It’s one of the new bar rules. I can take one order from each position only once.”
“But, what happens when I leave?”
“Well, I won’t serve your position again until my timer goes off. I think I’ve set it for 8 seconds.”
“Ah, now we’re on the same wavelength!
“How do you find it so easy to turn customers away?”
“It’s easy. You all have faces for radio.”
The Bar — Explained
In Azimuth, nodes can send transactions to nearby neighbors through the air. On receipt, the neighbors make a note of which direction a transaction came from before processing it.
You can see this in action when the IoT device ordered a drink. Think of the order as a transaction. The barmaid (or neighbor) makes a note of his position at the bar.
If, during the same round, a neighbor receives another transaction from the same direction, it will treat it as spam and ignore it.
Until the timer goes off (signaling the end of a round), a device can’t order another drink from a position that’s already been served.
The idea here is that, during a round, a node cannot occupy enough physical space to send lots of spam from different directions and overwhelm the neighbor.
The device wouldn’t be able to change positions at the bar fast enough to order enough drinks to disrupt the barmaid.
Because nodes limit transactions by direction, they don’t need to know who their neighbors are in advance. Instead, they can accept transactions from any node as long as they don’t send them from a direction that’s already been used during a round.
The barmaid doesn’t care who the customers are. She doesn’t want to remember names or faces. She simply takes orders and notes down positions.
Why are we building Azimuth?
When anyone is free to take part in a network, some users turn out to be dishonest. An example of a dishonest user is one that sends many transactions to a node to try and take it offline. These transactions are known as spam.
To discourage spam, IOTA uses proof of work (PoW), which links transactions to a limited resource: computational power (work done by a computer). This way, sending spam transactions costs time and energy.
For devices such as laptops or servers that have access to the Internet and plenty of power supply, PoW is easy to do. But, devices on the Internet of Things (IoT) are often small and power-constrained, so this extra use of power is wasteful.
Instead, we need a way for these IoT devices to protect themselves from spam without wasting their energy on PoW.
With Azimuth, we can replace computational power with direction (a limited number of directions exist, so we link each transaction with a direction).
When a device uses Azimuth, it doesn’t need to do any work. The action of sending a transaction from a given direction is enough.
By using this approach, small IoT nodes can save energy, extend battery life, and avoid doing those troublesome push-ups.
Want to know more?
In this post, we discuss how Azimuth can use direction to limit transactions. For example, Li-Fi networks could use optical sensors to detect direction. But, Azimuth does not enforce any specific implementation. For example, radio networks are free to use antennas to detect signal strength and distinguish devices by distance.
As we mentioned before, all permissionless networks have dishonest users. In the case of Azimuth, these users could try to fake their direction or their distance to be able to send more transactions during a round. This type of attack is called a Sybil attack.
Today, devices already have the means to detect some of these attacks through radio resource tests, which would be prohibitively expensive to cheat. For example, a radio device would need many transmitters, and a LiFi device would need to be large enough to occupy lots of physical space.
We invite you to learn about these technologies if you want to know the details of how Azimuth will work.
Azimuth will allow IoT nodes to protect themselves from spam without using unnecessary computational power doing proof of work.
This approach to spam protection will also allow nodes to accept incoming transactions from any neighbor who is close enough (autopeering).
As a result, small IoT devices will easily be able join an IOTA network without wasting their resources, leading to an increased number of nodes — an important step towards a machine-to-machine economy.