Discovery of nodes without central server

+2 votes
Hi there,

I'm trying out the multichain alpha. My goal is to create a system where users can put files in streams and keep it persistant.

Now I'm very new to this and I'm trying to grasp the concepts so allow me a mistake.

While walking through the Getting Started the daemon needs to connect to a central server.

Is this always necessary? Is there a way to discover nodes on it's own (don't know how it should be done but OK)

Is there some sort of lightweight discovery daemon which we can run to have nodes discover eachother?

Because I thought the system was decentrilized but if it requires an initial setup to the main server it's not really decentrilized is it?

What I want to do is:

Have each client run the daemon for mining and working with the blockchain. People should be able to read/write to the local daemon and the daemon should sync with other nodes.

Another question: Are you planning to support OSX?
asked Jan 20, 2017 by B

1 Answer

+1 vote
You don't need a central server. Any node, when connecting to the blockchain for the first time, can connect to any other node already running, and then there is an auto-discovery process whereby nodes learn about each other and make multiple peer-to-peer connections. You don't need a separate auto-discovery process.
answered Jan 20, 2017 by MultiChain
Thank you for your quick reply.

I guess this is working on a private network but what about the internet?

In order to connect to an already running node you need to know that IP, or is multichain able to discover a node purely on an identifier?

It might be possible multichain is not the right tool for me. What I want to make is an image upload tool where all data is distributed across all nodes.

Every client runs the daemon. (is this even possible? what about different free diskspace of clients?)
It works fine on the Internet, but yes, you do need to know the IP address of an existing node in order to get started. Bitcoin solved this by there being some domain names which resolve to the IP address of some nodes. and the same type of solution could be used with a MultiChain blockchain.

For more, see: http://bitcoin.stackexchange.com/questions/14371/what-is-a-dns-seed-node-vs-a-seed-node

In practice I don't think it's a major problem. If your network succeeds then there will tons of people willing to publish their node address.

As for your other question, all images would be stored on all clients. This gives a great retrievability guarantee but is less efficient than something like IPFS, which uses a DHT (distributed hash table) to partition the data across a peer-to-peer network, with plenty of redundancy but no guarantee of retrievability.
Thanks for your info, it's clear now.

You're right about that we did take a look at IPFS but the problem about that data is being shared like a torrent. Addresses need to be added manually and is only retreived on request.

Which is fine if you are just sharing some files, but not if you want to make sure no data is ever lost. And that is the mission.

Thanks again.
Related to the solution of the bitcoin use for peer discovery (DNS seed) how can we use this within multichain as within bitcoin node there are some domain names(hard coded) that are used to connect to after resolving those domain names to IPs?.
...