Source available on GitHub
The future of the concept of the "Internet of Things" is a way for computers to communicate with each other without specifically being developed for each other, or even knowing each other's function, much like humans do in everyday life. They should be able to network information between each other like a crowd of people gossiping information across the group, and they should be able to work together and solve conflicts with each other intelligently.
All of this needs to be done without specific coding of every possible situation. This will only be possible with a standard way of communicating between nodes in the network.
Inspired by the BitCoin network, which operates as a massive interconnected P2P network of computers that operate on mutual trust, I wrote AirNet, a system for massive p2p networks.
AirNet individuals communicate with each other across the network using a "gossip" algorithm.
A message can originate at any point in the network. The message contains a header with the following information:
- The source of the message
- The body (contents) of the message (could be encrypted, is just binary data)
- The signed hash of the contents
- The public key of the sender.
The sender can be identified by their public key by all elements of the network.
Every individual node will hash the contents of the message and verify the signature of the message. If the message is verified, it will re-transmit it to all connected clients. Every node will re-transmit and verify each message once. This prevents an infinate loop of re-transmission on the network.
This also consequently causes every node in the network to be anonymous. Anyone can transmit anything at any time from any point in the network. This is quite a good implementation of communication for botnets, but I won't detail that too much here.
I have a basic implementation of the project running in NodeJS, however, it is once again somewhat limited and could be done better. Node is also not the best language to start this project, although ultimately the project would have to support nearly every language.
I plan to re-visit this project sometime in the future.