How to config a Cyberyen Full Node
Tags: tutorial, cyberyen, blockchain, cryptocurrency
Published: 2023-04-28 15:04:52

**CYBERYEN FULL NODE**

Any computer that connects to the cyberyen network is called a node. Nodes that fully verify all of the rules of cyberyen are called full nodes. The software implementation of full nodes is called cyberyen-core, its releases can be found on their [github](https://github.com/cyberyen/cyberyen) page.

**WHAT IS A FULL NODE**
A full node is a node (computer system with cyberyen-core running on it) which downloads every block and transaction and check them against cyberyen’s consensus rules. Which fully validates transactions and blocks. Almost all full nodes also help the network by accepting transactions and blocks from other full nodes, validating those transactions and blocks, and then relaying them to further full nodes.

Some examples of consensus rules:

- Blocks may only create a certain number of cyberyens. 
- Transactions must have correct signatures for the cyberyen being spent.
- Transactions/blocks must be in the correct data format.
- Within a single blockchain, a transaction output cannot be double-spent.

At minimum, a full node must download every transaction that has ever taken place, all new transactions, and all block headers. Additionally, full nodes must store information about every unspent transaction output until it is spent.

By default full nodes download each new transaction at least twice, and they store the entire block chain forever.

**ARCHIVAL NODES**
A subset of full nodes also accept incoming connections and upload old blocks to other peers on the network. This happens if the software is run with `-listen=1` as is default.

Contrary to some popular misconceptions, being an archival node is not necessary to being a full node. If a user’s bandwidth is constrained then they can use `-listen=0`, if their disk space is constrained they can use pruning, all the while still being a fully-validating node that enforces cyberyen’s consensus rules and contributing to cyberyen’s overall security.

Most information was referenced from the wiki of our big brother [Bitcoin](https://en.bitcoin.it/wiki/Full_node).


**Prerequisites:**

	•	A Linux-based server (Debian/Ubuntu recommended)
	•	Basic command-line knowledge


**SETUP CYBERYEN CORE**
Now for the fun part, to setup cyberyen-core on linux, use an Ubuntu 18.04 or Debian 10/11 instance and the following commands will be executed as a non-root user.

**Create a New User**
Create a new user that you'll use to run the Cyberyen node. Replace `<user_name>` with your desired username:
```
$ sudo useradd -s /bin/bash -d /home/<user_name> -m -G sudo <user_name>
```
Create password:
```
$ sudo passwd <user_name>
```
Switch to the new user account:
```
$ su <user_name>
```

**Installation**
Update the package manager and install the dependencies:

```
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential
$ sudo apt-get install autoconf libtool pkg-config libboost-all-dev libssl-dev libprotobuf-dev protobuf-compiler libevent-dev libqt4-dev libcanberra-gtk-module libdb++-dev libfmt-dev
```

**Install BerkelyDB**
Cyberyen Core is using BerkleyDB 4.8.30:

```
$ wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz && tar -xvf db-4.8.30.NC.tar.gz && sudo rm -rf db-4.8.30.NC.tar.gz
$ cd db-4.8.30.NC/build_unix && mkdir -p build && BDB_PREFIX=$(pwd)/build && ../dist/configure --disable-shared --enable-cxx --with-pic --prefix=$BDB_PREFIX
$ sudo make install
```

**Compile Cyberyen**
Clone the source code from Github:
```
$ cd ~
$ git clone https://github.com/cyberyen/cyberyen.git
```
Build the code:

```
$ sudo chmod 775 -R ~/cyberyen && cd cyberyen
$ ./autogen.sh
$ ./configure CPPFLAGS="-I${BDB_PREFIX}/include/ -O2" LDFLAGS="-L${BDB_PREFIX}/lib/"
$ make
```
Strip unnecessary symbols and copy the binaries to `/usr/bin`:
```
$ sudo strip src/cyberyend src/cyberyen-cli src/cyberyen-tx
$ sudo cp -a src/cyberyend src/cyberyen-cli src/cyberyen-tx /usr/bin
```

**Configuration**
Create the cyberyen configuration, if you don’t set `CYBERYEN_RPC_USER` it will use the user `cyberyen` and if you don’t set `CYBERYEN_RPC_PASSWORD` it will generate a password:

```
$ cd ~
$ mkdir .cyberyen
$ cat > .cyberyen/cyberyen.conf << EOF
server=1
daemon=1
rpcallowip=127.0.0.1
rpcuser=${CYBERYEN_RPC_USER:-cyberyen}
rpcpassword=${CYBERYEN_RPC_PASSWORD:-$(openssl rand -hex 24)}
rpcport=58382
listen=1
txindex=1
EOF
```

Then launch cyberyen node:

```
$ cyberyend
```

Once cyberyend process has started, the initial block download will start and you can get the progress as the cyberyen user using the cli:

```
$ cyberyen-cli -getinfo
```

The help RPC lists all available public RPC commands, or gets help for the specified RP:

```
$ cyberyen-cli help
```

**Setting auto-reboot**
The cyberyen daemon should run forever, even after we exit the interactive ssh session on the server. To avoid a server crash program the system to restart it automatically:

```
$ crontab -e
```
This command will open the text editor with a special type of file that Linux systems use to schedule tasks automatically. Scroll to the bottom of the text file and enter the following line of text:

@hourly ~/cyberyn/src/cyberyend
@reboot ~/cyberyn/src/cyberyend

Press Control+O (^O) to save the file, then Control+X (^X) to exit the text editor.

Don't forget about security measures and firewall settings.

In this [article](https://dev.to/cyberyen/how-to-config-a-cyberyen-full-node-over-tor-on-ubuntu-4lfk), we will run a full Cyberyen node over Tor<link_to_the_next_article>.

Here is the place to contact us:
[Support [Matrix]](https://matrix.to/#/#cyberyen-support:matrix.org)

Thanks C¥kuza.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fp09orftn8i3o6xd0gdl.png)