KYVE network is a decentralized archival framework that standardizes, validates, and permanently stores data streams using Arweave’s permaweb.
This turns data streams into permanent resources, such streams are blockchain data which are storage intensive taking a long time to synchronize, Kyve by validating authenticity and using Arweave’s permaweb makes this data easily accessible. This benefits applications that need fast, guaranteed access to such data without the burden of sync times and catch up.
Arweave: A protocol that specializes on decentralized file storage that allows its users to store data permanently, sustainably, with a single upfront fee to Arweave’s permaweb: A global, permanent web of pages and applications that live forever. Arweave achieves this by matching people who have hard drive space to spare with those individuals and organizations that need to store data or host content permanently
KYVE Nodes
KYVE Chain Node (Consensus Validator): Chain-Nodes are the backbone of KYVE. The chain layer is a completely sovereign Proof of Stake blockchain built on Cosmos SDK with Ignite, the chain node is the consensus layer of KYVE which handles security/consensus and settlement of KYVE.
KYVE Protocol Node (Validator): The Protocol or Validator Node collects data from a data source, bundling and uploading them to Arweave and verifying it, these data sources are pools that you can decide to validate on.
(Pending)
Hardware requirements: 4vCore CPU, 8GB RAM, 250GB recommend 500GB allow to allow buffer. You can run on lower specs, but as you are providing a service these are recommended to allow suitable performance.
Running on a fresh instance of Ubuntu 20.04 LTS
update device
sudo apt update && sudo apt upgrade -y
install software you will need to continue, you may already have these.
sudo apt install wget tar git -y
install prebuilt binaries for the chain from Kyves github repository
wget https://github.com/KYVENetwork/chain/releases/download/v0.0.1/chain_linux_amd64.tar.gz
tar -xvzf chain_linux_amd64.tar.gz
initiate chain moniker, this is your validator name
./chaind init [moniker] --chain-id korellia
Example
./chaind init GLCstaked --chain-id korellia
Obtain the genesis
wget https://github.com/KYVENetwork/chain/releases/download/v0.0.1/genesis.json
move to the chain-node directory
mv genesis.json ~/.kyve/config/genesis.json
It is important to start with the oldest version v0.0.1 (the genesis version).
Start the chain the first time
./chaind start --p2p.seeds=02dd2c26948ea758a25d3dbc91744f8897681652@3.73.27.185:26656
this should start to sync the chain, but you may get errors like so, without persistent peers
stop the node with ctrl+C
, it will be started again and set up to run as a background service later.
Add Persistent Peers
cd .kyve/config
ls -la
you should find the files, we should have a config.toml
in this directory
nano config.toml
This will open your config in the terminal window for editing, scroll down to ‘persistent peers’ and add in the following
70556c82352b9919fb6f339b9da0ebc587e9148c@3.68.232.117:26656
(this is as of writing an available peer to use, may change in future and you will likely find updates to this in the discord) CTRL+O
to write the changes, CTRL+X
to exit back to the terminal.
We won’t start the node yet, as we have to set up cosmovisor, the latest update:
Cosmovisor is a tool that listens to on-chain governance proposals and automatically replaces the binary.
Download Binaries
wget https://github.com/KYVENetwork/chain/releases/download/v0.0.1/cosmovisor_linux_amd64 && \
mv cosmovisor_linux_amd64 cosmovisor && \
chmod +x cosmovisor
Setup the directory
mkdir -p ~/.kyve/cosmovisor/genesis/bin/ && \
echo "{}" > ~/.kyve/cosmovisor/genesis/upgrade-info.json
Copy the binary from the first section to the Cosmovisor directory.
cp chaind ~/.kyve/cosmovisor/genesis/bin/chaind
export the following environment variables
export DAEMON_HOME="$HOME/.kyve"
export DAEMON_NAME="chaind"
export DAEMON_ALLOW_DOWNLOAD_BINARIES="true"
simple node setup leave this true. This enables auto-download. If set to false, you need to Obtain binaries manually during updates.
start cosmovisor
./cosmovisor start
do this to see if there are any glaring errors, or should it stop/exit. If its outputting logs and appears to run fine then proceed
stop cosmovisor with ctrl+C
we will be setting up as a service in the next step
This is for both chaind and the cosmovisor now installed, $USER is the Linux user which runs the process, change to your own user name. This will allow the validator to run continuously in the background.
sudo tee <<EOF > /dev/null /etc/systemd/system/kyved.service
[Unit]
Description=KYVE Chain-Node daemon
After=network-online.target
[Service]
User=$USER
ExecStart=/home/$USER/cosmovisor start
Restart=on-failure
RestartSec=3
LimitNOFILE=infinity
Environment="DAEMON_HOME=/home/$USER/.kyve"
Environment="DAEMON_NAME=chaind"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
[Install]
WantedBy=multi-user.target
EOF
Start the Daemon
sudo systemctl enable kyved
sudo systemctl start kyved
From here your node should be syncing, and we need to wait until fully synced before moving to step 5.
To stop the Daemon
sudo systemctl stop kyved
To Check the Logs
journalctl -u kyved -f
Check Sync Status
curl -s localhost:26657/status | jq .result.sync_info.catching_up
you may need to install jq to do this, you can with
sudo apt install jq
PENDING -WORKING ON
KYVE has brought in Cosmovisor, a process manager for Cosmos SDK application binaries that monitors the governance module for incoming chain upgrade proposals.
Using KYSOR to run protocol nodes will allow you to use only one program for running nodes on every pool. It will also automate the installation of protocol binaries for every pool so that your node will not get slashed for not having upgraded after the version update.
Running a Validator
a guide on setting up a validator since Kysor upgrade can be found here
with Kysor you don’t need to download different binaries for certain pools when migrating but you will need to change pool ID. You don’t need to update Kysor node versions as the process is auto, however you may need to restart node if you encounter any problems, or need to change Pool ID, or make other changes
This is a process for restarting node for changes
1. Stop the Node
sudo systemctl stop kyved
confirm service is not active
sudo systemctl status kyved
2. Edit config file
nano $HOME/kysor/kysor.conf.ts
make any changes here, for changing pools or stake amount
3. restart the service
sudo systemctl daemon-reload
sudo systemctl enable kyved
sudo systemctl restart kyved
4. check logs
journalctl -u kyved -f -o cat
NOTE: THIS GUIDE IS NOW OUT OF DATE
Kyve Protocol Node has been upgraded with Kysor Release 10/6/2022
This guide is for running on a local device with a fresh install of Ubuntu 20.04LTS. To get started you should have a Keplr wallet (self custody) and Arweave wallet with a .json wallet file. You will also need $KYVE and $AR to pay for Transactions, familiarity with Kyve app UI, for pool information.
1. Install pre-requisite software
Update, install unzip and git
sudo apt update
sudo apt install unzip sudo apt install git
2. Create working directory in home folder
mkdir -p /home/<USER>/kyve
replace user with the user of your device
move to directory in terminal
cd /home/<user>/kyve
3. Download the Pool files
whichever pool you wish to join from the Kyve app, you will need to look for the location on GitHub, change contents of <> to fit the correct pool name.
wget https://github.com/KYVENetwork/<evm>/releases/download/<v1.0.3>/<evm-linux.zip>
unzip then delete the downloaded zip file
sudo unzip <evm-linux.zip>
sudo rm <evm-linux.zip>
4. change permissions and confirm version
sudo chmod +x <evm-linux>
sudo <./evm-linux> --version
this should return the correct version number
5. Place Arweave.json
copy the arweave .json file to the /home/<user>/kyve
folder, rename this file to arweave.json
ENSURE YOU HAVE AR IN YOUR WALLET TO PAY FOR FEES
6. Create a service (config) file
ensure in the correct directory, copy and paste the following to the terminal
1. sudo tee /etc/systemd/system/kyved.service > /dev/null <<EOF
2. [Unit]
3. Description=Kyve Node
4. After=network-online.target
5. [Service]
6. User=root
7. WorkingDirectory=/home/<user>/kyve/
8. ExecStart=/home/kyve/<evm-linux> -m “mnemonic phrase” -k
/home/<user>/kyve/arweave.json -p <Pool ID here> -v -s <your amount stake>
9. Restart=on-failure
10. RestartSec=3
11. LimitNOFILE=65535
12. [Install]
13. WantedBy=multi-user.target
14. EOF
note: need to be careful with syntax, ensure the ” are correct format, follow the line numbering above, omitting the number. and space. if easier copy and paste into a text file make edits and then copy the entire contents into the terminal.
7. Run the Service
Restart the service and start
sudo systemctl daemon-reload
sudo systemctl enable kyved
sudo systemctl start kyved
To output the Logs
sudo journalctl -f -u kyved
Making changes to the service
Stop the service firstsudo systemctl stop kyved
open the service file
sudo nano /etc/systemd/system/kyved.service
this will open in your terminal for editing, ctrl+o to write changes, then ctrl+x to exit back to terminal.
Restart the service
sudo systemctl daemon-reload
sudo systemctl enable kyved
sudo systemctl start kyved
Running out of Space
Node allocates a certain amount of storage for your node, easily exceeded if you have this error this space has been exceeded
increase the space by using the -sp
flag. This is added to the ExecStart
line (line 8) on your kyved.service
add this -sp <number>
The size of disk space in bytes the node is allowed to use
EG: -sp 53687091200
would be 50GB of allocated space
**Check service status
**sudo systemctl status kyved
Logs
to output logs
sudo journalctl -f -u kyved
searching for specific terms, like warnings (WARN)
sudo journalctl -f -u kyved | grep WARN
Should you wish to migrate your protocol node to another pool, if you have been kicked from a pool then skip steps 2 as you should have tokens returned.
1. Stop your Protocol node from the terminal
sudo systemctl stop kyved
2. Unstake KYVE, on https://app.kyve.network/#/ Pools> Validators> select your Node and click manage Stake. Unstake and confirm on your wallet, wait for tokens to arrive.
3. confirm the ‘pool ID’ and ‘minimum stake’ from the new pool you wish to join.
4. Delete the old executable
locate and delete from your working directory
sudo rm /home/<user>/kyve/<kyve-evm-linux>
5. download new executable, follow steps 3-4 in protocol node guide with the correct information for your new pool
6. Edit kyved.service
sudo nano /etc/systemd/system/kyved.service
ensure to change the following executable name & pool id.
7. Restart the service
sudo systemctl daemon-reload
sudo systemctl enable kyved
sudo systemctl start kyved