Pre-Dev-Update Thread! Yay! :D

The current releases and test nets (especially community test nets) are mostly for the brave and technical, really. Maidsafe will ensure it is packaged up in a simple way when they are ready to get more people onboard.

Remember, David Irvine is very aware of not releasing something with a bad user experience, despite the community clamoring for it.

8 Likes

What is this pull request? Is he adding time into SAFE?

No it’s local time for timestamps locally (Cache etc.). Rust recently added this as an std feature so most of our crates switched, this one is one of the last stragglers to switch from using the time crate to std::time. Still not time used in network comms :wink:

6 Likes

I looked at it as it got pulled, but I have no idea.

Safe Core is at version 0.14.6

Safe Vault is at version 0.8.1

Kademlia Routing Table is at version 0.5.2

Crust is at version 0.13.2

EDIT: One more…

SAFE Launcher is at version 0.4.4

14 Likes

I know, it’s ugly, and I have tried to mitigate this by documenting exactly what I did on the recent community testnet, here and here. I test everything before I write it down, or at least I come back and correct it when I leave a detail out.

4 Likes

Did you try Test 2? There was no high level technical setup for the vault at all for me on Win7. Literally just run the .exe and it worked (I was one of the first vaults, since I saw the update within 1 minute). I don’t think I messed with anything else on my computer beforehand, like Internet settings. (I might’ve already had the PAC file set up, for browsing SAFE sites.) Sorry it didn’t work out for you; I wonder what was the problem.
… I then continued to run Launcher and Demo App flawlessly, having a website on the network within several minutes of actual labor (not counting staring at the Vault command line information).

2 Likes

Quite a big Pull Request coming to routing.

This uses the new kademlia_routing_table that allows using different group sizes, and being less aggressive with removing unneeded connections. It also re-enables the common_groups feature that doesn’t
send events to the upper layers if a churn event did not change any of the node’s close groups.

Are the 32 close nodes gone?

This is interesting as well. Looks like not only chunks are cached, but messages as well. Which makes sense when having a lot of churn on the network:

This replaces the parallel sending mechanism with message acks. This includes sending acks in
response to all messages, caching sent messages pending receipt of an ack for each, resending those
which don’t receive an ack, and adding a route specifier to HopMessage.

Same for acknowledges for all messages. That way all nodes know exactly which messages got through and which not if I’m correct.

6 Likes

8 group size is not new. it is already defined in kademlia_routing_table crate (in src/lib.rs) since a long time.

/// The size of a close group.
///
/// The `GROUP_SIZE` XOR-closest nodes to an address constitute the *close group* with that
/// address.
pub const GROUP_SIZE: usize = 8;

/// The number of nodes in a group that represent a quorum.
///
/// A message from a close group should be considered legitimate if at least `QUORUM_SIZE` members
/// sent it.
const QUORUM_SIZE: usize = 5;

There are 2 things I hope are temporary:

  • 5/8 consensus seems fragile
  • constants are duplicated in code
3 Likes

The GROUP_SIZE=8 and the QUORUM_SIZE=5 was in the kademlia_routing_table for many months.

I don’t know if this number will be in the final software but there are many changes in the routing and kademlia crates because of the use of acks (Rather than a message being sent via parallel routes, instead it will be sent via a single route and will require an ack to be sent by the recipient).

1 Like

Okay what is an “ack” and what is “HopMessage” ? I think we need to start linking to these defined terms in the code or better yet an English definition in the wiki or something.

2 Likes

ACK is an abbreviation for “acknowledge.” An ACK packet is sent in response to a message, letting the sender know it was received. A communications protocol that does this is called connection-oriented, as compared to a so-called connectionless protocol such as UDP. If you look up packet switching it tells you more about all this.

3 Likes

I wanted to learn that myself, so I decided to look in the source code to find where it is defined. Since I’ve been compiling the vault, and I know the source code in question must be in either safe_vault or its dependency tree, and all the files are either in ~/.cargo or my projects directory, I opened a terminal session in my home directory and gave the command:

    $ grep -r -n "HopMessage" .

… which does a recursive string search from the current directory, and displays the line numbers where it finds the string. That leads me to a couple of type definitions, here and here.

2 Likes

A hop message is a message in transit through a routing node. So a hop. Sending a message form Node A → B may go through several kademlia hops. Each of those is a hop message.

Crust will use authenticated encryption very soon and will be able to secure these and prevent replay attacks at that level. In routing (a level up) then there is further checks such as signed messages via hops. Different from authenticated encryption a signed message is “proof” a node did something.

Anyhow a Hop Message in the context above is a routing node hop.

Many of these things are described in each libraries documentation, but that’s for developers really, not users really. This particular type is not public (not in API), but if you are looking for deeper info the docs are quite good, many have uml and sequence diagrams etc. as here http://maidsafe.net/routing/master/routing/index.html

Reading this though will show why we would not attempt to put everything in a wiki, these docs auto update with each commit to master branch so can change quickly. Here they are accurate though.

13 Likes

God I cannot wait for tuesdays update. I want something functional. I want to use the network but because of the bugs in the system I can’t. So I’m hoping for a better test network or at least some bug fixes or something.

1 Like

I used the community testnet. Worked perfectly. Did you try? What issues did you experience? We are miles away from fully functional.

5 Likes

Login credentials kept getting deleted. I’d make an account, very simple easy to remember credentials. No way possible to forget. Log in, log out, and try to log in again and boom the credentials don’t work. sometimes the registration itself doesn’t work. Hard to upload when the launcher is constantly dropping out and it can’t remember my login credentials.

No I haven’t tried the community testnet but that’s mostly because I haven’t figured out the config file. Should I make a backup of the old config file? Probably don’t need to as there’s one in the zip.

1 Like

I don’t need something fully functional but something I could upload data to would be nice.

1 Like

That sounds as if you created credentials either during testnet wipe or while it was down.

It´s easy as pie. Trust me, I am not a techie either. @bluebird documented everything just fine and if you go along instructions it will work like a machine. The short version is: copy the information which @bluebird shared in the correspondent thread into the config file (both: launcher and vault if you want to run one) - and that´s it.

Backups…not really needed. The next Maidsafe testnet will probably have new config files. Otherwise you simply download it again.

Don´t worry, it´s easy and it works if it is up (could be down currently).

1 Like

Maybe @blindsite2k is looking for something more than a testnet?

Its nature is to fail and be reset. Maybe better to wait if you want something functional. Things will improve over time in fits and starts, and backward steps. If you don’t like that, better wait.

4 Likes