Skip to content

Run Waterfall Node Testnet6 in Docker

Testnet6 has been stopped. Use our other testnets

Install Docker

You need to install Docker, which will allow you to perform further steps consistently across any operating system. You can install Docker for your operating system using the following links:



  • For the Windows operating system, you need to use all of the commands in the PowerShell terminal.

MacOS on arm

We recommend enabling the following settings:

Login to private registry

The source code for Waterfall is currently closed (it will be opened after a security audit), so the source code and images are stored in a private repository. To access the private Docker image registry, you need to log in. Execute the following command in the terminal:

docker login -u public -p glpat-XvZ6bPe48rFGZ5z14Fxz

Pull image

Download image from the private registry, where we logged in on the previous step, the latest Docker image that contains all the necessary software to run the node. To do this, you need to execute the following command in the terminal:

docker pull

Run Node

Go to your home directory in the terminal

cd ~

Executing the following command in the terminal:

docker run --platform linux/amd64 --name wf -d --rm -p 4000:4000 -p 13000:13000 -p 12000:12000/udp -p 30303:30303 -p 9545:9545 -p 9546:9546 -v $PWD/.wf/logs:/opt/wf/data/logs -v $PWD/.wf/gwat:/opt/wf/data/gwat -v $PWD/.wf/coordinator:/opt/wf/data/coordinator
leads to the following:

  • the generation of coordinator and validator keys
  • keys are imported into the node wallets
  • the node starts up
  • The database data is stored in the home directory ~/.wf

Check status

You can check the status of the node by executing the following command in the terminal:

docker exec -it wf /opt/wf/sh/
The script can return the following answer:

  • Keys weren't generated - this means that the keys are still being generated and the node has not yet started
  • The node has not started yet - the node is not running, it is still starting
  • The node is syncing. Distance: 9294 - the coordinator is synchronizing, synchronization occurs when Distance will be equal to 0
  • The validator is synchronizing:
     The node is syncing. Status: {
       currentBlock: 0,
       currentSlot: 15738,
       finalizedSlot: 0,
       highestBlock: 0,
       knownStates: 0,
       maxDagSlot: 0,
       pulledStates: 0,
       startingBlock: 0
  • The node synchronized. - the node is synchronized.
  • Coordinator public key: 0xad7aac64a8ab9507a3b06ac46a30d48d89c8bfb4f36d402cfa4e5817ecc37cb01dfd339295f99565367af78aa727a2c1 - the coordinator's public key, which holds the stake and earns in the coordinating network.
  • Validator address: 0x2cd4289d5d5246ccb557a493e65a2ac94914b8b0 - the validator's address, that creates blocks in the BlockDAG network and gets rewards for it.
  • Withdrawal address: 0x2cd4289d5d5246ccb557a493e65a2ac94914b8b0 - The address that can send a deactivation transaction and take the rewards and stake of the coordinator and validator.
  • The coordinator has not been activated - indicates that either the transaction with the stake has not been sent, or this transaction has not yet been processed.
  • Coordinator status: active_ongoing - coordinator status:
    • pending_initialized - When the first deposit is processed, but not enough funds are available (or not yet the end of the first epoch) to get coordinator into the activation queue.
    • pending_queued - When coordinator is waiting to get activated, and have enough funds etc. while in the queue, coordinator activation epoch keeps changing until it gets to the front and make it through (finalization is a requirement here too).
    • active_ongoing - When coordinator must be attesting, and have not initiated any exit.
    • active_exiting - When coordinator is still active, but filed a voluntary request to exit.
    • active_slashed - When coordinator is still active, but have a slashed status and is scheduled to exit.
    • exited_unslashed - When coordinator has reached reguler exit epoch, not being slashed, and doesn't have to attest any more, but cannot withdraw yet.
    • exited_slashed - When coordinator has reached reguler exit epoch, but was slashed, have to wait for a longer withdrawal period.
    • withdrawal_possible - After coordinator has exited, a while later is permitted to move funds, and is truly out of the system.
    • withdrawal_done - actually having moved funds away
  • Stake: 3200.000000000 WATER - the stake that was sent
  • Coordinator balance: 3200.038794846 WATER - coordinator balance along with the stake
  • Validator balance: 0.000000000000000000 WATER - validator balance
  • Coordinator peers: 5 - number of connected nodes with coordinators
  • Validator peers: 10 - number of connected nodes with validators

Stop Node

To stop the node, you can execute the following command in the terminal:

docker stop wf


If the node is running and synchronized (look at the result of the status command The node synchronized.), you can activate the worker by taking the following steps:

  1. Install Metamask according to the instructions
  2. Add a new network in Metamask by specifying the following parameters:
  3. In the advanced settings of Metamask, enable the display of the data field when sending a transaction:
  4. Create an account address in Metamask if you don't have one already
  5. On the faucet page, get 4000 WATER for your account.
  6. Generate data for the transaction by running the following command in the terminal:
    docker exec -it wf /opt/wf/sh/
    In response, you will get the following result:
    Send tx by Metamask:
    To: 0xA2D4AE28Eacc2833BF624906A9Fb39d92fFCB95a
    Value: 3200 WATER
    Data:  "0xf401942c9c38cd7d46be5e0ee0412dd3382ea7b8ada360fef15de3f07b5aa766ba8ac3a82b935387b257d00b98d07422a9feb3d7fe8eb6bb56460e94382d8031a10a42ded56eb3d7fe8eb6bb56460e94382d8031a10a42ded56eafd3817c5c02ae1ad1c32805e679d80bd9b696776d3eb2377acc6abda5839a3567e65f48f35608c30c84a6ed8cc4f2810a0953431abab154d1ea97b0dc1fb4e0369d77965d1461f0a55b6cd3c08980baa41e816d7007a0aa320cdb2ed0bfcdec"
  7. Using MetaMask, send a transaction to the address, with the amount and data obtained in the previous step
  8. After this, execute the status command in the terminal to determine that your worker is running.

Reinstall Node

  1. Stop Node (see instructions above)
  2. Remove data in home directory ~/.wf by executing the following command in the terminal:
    rm -R ~/.wf
  3. Pull image (see instructions above)
  4. Run Node (see instructions above) and others steps in instructions above

Deploy Smart-Contract

To deploy smart-contract read instructions

  1. If the peers of the Coordinating node disappeared during synchronization, please restart the Docker