How does a NEW node connect to the SAFE Network?


#1

Assume the SAFE Network has been established. How does a new node establish connections to the Network?

http://maidsafe.net/SystemDocs/system_components/autonomous_network.html
See… “Cryptographic Security (1), Identify Nodes (2), Accurate DHT (3), NAT traversal (4).”

Here’s another reference.


Here’s my Post Office Analogy. I hope someone can explain it better.

XOR Space = Post Office Environment
Node Identity = PO Box #

A new user wants to connect to the SAFE Network. They first create a PO Box # to identify themselves within the Post Office Environment. This is self generated through encryption.

Example part 1
Their PO Box # ends up being 21.

Now they know they are box 21, and look for their closest neighbors. So they ping boxes 20, and 22. If there’s no response, they continue on to 19 and 23… and so on. This process builds their list of close neighbors, also known as the DHT (Distributed Hash Table).

Once they make a successful connection to a neighbor, they exchange contact information of other “active” box numbers.

Example part 2
Box 21, successfully connected to box 17. Box 17 already knows box 15 and 30 exists. So 15 and 30 are added to box 21’s DHT list. This process continues until there are 64 connections established.

Example part 3
If box 17 is no longer connected/responding, box 21 automatically updates their list of 64 connections with a new neighbor. The DHT is constantly changing as boxes become active/inactive.

I hope this makes sense. Feel free to correct or improve the analogy for better understanding.


Q: What are the chances of 2 nodes having the same PO Box identity?

A: Astronomical. So it should be very unlikely.


Paige Peterson presents MaidSafe at Libertopia 2014
#2

Thanx for the post.I learned that users running Maidsafe will have somehting like 4 tot 8 ip-connections to other users. What about a XOR-adress? Will the program use the same XOR-adress for all the 4 to 8 ip-connections? Or will it create a XOR-adress for every ip-connection?

And about sending out a ping to box 20 and 21… That’s okay with numbers like that. But there are more XOR-adresses possible than there are atoms in the universe. We cannot ping all of them don’t we? So how does that work?


#3

I do know IP connections for your closest 4-8 nodes is unavoidable, for now. But beyond that, it should be XOR only. Ideally, we should strive for XOR on all connections, enabling 100% anonymity.

I figured this question would come up. Here’s my unofficial answer.

In order to “start” the Network, there must be “bootstrap” nodes at launch. These are node addresses coded into the API or maybe a Maidsafe DHT preconnection file. It’s up to MaidSafe how they start it.

Hypothetical Example
MaidSafe starts the SAFE Network by turning on Node 123abc456. The API version 1.0 will have this as a default connection in the DHT. When a new user tries to connect to the Network at launch, they immediately ping 123abc456 and update their own DHT.

As more connections are made… bootstrap node 123abc456 DHT will change, chain reacting updates to those who are connected.

As the Network grows, new users will continually update their DHT with neighbors closest to them. Eventually they will not have node 123abc456 because there are 64 other connections closer to them.

Fast forward a year. Now a new user has 3 options.

  1. Launch their API with bootstrap node addresses. Most likely, these addresses will be publicly posted by Project SAFE developer pods.

  2. Launch their API from a friend invite. The invite gives them an instant connection address to download their DHT and update it until they find close neighbors. This would be awesome, if we can add it along with a gift code for some free storage.

  3. Launch the API and ping the Network space until it hits. Probably the worst way to do it in the beginning. But as the Network grows exponentially larger, the wait time for a hit reduces. Keep in mind, you’re not the only one pinging the Network, there could be millions of nodes pinging simultaneously. So even if you don’t find them, they might find you. :smile:


#4

So I finally connect to 64 nodes. Have them all in a table, and when I learn about a new node (number 65) I kick out the node that’s most far away from me and replace it with the closer one?

And how do I prove to my 4 closest nodes that they are my 4 closest nodes? Do I show them my routing table? Showing them the list of the 64 node I’m connecting to so they can check that’s true?


#5

Yes, that is my assumption.

Good question.

Yes, I would think both sides would know just by looking at the XOR address space. If you’re both sharing an “overlapping part” of same routing map, it should be obvious who is close to who within the Network.


Here’s some clarification between Vault nodes (64 connections) and Client nodes (4 connections).
@dirvine also talks about the bootstrap process and future planning.


#6

Wow you guys are way smarter than me…

I shoulda taken Calc…