KYVE protocol nodes switch between uploader and validator roles to ensure data integrity. Running a node earns $KYVE rewards but requires meeting hardware and wallet requirements.
Protocol nodes are the backbone of KYVE’s storage pools. They switch between two roles: one node will be an uploader, collecting data from a data source, bundling and uploading them to a storage provider, and the rest in the pool will be validators, voting on whether the data is valid or not.
These roles are automatically switched after each piece of data, making sure a different node is selected as an uploader at a time to avoid any possible bad influence. With each pool having up to 50 protocol nodes, they all come together to create a decentralized network for making data trustless.
When a protocol node behaves correctly, i.e. voting with the majority of the node network or doing its job correctly as an uploader, they are rewarded in $KYVE. Meaning the stake you put at risk to run your node will increase by a certain percentage.
However, in order to keep proper incentivization, if your node behaves incorrectly, i.e. voting incorrectly, it will get slashed (tokens will be taken away from your original stake).
Not only does running a protocol provide opportunity for token rewards, but it also means taking part in KYVE’s mission and changing the world of data for the better!
Ready to run a KYVE protocol node on Korellia? Let’s get started — >
Before we get started, it’s important to make sure you have all the right materials! To run a protocol node, you will need two wallets:
Then, there are the minimum hardware requirements:
Before continuing, make sure that you have the Keplr or Cosmostation wallet installed in your browser. Head over to the KYVE testnet app 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:
Once you are sure to have these requirements, you can go ahead and get started!
As mentioned in previous courses, KYVE’s data lake is made up of data storage pools. Each pool pertains to a specific set of data, for example, Cronos blockchain data.
To run a protocol node, the first step is choosing a pool you would like to join! Korellia has a lot of different pools to choose from. You can find an overview of all testnet pools on KYVE in the KYVE app.
It’s important to choose wisely, this way you can be sure to run in a consistent and rewarding pool. There are a few factors to look in to to ensure this:
Once you have chosen a pool, for example, Moonbeam, you have to remember the pool id and the pool runtime for later which can be both found when you click on the pool overview. For the Moonbeam pool, this would be: Pool ID 0, runtime @kyvejs/evm, as seen highlighted in red below.
When choosing a pool, it’s also important to check if you can claim a validator slot.
Each storage pool on KYVE is limited to 50 protocol nodes. Due to this limitation, only the nodes with the highest delegation on $KYVE can claim a validator slot:
To check the minimum delegation amount you can click on the validators tab once you have selected a pool. There, you should see something like this: In the example above, there are nine free validator slots available, and you would just need more than 0 $KYVE or $tKYVE (tesntet tokens) delegated to your node in order to participate. If this were not the case, and the slots were all full with a minimum delegation of 300 KYVE ⁄ tKYVE, you would need to have more than 300 KYVE ⁄ tKYVE delegated to your node.
Make sure you check if the slots are full and if you can meet the minimum delegation amount in order to continue!
KYVE is storage agnostic, meaning that it allows users to choose which storage provider KYVE should store the data onto. This is one of the main customization features for developers using KYVE.
Currently, Korellia supports storage onto Arweave directly, and also through Bundlr. These are permanent data storage solutions, making data immutable. However, KYVE is looking into providing other storage solutions in the near future for mainnet to best apply to all use cases.
Depending on which storage provider the pool runs on, you have to setup a wallet with which you can upload data. On the pool overview, it is clearly listed which storage provider a pool uses.
For this course, we will continue with the Moonbeam pool, which is stored onto Arweave…
In order to setup an Arweave wallet, you need a keyfile which will be the private key of Arweave.
Because this amount won’t be enough to let validators run for a longer time, you will need to get some additional $AR. You can exchange them on common exchanges. We would recommend an amount of ~1 AR which is more than enough.
To know for a bundlr wallet, check KYVE documentations.
Now that you chose the pool you want to join and have a well funded storage provider account, you can finally create your validator account which will hold all of your stake. Let’s get started:
If the validator was successfully created you should have been routed to your dedicated validator page were you can see all the information about your validator including other delegations and performance metrics.
Now we have to get into the coding part of things… Running a protocol node can be done in 3 ways:
In this course, we will learn option #2, running with prebuilt binaries.
To get started, download the current protocol node binaries. Now, open up your local terminal (if you’re a Mac user, or the equivalent on PC).
Example: If we want to run on the Moonbeam pool with Pool Id 0 we can do the following:
In order to pass secrets like the valaccount mnemonic or the private key file of the storage provider we export them to the environment. This can be done in the following way:
To run the protocol node the following command needs to be executed:
After the node is running you can finally join the pool with your valaccount!
If the node is starting for the first time, it should something like this in the logs:
A dialog should open where you should select the pool you want to join (here Moonbeam).
Once you have joined the pool the node should continue in about ~10 seconds.
All seems to work just fine? Congrats! You’re successfully participating in a KYVE pool!
There’s also the possibility of joining multiple pools in order to increase your rewards. This is optional, of course, and increases potential slashing risks.
If you want to join another pool just repeat the steps from point 4. You can see all the pools you are participating in your validator page.
Congrats! You now know how to run a protocol node on KYVE, earning $KYVE rewards and participating in our mission towards providing a trustless future for data!