Klever Finance is a trusted permissioned blockchain network for the emerging decentralized economy, providing a safer, faster and smarter cryptocurrency experience for all users globally to enter and thrive.
A blockchain network does not have an intrinsic value in and of itself, but in fact is only as valuable as what the platform offers its users in terms of usable products and opportunities to participate in the network.
With this in mind, we present KleverChain to allow users on a global scale to access indispensable services and products. These include market-leading crypto wallet, crypto swap, web browser, exchange, staking, payment channels, loans, liquidity pools, decentralized finance, game assets, supply chains, logistic records, notary, stored value, gift cards, rewards, loyalty programs, collectibles, banking, ownership and more.
Seetting up a validator
System requirements
To start with Klever blockchain, make sure you have Docker installed and download the latest Klever Toolchain image. Follow instructions on this link.
To download Klever Toolchain, type:
docker pull kleverapp/klever-go-testnet:latest
Create a wallet
To create a wallet, choosing the output folder, first create the output folder and then run the operator with create-wallet
command:
mkdir wallet
docker run -it --rm --user "$(id -u):$(id -g)" \
-v $(pwd)/wallet:/opt/klever-blockchain \
--entrypoint=/usr/local/bin/operator kleverapp/klever-go-testnet:latest "create-wallet"
This will generate the wallet and return the address asociated with it, as seen below
To check your wallet certificate and address, type:
docker run -it --rm --user "$(id -u):$(id -g)" \
-v $(pwd)/wallet:/opt/klever-blockchain \
--entrypoint=/usr/local/bin/operator kleverapp/klever-go-testnet:latest "getAddress"
Run a node
Klever nodes run inside a docker container, download Klever Toolchain first.
Create statics directory
Create a folder where all the data will be stored:
mkdir -p $(pwd)/node/config $(pwd)/node/db $(pwd)/node/logs
Network genesis config
curl -k https://backup.testnet.klever.finance/config.testnet.100005.tar.gz \
| tar -xz -C ./node
Create your validator BLS Key
Execute a command inside the docker container to create wallets for validators. The data is then forwarded to the directory created previously.
docker run -it --rm -v $(pwd)/node/config:/opt/klever-blockchain \
--user "$(id -u):$(id -g)" \
--entrypoint='' kleverapp/klever-go-testnet:latest keygenerator
Download and extract data backup for fast spin
Download a backup in case it exists. Every time the network is reset, files change as well. So, this backup is necessary.
curl -k https://backup.testnet.klever.finance/kleverchain.latest.tar.gz \
| tar -xz -C ./node
Run your node
The command for running a node comes with a few settings: it includes mappings for cryptographic keys, data directories and logs, as well as network ports, the application that will run when the docker image is executed and the file of node validators signature.
docker run -it --rm \
--user "$(id -u):$(id -g)" \
--name klever-node \
-v $(pwd)/node/config:/opt/klever-blockchain/config/node \
-v $(pwd)/node/db:/opt/klever-blockchain/db \
-v $(pwd)/node/logs:/opt/klever-blockchain/logs \
--network=host \
--entrypoint=/usr/local/bin/validator \
kleverapp/klever-go-testnet:latest \
'--log-save' '--rest-api-interface=0.0.0.0:8080'
The table below shows what each part of the command is supposed to do.
Command | Function |
-v $(pwd)/config:/opt/klever-blockchain/config/node | Import genesis config and the generated .pem file (BLS Key). |
-v $(pwd)/node/db:/opt/klever-blockchain/db | Select the destination DB folder. |
-v $(pwd)/klv/logs:/opt/klever-blockchain/logs | Save log files and set the log folders |
If one wants to monitor the node using log files, the flag --use-log-view
must be passed. Otherwise, the standard view is a visual interface as seen below.
When you are done setting up and running your node, you are expected to see information about your node, the blockchain itself, as well as data from your own computer, just like the example below:

Run node in the background
When running in the background, add parameter --use-log-view
and replace --rm
for -d
docker run -it -d \
--user "$(id -u):$(id -g)" \
--name klever-node \
-v $(pwd)/node/config:/opt/klever-blockchain/config/node \
-v $(pwd)/node/db:/opt/klever-blockchain/db \
-v $(pwd)/node/logs:/opt/klever-blockchain/logs \
--network=host \
--entrypoint=/usr/local/bin/validator \
kleverapp/klever-go-testnet:latest \
'--log-save' '--use-log-view' '--rest-api-interface=0.0.0.0:8080'
If you are running your node in the background, you can either verify logs in ./node/logs
folder or use the docker command:
docker logs -f --tail 5 klever-node
Stop a node
docker stop klever-node
Backup DB folder
First, you need to stop the node:
docker stop klever-node
Then compress the DB folder:
tar -czvf filename.tar.gz $(pwd)/node/db
Restart a node
docker restart klever-node
Upgrade node (docker image version)
First, stop the node:
docker stop klever-node
Upgrade image:
docker pull kleverapp/klever-go-testnet:latest
Then you can recreate the node with a new image. Don’t forget to delete the container if running in the background:
docker rm klever-node
Become a validator
Request faucet
For testnet validator purposes, the faucet to register and self-stake will be sent after having registered to the address provided in the application. Once we review your application, 1.5M TKLV (on testnet) will be sent to the address provided. The remaining stake will be provided by the Klever team once the validator node is up and in sync.
How to register a validator using CLI
Registering a validator is done in this way:
docker run -it --rm --user "$(id -u):$(id -g)" \
-v $(pwd)/wallet:/opt/klever-blockchain \
--network=host \
--entrypoint=/usr/local/bin/operator \
kleverapp/klever-go-testnet:latest \
--key-file=./walletKey.pem \
create-validator \
klv1h7vx629mwuv4pnecn0k9clxp9rt7rquat3kvydgu8npt20e0ntjq3jhd40 \
ce3aa977d1028e2a91730259c4b66cd862b77c63253fa12932012288108a0b7f110da4a2e3e1c15cc94802a79afef418f9a724a1ebe1423c0fa897bae669f1735b082ff3f19b3e00acc76a2bb0f31b1856e3e55952655386fbedad9c55322b81 \
10 true 10000000 MyNodeName
The command follows this pattern: [BLS_KEY] [COMMISSION] [MAX_DELEGATION][LOGO][OWNER_ADDR][REWARD_ADDR][NAME]
[BLS_KEY]
is the owner’s BLS key.
[COMMISSION]
is the commission in percentage.
[MAX_DELEGATION]
informs how much the validator can delegate.
[LOGO]
is the URL for the validator’s image.
[OWNER_ADDR]
is the owner’s address.
[REWARD_ADDR]
is the address to whom the rewards will be given.
If no [REWARD_ADDR]
is passed, the [OWNER_ADDR]
becomes the reward address.
[NAME]
represents the Node name.
Freeze KLV for staking
In order to freeze KLV, you should type the following code:
docker run -it --rm --user "$(id -u):$(id -g)" \
-v $(pwd)/wallet:/opt/klever-blockchain \
--network=host \
--entrypoint=/usr/local/bin/operator \
kleverapp/klever-go-testnet:latest \
--key-file=./walletKey.pem freeze 1500000
After the “freeze” instruction, there is this structure: [AMOUNT] [KDA-ID].
[AMOUNT]
for how much is being frozen.
[KDA-ID]
is the Asset ID.
The minimum amount allowed to stake KLV is 1000 KLV.
Delegate frozen KLV to node
Delegate to an address [TO], pointing to the bucket [BUCKET_ID] where the frozen KLV is located.
docker run -it --rm --user "$(id -u):$(id -g)" \
-v $(pwd)/wallet:/opt/klever-blockchain \
--network=host \
--entrypoint=/usr/local/bin/operator \
kleverapp/klever-go-testnet:latest \
--key-file=./walletKey.pem \
delegate \
klv1h7vx629mwuv4pnecn0k9clxp9rt7rquat3kvydgu8npt20e0ntjq3jhd40 \
9960d5d4eab9dfc067acebb6f764ce61280b573c0d1daafd1c2d3e67defa8944
It’s important to know that there’s a minimum self-staking amount for the validator. The structure for delegate command is:
[DELEGATE TO ADDRESS] [BUCKET ID].
[DELEGATE TO ADDRESS]
is the address you want to delegate the frozen bucket power (in this case your validator address)
[BUCKET ID]
is the bucket hash, which can be found in the frozen TX ID or in Klever testnet explorer.
WIth the operator CLI, you can check the bucket ID with the command tx-by-id
followed by the hash of the freeze transaction:
docker run -it --rm --user "$(id -u):$(id -g)" \
-v $(pwd)/wallet:/opt/klever-blockchain \
--network=host \
--entrypoint=/usr/local/bin/operator \
kleverapp/klever-go-testnet:latest \
--key-file=./walletKey.pem \
tx-by-id \
45db3a993b64323df2d9841c0ac9a78c8a1760804557a65ca866163e64138bbf
Bucket ID can be found in the TX Receipt.
Validator settings (change node BLS Pubkey and commission)
You can change the validator configuration using this command:
docker run -it --rm --user "$(id -u):$(id -g)" \
-v $(pwd)/wallet:/opt/klever-blockchain \
--network=host \
--entrypoint=/usr/local/bin/operator \
kleverapp/klever-go-testnet:latest \
--key-file=./walletKey.pem \
validator-config \
ce3aa977d1028e2a91730259c4b66cd862b77c63253fa12932012288108a0b7f110da4a2e3e1c15cc94802a79afef418f9a724a1ebe1423c0fa897bae669f1735b082ff3f19b3e00acc76a2bb0f31b1856e3e55952655386fbedad9c55322b81 \
10 true 10000000000000 MyNodeName
Validators Klever testnet list.

Q&A
Producers
There are 21 Producers per epoch.
21 producers are selected and at the end of each epoch, the last 10 producers are removed, while 10 new are added at the start, which guarantees that a node will be producing for at least 2 epochs.
If a producer was performing badly at the end of the epoch, it will go to jail and then a new one will be selected to replace it.
Only actively-producing nodes (with 10M+ KLV) will earn blocks and transactions fees. The other masternodes (with 1,5M to 10M KLV) will participate only in the staking pool.
Masternodes with less than 1,5M KLV in self-staking will remain inactive.