KYVE Protocol Node - Beta Network with Kysor

this guide is now deprecated (as is the Beta network) to run a protocol node see the following

Authors: @GLCstaked, @alijprof

A first version of the new app can be found here. Please keep in mind that this update is still in development/testing.

This guide is intended for those running a protocol node on Korellia now and wish to test out the Beta network before the next testnet. Here we are joining pool 0 the Moonbeam pool, you can substitute this for other pools.

Kysor will auto download the binaries for the selected pool for you, you simply need to create the valaccounts for the pool and set up a service for kysor to run on that pool in the background.

Running nodes with KYSOR has the following benefits:

  • Only use one program to run on every pool

  • Not installing and compiling protocol binaries manually for every pool

  • Getting the new upgrade binaries during a pool upgrade automatically and therefore don't risk timeout slashes

  • Make running protocol nodes standardized and easier

Connect to beta network

A first version of the new app can be found here: https://kyve-beta.netlify.app/#/ This will prompt you to connect Keplr extention and allow the new network request. This is two confirmations which you should approve.

Set up Device

Update the system

sudo apt update && sudo apt upgrade -y

Move Arweave keyfile into directory

We need to move our arweave.json (which should be funded with AR) into a directory in our system, I’ve placed it here /home/<user>/kyve/secrets as I’m running local I just used the UI. note you can place it wherever you want, but be sure to change the path in the system service file later.

if your on a VPS you could create the file and paste the contents in by sudo nano home/ubuntu/kyve/secrets/arweave.json

Download the Kysor Protocol node binary

this is the KYSOR binary which uses one program for every pool, it auto updates and gets the new upgrade binaries during every pool upgrade.

wget https://kyve-beta.s3.eu-central-1.amazonaws.com/kysor/kysor-linux-x64.zip

Move to directory

unzip and move, you should delete the zip file once done, it can be found in your home directory

unzip kysor-linux-x64.zip
mv kysor-linux-x64 kysor

Grant permissions and make executable

 sudo chmod +x kysor

Initialize Kysor

When you initialise KYSOR you need to specify the network you should run on and if the KYSOR should automatically download and execute the binaries for you. This command creates a config.toml under the following directory: $HOME/.kysor/. You can edit this file if you wish to change the network or the auto download flag.

./kysor init --network beta --auto-download-binaries

Create validator account

we are creating a validator account, this is a new account that we will fund with our main account that contains our KYVE

./kysor valaccounts create \
--name moonbeam \
--pool 0 \
--storage-priv "$(cat kyve/secrets/arweave.json)" \
--verbose \
--metrics

Start the Node

./kysor start --valaccount moonbeam

The node will not continue until the account is authorized and funded. but first its advised to create a system service for the node, in order to run in the background. you can stop the node with ctrl+c or start a new shell

Create system service to run the node

sudo tee <<EOF > /dev/null /etc/systemd/system/moonbeamd.service
[Unit]
Description=KYVE Protocol-Node moonbeam daemon
After=network-online.target

[Service]
User=$USER
ExecStart=/home/$USER/kysor start --valaccount moonbeam
Restart=on-failure
RestartSec=3
LimitNOFILE=infinity
EOF

Start the system service

sudo systemctl daemon-reload && \
sudo systemctl enable moonbeamd && \
sudo systemctl start moonbeamd

View Logs

sudo journalctl -u moonbeamd -f -o cat

This will display your Valaddressand a Valname: this is a three letter phrase unique to your node. We need both of these to start the node. The node will not continue until the account is authorized and funded.

Authorize Validator

You will now need to activate the node head over to the beta app and connect your Keplr wallet extension.

Self Delegate

If you have not done so already, we need to delegate KYVE to our main account which will fund our valaccount/s. Head to Validators and find Become a Validator

Enter an amount to delegate to yourself and click on self delegate “ammount“ $KYVE you will be prompted to confirm a transaction via Keplr extension

Fund Valaccount

Now head to User (Left) and click on your address below, now click on Join Existing Pool. here enter your Pool (which should be the same as the Pool specified in the system.service) Your Valaddress, and your Valname enter an amount of $KYVE less than what you delegated to yourself earlier.

Confirm the Transaction on Keplr
Confirm the Transaction on Keplr

you should now see your Validator active on the App and in your logs on your device

Running successfully should show validating on bundles
Running successfully should show validating on bundles

Run on Multiple Pools

If we wish to run on multiple pools, we can select from the beta app, head over to Pools section and select which pool you want to add. we need to get the pool ID

Create a new Valaccount

Create New account for Celo, our pool ID will be 2, and for ease we will name celo

./kysor valaccounts create \
--name celo \
--pool 2 \
--storage-priv "$(cat kyve/secrets/arweave.json)" \
--verbose \
--metrics

Change Port for new service

On default the metrics server is available under the following endpoint: http://localhost:8080/metrics so we need to change the port for the new pool service, as moonbeam is on 8080, I used 8081.

sudo nano /home/$USER/.kysor/valaccounts/celo.toml

If you choose another pool such as avalanche, you would need to edit the avalanche.toml

Create a System Service for New Pool

sudo tee <<EOF > /dev/null /etc/systemd/system/celod.service
[Unit]
Description=KYVE Protocol-Node celo daemon
After=network-online.target

[Service]
User=$USER
ExecStart=/home/$USER/kysor start --valaccount celo
Restart=on-failure
RestartSec=3
LimitNOFILE=infinity
EOF

Start new service

sudo systemctl daemon-reload && \
sudo systemctl enable celod && \
sudo systemctl start celod

Fund account

Follow the same steps to authorize validator, and use the valaccount and valname that is displayed when starting the service.

We can create a new service for any available pool by following the same steps.

Other commands

Stopping/Restarting your Service for changes

sudo systemctl stop <service name>.service

Make changes then restart service

sudo systemctl daemon-reload && sudo systemctl enable <service name>.service && sudo systemctl restart <service name>.service

Subscribe to GLCstaked
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.