PowerAgent Installation Guide

Herein the instructions for installation of DAppNode and the PowerAgent package on it and separately are given for the purposes of testing.
Hello there. If you are reading this article, this means you are ready to partake in PowerAgent testnet!
If you wish to use the standalone PowerAgent package and deploy it on your own Ethereum testnet node-equipped hardware, then proceed to this section.
If you want to test the PowerAgent client which will be distributed and run on DAppNode, read this article. In case you are not familiar with DAppNode and what it does, we encourage you to visit their main page:
DAppNode is an official partner of PowerPool.
Also, consider reading these articles to fully understand what PowerAgent is and how it works:
Now, let’s jump straight to the installation!


  1. 1.
    Dedicated machine (see the requirements below)
  2. 2.
    Two fresh blockchain accounts:
    1. 1.
      Admin account
    2. 2.
      Worker account
The accounts will be needed at the PowerAgent installation step.

Part 1. Installation of the DAppNode software.

To run the PowerAgent package on DAppNode, their software is required. In short, this is a wrapper that manages multiple docker containers, made specifically for blockchain nodes and decentralized applications. PowerAgent is one such application.
DAppNode software is distributed in multiple ways. One of them is a prepared Linux distribution with everything installed. It can be obtained here: https://github.com/dappnode/DAppNode/releases/tag/v0.2.69
In this instruction, we will install DAppNode via scripts on a fresh Debian distro.
Use a dedicated machine for running DAppNode software.
Blockchain nodes typically need a plethora of storage and some computation power.
It has been tested on 8 cores / 16 GB RAM / 1200 GB SSD and runs fine, but your results may differ. The storage capacity is also a variable quantity: for Sepolia testnet, 200 GB of storage will be enough; for mainnet, though, it is recommended by the execution client distributors to have at least 1000 GB of free space.
The software has been proven to work on a virtual machine; however, we can not officially recommend doing so, as your mileage may vary. Use virtual machines at your own responsibility and if you know what you do.

DAppNode installation

Now we are going to install a fresh distribution of Debian and DAppNode software on top of that.
  1. 1.
    Obtain a dedicated machine with at least:
    1. 1.
      4 core CPU
    2. 2.
      8 GB of RAM
    3. 3.
      200 GB of SSD memory
    4. 4.
      Fast and reliable internet connection
  2. 2.
    Install Debian distribution from the official source, following their guide: Debian bullseye -- Installation Guide. The graphics interface is not needed and may be omitted. After the installation of DAppNode, you will (in ideal case) not need to directly access the host machine anymore.
  3. 3.
    Go to the DAppNode installation guide page and follow the instructions there.

Access the DAppNode admin panel

After the successful installation, you have to connect to your DAppNode and change the credentials for access. If your machine is equipped with a WiFi adapter, follow the guide by DAppNode team. We would recommend to employ Wireguard VPN for access configuration. How to do this:
  1. 1.
    In a command line of your host machine, run
source /usr/src/dappnode/DNCORE/.dappnode_profile
This command will add short aliases for dappnode commands.
  1. 2.
And see the listed DAppNode system packages. Find one with “...wireguard…” in the package name. It should be up and running.
  1. 3.
    In a command line, run
There you will see the credentials for the Wireguard connection in the following format:
Example of the WireGuard tunnel configuration for DAppNode access
Copy these in any way you prefer.
  1. 3.
    Install Wireguard client on your main machine, through which you will access the DAppNode admin panel. By this time, you should probably not need to touch the host machine (the one with DAppNode software installed) anymore.
  2. 4.
    Create a new tunnel and paste the credentials you copied earlier. Save and activate the tunnel.
  3. 5.
    Now, follow https://my.dappnode. You will be greeted with the welcome screen, where you can perform initial setup (for example, change your user credentials and turn on/off certain ways of accessing the admin panel).
Congratulations, the DAppNode installation is complete 🙂. Now let’s install the packages.

Part 2. Installation of PowerAgent and the Execution/Consensus nodes

PowerAgent is a decentralized application that connects to the execution client (either locally or remotely). It subscribes and listens to blockchain events via WebSockets RPC.
On DAppNode, you will need a node (both execution and consensus clients of the chosen network) that PowerAgent can connect to locally. Let’s install them now.

Installation of Geth and Prysm clients

Go to the DAppStore, turn on the Public repository radio button and search for both packages.
You may need to switch to the remote IPFS repository in the Repository tab beforehand
DAppStore's public repository is now enabled
Install the Prysm consensus client. This should be as straightforward as possible, just accept everything and press install.
Then install the Geth execution client.
  1. 1.
    Under “Show advanced options” select “Show advanced editor”. Also, don’t forget to check “bypass unsigned restriction”.
The recommendations provided are enumerated here.
  1. 2.
    Check on the EXTRA_OPTS field. It should have websockets enabled (just as on the screenshot). If not - add the necessary data to the field so that it looks like on the screenshot below. Also, we suggest using snap syncmode (read more here).
You can, of course, opt for a full archive node, but this may take an eternity to download and sync all the blocks since the network genesis.
The way extra options should look
  1. 3.
    Proceed to install the package.
Upon installation, check the logs of both packages in their tabs. They should have found each other and started syncing. It may require up to a day to fully sync both execution and consensus clients for the Sepolia Ethereum testnet.
Congratulations, now you have a running blockchain node!

Install PowerAgent package

You may want to let the execution and consensus clients sync fully before installing the PowerAgent package.
There are some prerequisites for running the PowerAgent. They consist of two parts:
  1. 1.
    Creating the credentials for your worker account
  2. 2.
    Registering your worker in the PowerAgent contract

Keyfile generation

The keyfile is a file that allows PowerAgent to execute transactions on behalf of your worker address without revealing its private key in plaintext during transfer.
On your own machine, you need to install NodeJS to execute a specialized script, which will yield a keyfile encrypted with a password of your choice.
Simplified keyfile generation procedure
Since you need Docker to run DAppNode and standalone PowerAgent alike, you have it available. We provide a Docker image which allows you to generate a keyfile without installing anything extra or running more than one command.
Execute the following command in the terminal:
docker run -v ${KEYSTORE_PATH}:/usr/app/keys -e pk=${PK} -e password=${PASSWORD} -d eitelvolkerts/agent_keygen:latest
Here the following variables are used:
  1. 1.
    ${KEYSTORE_PATH}. The local path wherein the key is to be stored
  2. 2.
    ${PK}. Your private key
  3. 3.
    ${PASSWORD}. Your password
Substitute these variables for your specific values when running the command. The keyfile will be saved to the specified path.
  1. 1.
    Install NodeJS and npm according to your OS. It is recommended to install NodeJS globally.
  2. 2.
    Create a new directory in your working folder, and clone the repository from github:code
git clone https://github.com/powerpool-finance/powerpool-agent-v2-compose
cd powerpool-agent-v2-compose
  1. 3.
    Install the required dependencies:
npm i
  1. 4.
    Create a keyfile. Run
node jsongen.js %worker_private_key% %password%
Where %worker_private_key% is the private key of your worker address (which later will be registered as a keeper in the PowerAgent contract), and %password% is any password you like. Don’t lose it; however, you may recreate the keyfile at any time.
The keyfile will be placed in the same directory in the ./keys folder. Save it for later upload.

Package installation and configuration

Now it is time to install the PowerAgent application on your DAppNode. Find the link (or IPFS hash) of the most recent version of the PowerAgent.
The current distribution process is by hash. The current hash is:
Search it in the DAppStore with public store enabled and local IPFS mode selected. If you are unable to find it, go to System Packages and open the IPFS package WebUI. Having done that, go to Peers and press Add connection.
There, enter the /ip4/ address and press Add.
Thereby the package will have been made available for you to download.
Proceed to install:
  1. 1.
    Follow the link / Find the package by its IPFS hash in the DAppStore
  2. 2.
    Accept “bypass unsigned restriction” and press install.
  3. 3.
    Fill in the fields:
  • KEEPER_ADDRESS. This field should contain the address of your worker.
  • KEY. Remember the keyfile you generated? Upload it here.
  • KEYPASSWORD. The password to the keyfile you chose during generation so that PowerAgent can execute the transactions on behalf of your worker address.
  • NETWORK_RPC. The WS RPC address of the execution client, which PowerAgent will connect to. Look it up in the logs tab of your execution client you installed earlier. The default for Geth-Sepolia may be like ws://sepolia-geth.dappnode:8546.
Options under “Show advanced”:
Show advanced
  • ACCRUE_REWARD. True/False. Default: False.
This value governs whether you accrue the rewards on your worker address or have them transferred immediately upon conferring. Keep in mind that the former option is more gas-efficient. The default value is False.
  • ACCEPT_MAX_BASE_FEE_LIMIT. True/False. Default: False.
This field also accepts a Boolean value. In PowerAgent, the Job owner may set an upper bound on the gas cost for the purposes of reward computation. If you wish to execute the transaction even in the case of such an upper bound depressing your reward amount, select True.
  • AGENT_ADDRESS. Default: current PowerAgent address.
This field accepts an address which will be queried as the current PowerAgent contract address. You are recommended not to meddle with it unless specifically instructed to by PowerPool. The default value is the current PowerAgent address.
  • MAX_PRIORITY_FEE_PER_GAS. Default: 600000
This field accepts an integer value, to which the max priority fee per gas shall be set.

Admin-worker registration

To subscribe for, execute tasks and receive rewards, as was mentioned in Prerequisites, you will need two blockchain addresses:
  1. 1.
  2. 2.
It is recommended to start with fresh addresses. Top them up with a small amount of the native token for gas spendings.
To partake in the PowerAgent network, you also need a minimal CVP amount to later stake it in the PowerAgent contract. On Sepolia network, it is currently 1000 CVP. They should be on Admin contract.
Firstly, from your Admin account allow PowerAgent to spend the amount of CVP you wish to stake. Execute approve function on the CVP token contract.
Approval of test CVP spending
Until ABI is uploaded to the Etherscan for the test CVP contract, the only way to change allowance is by executing the transaction manually. We provide a script to set the allowance manually.
Secondly, register your worker address in the PowerAgent contract. From your admin account, execute registerAsKeeper and specify the amount of CVP you previously allowed to spend (or lower) and your worker address.
Keeper worker registration
You have to specify cvp_amount * 10^18, as the token has 18 decimals.

Part 3. Congratulations!

You have finished the installation process and now officially are a part of PowerAgent testnet!
Now, follow the links below to join the Telegram and Discord technical support chats; share your installation experience, feel free to ask any questions and provide feedback!
  • Telegram chat: to be added
  • Discord channel: to be added

Standalone installation

  1. 1.
    Start a terminal session. You ought not to use MacOS, as the standalone package is only built for Linux AMD64.
  2. 2.
    Execute the following command:
git clone https://github.com/eitelvolkerts/sepolia-agent
  1. 3.
    Follow the instructions specified here: powerpool-finance/powerpool-agent-v2-compose (github.com) to obtain a keyfile. For your benefit, an exact workflow is stated hereafter
    1. 1.
      Execute the following command:
git clone https://github.com/powerpool-finance/powerpool-agent-v2-compose
  1. 2.
    Execute the following command:
cd powerpool-agent-v2-compose
  1. 3.
    Execute the following command:
npm i
  1. 4.
    Execute the following command:
node jsongen.js A B
where A is the private key of your worker, and B is the password you choose at liberty to encrypt said key
  1. 5.
    Move the keyfile thus generated to the /keys/ directory of the sepolia-agent directory.
  2. 6.
    In the sepolia-agent directory, open the file ./config/main.yaml and enter the values that are required there. Observe that the addresses ought to be kept inside the quotation marks.
  3. 7.
    Cd to the sepolia-agent directory proper. You may now proceed
  4. 8.
    Execute the following command:
docker compose up -d
Ensure beforehand that your Docker is working.
  1. 10.
    This will create the container. You may now employ it. In order to remove it, execute the command
docker compose down --rmi local
in the sepolia-agent directory.