# KYVE Network

By [GLCstaked](https://paragraph.com/@glcstaked) · 2022-06-02

---

![](https://storage.googleapis.com/papyrus_images/d3dcd038ceb5fa1f105c8d3a92bd0f280da25eb9eeb9124e9d47d270aef581eb.png)

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.

### Kyve Ecosystem

**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**](https://tendermint.com/sdk/) with [**Ignite**](https://ignite.com/), 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](https://www.arweave.org/) and verifying it, these data sources are pools that you can decide to validate on.

![some pools on kyve, many more are available](https://storage.googleapis.com/papyrus_images/250d86153ed21b5845ec9ca8c40833f2dd13de4a7b0984093b6e8be35afe3d9a.png)

some pools on kyve, many more are available

The following guides are now deprecated to the run a Protocol node on Korellia test network see the following
-------------------------------------------------------------------------------------------------------------

[https://mirror.xyz/0xf3bF9DDbA413825E5DdF92D15b09C2AbD8d190dd/Vab7jT5DR4-YrmhfKTjLmM28WIRfy8vNbAsyhRDTQJ4](https://mirror.xyz/0xf3bF9DDbA413825E5DdF92D15b09C2AbD8d190dd/Vab7jT5DR4-YrmhfKTjLmM28WIRfy8vNbAsyhRDTQJ4)

### To run a Chain Node on Korellia Network see the following

(Pending)

HOW TO RUN CHAIN NODE- (Consensus Validator)
--------------------------------------------

**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

### 1\. Install Pre-requiste software

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
    

### 2\. download binaries

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

![](https://storage.googleapis.com/papyrus_images/a346e7eb60a397d137cbd337bc9eb5fea41d9a07500b76b49b52f9e8e93e1b6d.png)

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
    

![add as seen here](https://storage.googleapis.com/papyrus_images/d0d296f6a75ab741e5316a0dbe22b7b515e443850af7721b77f037e413f7ce10.png)

add as seen here

(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:

### 3\. Set up Cosmovisor

_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](https://docs.kyve.network/validators/chain-node.html#obtaining-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

### 4\. Set up Daemon-service

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

### 5\. Run the Validator

_PENDING -WORKING ON_

HOW TO RUN PROTOCOL NODE- (Validator)
-------------------------------------

### Protocol Node/Validator with Kysor

[https://kysor.kyve.network/](https://kysor.kyve.network/)

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

[

Protocol Node Kyve with Kysor support
-------------------------------------

For this guide, I took information from the project\\'s github https://github.com/kyve-org/kysor

https://teletype.in

![](https://storage.googleapis.com/papyrus_images/d0ae92d783073a4a3845137ef3a207b4fe72c20390949e26223d9c6a0db86d42.png)

](https://teletype.in/@bitdealer91/fmyWotJJt2B)

### Restart Node - for changes

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
    

KYVE Protocol Node- Validator (Deprecated)
------------------------------------------

**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](https://www.keplr.app/) wallet (self custody) and [Arweave](https://arweave.app/welcome) 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](https://github.com/kyve-org/), 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`

![if no errors logs should appear similar ](https://storage.googleapis.com/papyrus_images/020d0b8ba723dad1c46ce3fa073122dc887405fc69b69f300335cbfd0c5b686c.png)

if no errors logs should appear similar

Logs and troubleshooting
------------------------

**Making changes to the service**

Stop the service first`sudo 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

![](https://storage.googleapis.com/papyrus_images/e73c7b8f96e99069b0159d92b51e3c4e4fbf53b813dd285d73f7ed7bf915efd6.png)

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`

![outputs the status ](https://storage.googleapis.com/papyrus_images/cc58727c8a7327aa58747a46470507c14acd0b30b9402564c2859379b929e92b.png)

outputs the status

**Logs**

to output logs `sudo journalctl -f -u kyved`

searching for specific terms, like warnings (WARN) `sudo journalctl -f -u kyved | grep WARN`

![](https://storage.googleapis.com/papyrus_images/0c7d7f43f16fcf5755c0468effb188d0ca4a384eaa077b6ea97390c1c167c334.png)

POOL Migration
--------------

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/#/](https://app.kyve.network/#/) Pools> Validators> select your Node and click manage Stake. Unstake and confirm on your wallet, wait for tokens to arrive.

![](https://storage.googleapis.com/papyrus_images/f078ef5f44518533cf21dfa10fbcafc943943ab4dd50243540a4cc8f237100f8.png)

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`

---

*Originally published on [GLCstaked](https://paragraph.com/@glcstaked/kyve-network)*
