octoblu / meshblu

Meshblu is a cross-protocol IoT machine-to-machine messaging system.
https://meshblu.readme.io/
MIT License
815 stars 182 forks source link

Decentralization #13

Closed paralin closed 10 years ago

paralin commented 10 years ago

Would it be possible to decentralize the core server of skynet to allow the network to work much like the Bitcoin blockchain?

In BitCoin, you have a bunch of known, trusted, nodes. Any client is both a server and a client, it can connect to any given node that knows about other nodes, receive a list of other nodes, and connect to them, and so on. This allows a decentralized network of computers all communicating with each other to exchange new nodes in the network.

It would be great to implement this in SkyNet to decentralize the server to all of the clients - so that any given client could connect to any other client and immediately know about all of the other Things in the network.

chrismatthieu commented 10 years ago

We discuss this design frequently and would love to reach this goal. One approach would be to implement an architecture based on something like Dominic Tarr's CRDT library (https://github.com/dominictarr/crdt) to maintain device directories across a mesh network. Another option would be to expand on our soon-to-be-released Skynet Gateway allowing gateway devices to relay messages up and down a series of gateways until they reach the Skynet cloud or the intended device connected to a far-end gateway.

Any suggestions and pull requests are appreciated.

On Feb 18, 2014, at 9:49 PM, Christian Stewart notifications@github.com wrote:

Would it be possible to decentralize the core server of skynet to allow the network to work much like the Bitcoin blockchain?

In BitCoin, you have a bunch of known, trusted, nodes. Any client is both a server and a client, it can connect to any given node that knows about other nodes, receive a list of other nodes, and connect to them, and so on. This allows a decentralized network of computers all communicating with each other to exchange new nodes in the network.

It would be great to implement this in SkyNet to decentralize the server to all of the clients - so that any given client could connect to any other client and immediately know about all of the other Things in the network.

— Reply to this email directly or view it on GitHub.

chrismatthieu commented 10 years ago

We now support basic mesh networking and inter-cloud communications by allowing you to route messages to uuid/uuid/uuid etc. where each cloud has it's own UUID. We have recently added Multicast DNS to SkyNet to make it easier for other clients and clouds to discover and connect with each other. More work is being done to improve our mesh networking capabilities.