NodeDiscoveryNet [07/07/23 Testnet] [Maidsafe nodes offline]

Our next testnet, NodeDiscoveryNet, is looking to see how our network discovery is coming for nodes.

We’ve recently made a change to use only Manual kbucket inserts, as the default appeared to be overzealous and including a lot of erroneous connection info in our routing table. We’ve also made some other improvements to reduce messaging (there was a misused API returning more nodes than we thought), along with other wee client and node improvements.

With all that, our objectives for this testnet are relatively simple:

  • Verify if we still have “lost nodes” and get more logs around that.
  • Verify recent improvements to safeup and client
  • Discern “normal” node mem usage (specifcally how many nodes can we reliably run per droplet, or indeed shine a light on any issues there).

Connecting to NodeDiscoveryNet

Contact peers to be used for this network (more on how to use this below):

backup peers:

Initial Network

We have 100 droplets running a total of ~2000 nodes. One droplet has 2vcpu and 4GB of memory. (this is 2gb above prior testnets, with nodes sometimes peaking higher with churn; this appears fleeting and may just be normal run conditions… :eyes: ).

Installing Components

Interacting with the network requires the safe client binary. Running a node requires the safenode binary.

Obtaining them depends on the operating system you’re using, but the process is almost identical for both.

Install safeup

The safeup binary can be used to obtain the client and node binaries.

macOS/Linux (root)

curl -sSL | sudo bash

macOS/Linux (current user)

curl -sSL | bash


Run the following command in a Powershell session (be careful to use Powershell, not cmd):

iex (Invoke-RestMethod -Uri "")

Install Binaries

Once you have safeup, you can install the binaries using these commands on any platform. Note: for Linux/macOS users, prefix the commands with sudo if you wish to install system wide.

Install safenode:

safeup node -v 0.86.5

Install safe:

safeup client -v 0.79.5

Using the Client

Once you have the client, you need to either set the SAFE_PEERS environmental variable or use the --peer= argument with any of the above network addresses.

Now to upload a directory/file to the network, use the following command:

# using the SAFE_PEERS variable (use 'SET' instead of 'export' on Windows) **[should be $env:SAFE_PEERS.. If set should be lower case I think - JL]**
export SAFE_PEERS="/ip4/"
safe files upload -- <path>

# alternatively using the --peer argument. It should be set during each command
safe --peer="/ip4/" files upload -- <path>

The file addresses of the content you’ve uploaded are saved locally and are used to enable automatic downloads. Use the following command to download them once more.

To download the content you’ve just uploaded:

safe files download

That will download the file(s) to [default dirs in Linux/Mac/Windows]

To download a file to a particular file name and/or directory use

safe file download [directory/filename] [XORURL]

Running a Node

Connect your node to the network using the SAFE_PEERS environment variable or the --peer argument, similar to the client. Consider keeping your logs in a directory for convenience:

SN_LOG=all safenode

Windows is almost identical, but environment variables are handled a little differently:

$env:SN_LOG="all"; safenode

You ask you get :laughing:


Woohoo! Here we go, here we go, here we go again…

To capture logs for use with vdash I suggest this to start your node:

SN_LOG=all safenode --root-dir=/tmp/safenode1 --log-output-dest /tmp/safenode1

They come and we will build it :smiley: :smiley:


Yay! Another testnet to give us all hope and give the community a great way to contribute. :horse_racing:

What a nice start to the 2nd half of 2023. :horse_racing:



So I don’t want to go off on too much of a tangent about this and detract from the point of this testnet, but why does vdash require the use of custom root and logging directories?

We’ve went to quite a bit of effort recently to provide what in my opinion are good defaults.


Nice one again, Maidsafe team!
Got a few nodes running (cloud instance) and uploading nicely!



When I ran without args the output went to the terminal not a logfile.


You can use safenode --log-output-dest data-dir. This will send the output to the default location, which is at:

~/.local/share/safe/node/<peer id>/logs

The root directory is the one above.


Yeh, I personally didn’t want suçh a long path so I specified it.


Those directories are from the XDG base directory specification and are useful because other applications are also adhering to that standard.


This is a little unclear. Is this testnet trying to locate and bring NAT’d nodes into the fold, or should we not try to join with NAT’d nodes yet?


Yeh, I know but I’m a creature of habit and much as I admire going for the standard I’ve not seen anything use this yet.

I may try your XDG spec but it’s unweildy using long paths especially on my mobile terminal so not sure :thinking:


No, I think this is non NAT only.


There are nearly 13000 files in my ~/.local/share. Lots of applications use it. Anyway, like I said I didn’t want to detract from this too much, but I think we have quite good defaults with the peer ID.


its passed the Beg Blag test :slight_smile:

safe files download begblag.mp3 3eb0873bd425e5599d72c2873ca6e691d5de5c75bbc89f2e088fa95e3390927a

Results of my test: connection process looks slower than before, but upload and download works.
Node started fine too and stored 200 MB of records already.


And yet another test net! This is amazing progress. Thanks to all involved.


I am in, balling with a massive 1vcpu-1gb single node on DO.
[Flexing :slight_smile: ]
Chunks coming in fast.

2 cents, I find it a little fidgety starting a node, for me at least it is a little more involved than the instructions.

export SAFE_PEERS="/ip4/"
export SN_LOG=all
nohup safenode --log-output-dest data-dir &

Granted fidgety is a little overly dramatic.