PunchBowl [Testnet 09/05/2024] [Offline]

alpha-punch went well until it didn’t. It did largely prove that the current hole-punching implementation can work. But, it may also be causing issues.

We suspect this is related to reuse of banned nodes for relay’s or overwhelming a subset of nodes as they are repeatedly (perhaps exclusively) used as relays for all incoming traffic.

Both of these things should be mitigated in this next testnet.

You should also be able to use the node launchpad to start nodes for this network too. (Though the binaries are still yet to be published… soon).

This might be one of the last networks to have a pre-filled faucet by default.
We’ll hopefully be moving to a more realistic approach soon, whereby the foundation is getting data uploaded, and users must earn money via uploads, (or indeed via transferring their OMNI balances to the new network).

In the meanwhile, it may be of interest that the wallets now create their keys via deriving from a mnemonic phrase. This means you’ll eventually be able recover your wallet from a seed phrase. You can find this in the client’s wallet/account_secret file.

This is as yet unencrypted, but we’ll be working to improve security around this in the future.

Network Details

Node version: 0.106.2
Client version: 0.91.2
Faucet url:

We have 50 droplets running a total of 2001 nodes. One droplet has 2vcpu and 4GB of memory.

If you are a regular user, see the ‘quickstart’ section for getting up and running.

If you are a first-time user, or would like more information, see the ‘further information’ section.


If you already have safeup, you can obtain the client and node binaries:

safeup client --version 0.91.2
safeup node --version 0.106.2

Run a Node





Check local node’s reward balance

Your local node’s peer id will be printed to the terminal on startup with an example command). (You can also retrieve this from the node directory.)

safe wallet balance --peer-id="<local-node-peer-id>"

Connect to the Network as a Client


safe wallet get-faucet
safe files upload <directory-path>


safe wallet get-faucet
safe files upload <directory-path>

To do this with non-default batch-sizes (along with SAFE_PEERS set as above):

safe files upload --batch-size 40 <directory-path> 

40 being the integer value you want to set

Further Information

You can participate in the testnet either by connecting as a client or running your own node.

Connecting as a client requires the safe client binary; running a node requires the safenode binary.

Obtaining Binaries

We have a tool named safeup which is intended to make it easy to obtain the client, node, and other utility binaries.

Installing Safeup

On Linux/macOS, run the following command in your terminal:

curl -sSL https://raw.githubusercontent.com/maidsafe/safeup/main/install.sh | bash

On Windows, run the following command in a Powershell session (be careful to use Powershell, not cmd.exe):

iex (Invoke-RestMethod -Uri "https://raw.githubusercontent.com/maidsafe/safeup/main/install.ps1")

On either platform, you may need to restart your shell session for safeup to become available.

Installing Binaries

After obtaining safeup, you can install binaries like so:

safeup client # get the latest version of the client
safeup client --version 0.91.2 # get a specific version

safeup node # get the latest version of the node
safeup node --version 0.106.2 # get a specific version

safeup update # update all installed components to latest versions

When participating in our testnets, it is recommended to use a specific version. In our project we release a new version of the binaries every time we merge new code. This happens frequently, so over the lifetime of a testnet, many new releases will probably occur. So for participating in this particular testnet, you may not want the latest version.

The binaries are installed to ~/.local/bin on Linux and macOS, and on Windows they go to C:\Users\<username>\safe. Windows doesn’t really have a standard location for binaries that doesn’t require elevated privileges.

The safeup tool will modify the PATH variable on Linux/macOS, or the user Path variable on Windows. The effect of this is that the installed binaries will then become available in your shell without having to refer to them with their full paths. However, if you’re installing for the first time, you may need to start a new shell session for this change to be picked up.

Running a Node

You can participate in the testnet by running your own node. At the moment, you may not be successful if you’re running the node from your home machine. This is a situation we are working on. If you run from a cloud provider like Digital Ocean or AWS, you should be able to participate.

You can run the node process like so:

# Linux/macOS

# Windows

This will output all the logs to the filesystem, with the location of logs being platform specific:

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

# macOS
/Users/<username>/Library/Application Support/safe/node/<peer id>/logs

# Windows

If you wish, you can also provide your own path:

# Linux/macOS
SN_LOG=all safenode --log-output-dest <path>

# Windows
$env:SN_LOG = "all"; safenode --log-output-dest <path>

The advantage of using the predefined data-dir location is you can run multiple nodes on one machine without having to specify your own unique path for each node and manage that overhead yourself.

Connecting as a Client

You can use the safe client binary to connect as a client and upload or download files to/from the network.

Using the Client

You’ll first need to get some Safe Network Tokens:

safe wallet get-faucet

You can now proceed to use the client, by, e.g., uploading files:

safe files upload <directory-path>

To download that same content:

safe files download

This will download the files to the default location, which is platform specific:

# Linux

# macOS
/Users/<username>/Library/Application Support/safe/client/downloaded_files

# Windows

To download to a particular file or directory:

safe file download [directory/filename] [NetworkAddress]



If you’ve used previous versions of the network before and you find problems when running commands, you may want to consider clearing out previous data (worthless DBCs from previous runs, old logs, old keys, etc.).

# Linux
rm -rf ~/.local/share/safe

# macOS
rm -rf ~/Library/Application\ Support/safe

# Windows
rmdir /s C:\Users\<username>\AppData\Roaming\safe

If you encounter a problem running any of our binaries on Windows, it’s possible you need the Visual C++ Redistributable installed.


I just left the house dammit!!!


Looks like you broke support for Windows 7 :confused:


No worries, got a full work day ahead… will have to circle back in the evening for myself as well… :smiley: .


Looks like I’m going to be late for work. :slight_smile:


40 nodes running, 20 on each ISP, one with port forwarding and one with home-network.

The home-network the nodes have a much higher error rate

home-network one has earned tokens already, but port forwarding has not

Both started at the same time


Oh yeh, a piece of test-data I got up earlier today:

Downloading "ubuntu-18.04.6-desktop-amd64.iso" from f2fe721b1f3f7538de3d6003107a6db799e2f07ac0a0981aa8eae8ae3922cd8e with batch-size 16

~8mins down for me.


Could you translate that error message into English please?

1 Like

A couple of questions:

  1. Is this an upgrade for the existing punch net or is it a new one (with all data deleted)?

  2. Have the issues with uploads been looked at/fixed?

  3. If it is new data, will there be another attempt to upgrade a test network soon?

Thanks! Great work!

  1. This one is unrelated to PunchNet.
  2. I’m not sure on that one. @qi_ma were you aware of anything there that’s been fixed?
  3. Yeah, I would hope we can test an upgrade with this at some point.

I don’t remember any fix specifically related to upuload got deployed.

could you link me to the original post of the issues reported? thx


The procedure entry point ProcessPrng could not be located in the dynamic link library bcryptprimitives.dll.

1 Like

There were no fixes specifically to uploads, but the underlying issue of upload failure was because we were trying to pay to unreachable home nodes. So now that we have some tweaks to make home nodes more reliable, it should sort itself out.

But I can also expose an argument through the CLI to increase the max repayment limit if people are still hitting that error (but that will just bypass the issue than fixing it).


Hmm, it would be helpful if you can just confirm that you don’t see this on the last version of the node, 0.105.6. I’m not aware of any changes between then and now that would have introduced such a thing. This looks like it’s coming from some lower-level dependency.

1 Like

How version from month ago can be last?
It works fine, as well as 0.106.0-alpha.4.

Binary has grown from 17 MB to 20 MB from 0.106.0-alpha.4 to 0.106.2.
So something large was added to it.


That’s the last stable version.

OK, if it was working in the last alpha version, something has obviously been introduced there. I think we’ll need to be a bit clearer and make a decision on exactly which Windows platforms we would support. We don’t do anything in our CI system for testing on older versions of Windows.


sigh these always get released on days I’m in the field. Pumped to get home and be able to test this out! Glad that home node reliability is (hopefully) getting resolved because not being able to upload was a drag.

Nice work team!


Well isn’t that pretty? :slight_smile:

Thank you launchpad-builders, thank you kindly :slight_smile:


I couldn’t wait. Tethered on to one my the VPS, but having an issue:

safeup node-manager
safenode-manager reset (yes)
safenode-manager add --count 50
safenode-manager start

mav@hetzsafe-01:~$ sudo .local/bin/safenode-manager start
║   Start Safenode Services   ║
Refreshing the node registry...
Attempting to start safenode1...
Attempting to start safenode2...
Attempting to start safenode3...
Attempting to start safenode4...
Attempting to start safenode5...
Attempting to start safenode6...
Attempting to start safenode7...
Attempting to start safenode8...
✕ safenode46: The 'safenode46' service has failed to start
✕ safenode47: The 'safenode47' service has failed to start
✕ safenode48: The 'safenode48' service has failed to start
✕ safenode49: The 'safenode49' service has failed to start
✕ safenode50: The 'safenode50' service has failed to start
   0: Failed to start one or more services


Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

mav@hetzsafe-01:~$ systemctl status safenode1
● safenode1.service - safenode1
     Loaded: loaded (/etc/systemd/system/safenode1.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-05-09 14:34:35 UTC; 24min ago
   Main PID: 53912 (safenode)
      Tasks: 11 (limit: 9116)
     Memory: 40.6M
        CPU: 41.092s
     CGroup: /system.slice/safenode1.service
             └─53912 /var/safenode-manager/services/safenode1/safenode --rpc --root-dir /var/safenode-manager/services/safenode1 --log-output-dest /var/log/safenode/safenode1 --port 39248
mav@hetzsafe-01:~$ systemctl status safenode2
● safenode2.service - safenode2
     Loaded: loaded (/etc/systemd/system/safenode2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-05-09 14:34:39 UTC; 24min ago
   Main PID: 54016 (safenode)
      Tasks: 11 (limit: 9116)
     Memory: 38.7M
        CPU: 32.227s
     CGroup: /system.slice/safenode2.service
             └─54016 /var/safenode-manager/services/safenode2/safenode --rpc --root-dir /var/safenode-manager/services/safenode2 --log-output-dest /var/log/safenode/safenode2 --port 49040

mav@hetzsafe-01:~$ safenode-manager status
║   Safenode Services   ║
Refreshing the node registry...
Service Name       Peer ID                                              Status  Connected Peers
safenode1          -                                                    ADDED               -
safenode2          -                                                    ADDED               -
safenode3          -                                                    ADDED               -
safenode4          -                                                    ADDED               -
safenode5          -                                                    ADDED               -

Netstat shows the ports open, both UDP on and TCP for RPC on

Possibly unrelated but I saw a new command (or one I just hadn’t noticed?)

mav@hetzsafe-01:~$ sudo safenode-manager balance
║   Reward Balances   ║
Refreshing the node registry...
   0: Main secret key not found: "/var/safenode-manager/services/safenode1/wallet/main_secret_key"


Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

OOOOHHHHH Piece of context here:

mav@hetzsafe-01:/var$ ls -al
total 52
drwxr-xr-x 13 root root   4096 May  4 01:42 .
drwxr-xr-x 18 root root   4096 May  6 02:12 ..
drwxr-xr-x  2 root root   4096 May  7 00:00 backups
drwxr-xr-x 13 root root   4096 Apr 19 11:36 cache
drwxrwxrwt  2 root root   4096 May  5 04:09 crash
drwxr-xr-x 42 root root   4096 May  1 02:50 lib
drwxrwsr-x  2 root staff  4096 Apr 18  2022 local
lrwxrwxrwx  1 root root      9 Aug 10  2023 lock -> /run/lock
drwxrwxr-x 14 root syslog 4096 May  6 02:12 log
drwxrwsr-x  2 root mail   4096 Aug 10  2023 mail
drwxr-xr-x  2 root root   4096 Aug 10  2023 opt
lrwxrwxrwx  1 root root      4 Aug 10  2023 run -> /run
lrwxrwxrwx  1 root root     48 May  4 01:42 safenode-manager -> /mnt/safenode-store/hetzsafe-01/safenode-manager
drwxr-xr-x  4 root root   4096 Aug 10  2023 spool
drwxrwxrwt  6 root root   4096 May  9 14:00 tmp
drwxr-xr-x  3 root root   4096 May  1 00:52 www

Does something not like symlinks?