# Running a protocol node
The protocol nodes are the backbone of a KYVE pool. They are responsible for collecting data from a data source, bundling and uploading them to Arweave and verifying it. This enables KYVE to store any data stream decentralized and permanently.
- A Keplr (opens new window) or Cosmostation (opens new window) wallet with $KYVE. (You can claim some here (opens new window))
- An Arweave (opens new window) keyfile with some AR. (You can claim some here (opens new window))
Minimum hardware requirements
- 4GB RAM
- 1GB DISK
# Get some $KYVE
Before continuing, make sure that you have the Keplr (opens new window) or Cosmostation (opens new window) wallet installed in your browser. Head over to the KYVE app (opens new window) and make sure to connect your wallet (this automatically adds and switches to the KYVE network).
Go to the faucet tab and claim some tokens via one of three faucets. The wheel is the easiest option.
IMPORTANT: Make sure that you are on the correct app URL
# Choose a pool
Before you can run a protocol node you have to choose a pool you want to join. You can find an overview of all pools
in the KYVE app here (opens new window). Once you have chosen a pool you have to remember the pool id and the
pool runtime for later. You can find this information right below the pool name once you have clicked on a pool in the overview. In this example we have chosen the first pool with the pool id
0 and the runtime
# Verify that you can claim a validator slot
Due to a limited number of validator slots in each pool only the nodes with the highest stake can claim a validator slot. You can only claim a validator slot if you have more than the minimum staking amount.
To check the minimum staking amount you can click on the tab
Validators once you have selected a pool. There you should see something like this:
In this case all validator slots are occupied, but since the minimum staking amount is 300 $KYVE you just need to have more than 300 to claim a slot. If the minimum staking amount is zero you just have to have more than zero $KYVE.
IMPORTANT: If you don't have more $KYVE than the minimum staking amount you can not continue!
# Run with KYSOR (recommended)
This example will show how to run a protocol node on a linux system on the Moonbeam pool with the pool Id
0. More information can be found here (opens new window)
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
Currently, there are no binaries for the KYSOR, therefore it has to be installed and build manually by cloning the repository:
# Install dependencies
In order to get started run the following in the project root directory:
General directory structure and important files:
srccontains all the source code of KYSOR
kysor.conf.tsis the main config file. It is explained in more detail below
secretsis the directory where your secrets are stored like
runtimeswill be autogenerated once you start KYSOR and will contain all binaries structured by runtime and version
dbwill be autogenerated once you start KYSOR and will contain all caching data for the protocol nodes
logswill be autogenerated once you start KYSOR and will contain all log data for the protocol nodes
In order to setup KYSOR the following secrets need to be added under the
secrets directory. If this directory does not exist yet create it in project root.
arweave.jsonthis is the Arweave keyfile you need to provide in order to run protocol nodes. This one keyfile will be used for all of your protocol nodes
mnemonic.txtthis is the file which contains your mnemonic of your validator account. This one mnemonic will be used for all of your protocol nodes
After adding the required secrets you can check the
kysor.conf.ts file. When you initially open it, it should look like this:
Since this file is commented and explained in detail the info regarding config properties can be found in this file.
Every time you edit the config file you have to build the project with
After entering your config like the
poolId and your
initialStake and other settings that are required to run a protocol node on a pool you can start KYSOR by running
When you see logs like this everything should work fine
# Get the prebuilt binaries
For our case, the prebuilt binaries every operating system can be downloaded here (opens new window) for every operating system. For example on EVM it would be
In general, you can get the binaries by clicking on the
Become a validator button and following the steps until you're on the section
Get node binaries.
Once you're there click the button
KYVE node which should lead you to the github repository.
Once you're on releases you can download the latest binary for your operating system. In our case we download the
evm-macos.zip and unzip it locally.
When you have downloaded and unzipped the binary correctly you can proceed to how to verify your binary
# Manually build the binaries
Since we want to run a protocol node on a
@kyve/evm runtime pool we have to clone the correct repository. In our
case clone the EVM repository (opens new window) and make sure your are on branch
Now run the following commands to install dependencies and build the binaries
Once the binaries have been build you should see three binaries (one for every operating system) in the
# Verify that your binary has been built correctly
Execute the binary using the following command to see the available options (example is on a MacOS machine)
If everything is set up correctly you should see the following
# Start your node
To run your node, copy your Arweave keyfile into your working directory and fetch the mnemonic from Keplr.
Here it is important that you enter the correct
--mnemonic and your desired
In our case, we initially stake 10,000 $KYVE to ensure that we get a validator slot.
Run the following command with the same binary as above
If your node has started correctly, it should print some logs like this:
# Verify node stake
When you look at your node logs you should then see that the node is starting to verify bundles.
After you have successfully staked you should see your address in the Pool validators table.
Also, you can now manage your stake through the app under