CLV Documentations
Portal
Portal
  • Welcome to Clover
  • Useful Links
  • CLV Token
  • Quick Start
    • Clover Networks
    • Sakura Networks
    • Using Local Node
    • Using Testnet
      • Create an account
      • Faucet
      • Run a Testnet Node
      • Connect to Testnet
  • Development Guide
    • Introduction
      • Prerequisites
      • Setup environment
    • Using MetaMask
    • Using Remix
    • Using Web3.js
      • Query Balance
      • Send Transaction
    • Counter Tutorial
      • Setup dapp project
      • Setup truffle
      • The Counter Contract
      • Deploy Contract
      • Counter Webapp
  • Clover Wallets & Dapps
    • Clover Extension Wallet
      • Getting Started
      • Switch Networks
      • Add Tokens
      • Send Tokens
      • Cross-Chain Transfer
      • View Seed Phrase
      • Import Account
      • dApp Integration
      • Substrate dApp Integration
      • Solana-dApp-Integration
      • dApp Interaction Protocol
      • Wallet Integration QA
    • Clover Mobile Wallet
    • Clover Web Wallet
      • dApp Integration
    • Clover Assets Explorer
    • Clover Cross-Chain Explorer
  • Maintain
    • Running a validator on Clover Network
    • Running a RPC node
    • Staking on Clover
      • Staking via Apps
      • Staking via Clover Wallet
  • Technical Documentation
    • Web3 compatibility
      • eth_protocolVersion
      • eth_syncing
      • eth_hashrate
      • eth_coinbase
      • eth_mining
      • eth_chainId
      • eth_gasPrice
      • eth_accounts
      • eth_blockNumber
      • eth_getBalance
      • eth_getStorageAt
      • eth_getBlock
      • eth_getTransactionCount
      • eth_getBlockTransactionCount
      • eth_getBlockUncleCount
      • eth_getCode
      • eth_sendTransaction
      • eth_sendSignedTransaction
      • eth_call
      • eth_estimateGas
      • eth_getTransaction
      • eth_getTransactionByBlockHashAndIndex
      • eth_getTransactionByBlockNumberAndIndex
      • eth_getTransactionReceipt
      • eth_getUncle
      • eth_getLogs
      • eth_getWork
      • eth_submitWork
      • eth_submitHashrate
      • eth_subscribe
      • eth_unsubscribe
      • net_version
      • net_peerCount
      • net_listening
      • web3_clientVersion
      • web3_sha3
    • Clover Test Cases
    • Clover EVM
    • Clover Accounts Binding
    • Query Balance
    • Transaction Finality
  • Clover Eco Incentive Program
    • Introduction
    • Clover Developer Incentive Program
    • Virtual Ethereum address binding
    • Clover User Incentive Program
  • Parachain Auction
    • About Polkadot Parachain Auction
Powered by GitBook
On this page
  • Types Of Clover RPC Nodes
  • Hardware requirements
  • Prepare Environment
  • Firewall Setup
  • Create Directories
  • Setup Clover Rpc Node
  • Create the Compose configure file
  • Bring up the RPC node
  • Post Setup
  1. Maintain

Running a RPC node

PreviousRunning a validator on Clover NetworkNextStaking on Clover

Last updated 3 years ago

Clover Foundation provides the RPC services for the public. Sometimes it's necessary to run a self hosted Clover RPC service if the public services can't satisfy your needs.

With a self hosted Clover RPC service you could gain below benefits:

  • Faster access speed - a Self-hosted RPC node could provide better performance

  • Better security - transactions could be sent to to the self-hosted RPC server instead of the public service.

  • Better Availability

Clover is a fully decentralized network, any people can setup a Clover node by following this tutorial!

Types Of Clover RPC Nodes

Generally speaking, there are two kind of RPC nodes:

  • Archive node An archive node keeps all the past blocks data. And client can't query data in any of the past blocks.

  • Full node A full is node is pruned. which means it keeps only a few of the past blocks data(256 by default, which could be adjusted using the --pruning command line arguments.

An archive nodes consumes much more disk spaces it stores more data than a full node. You need to take the decision based on your business model and requirements. E.g. block explorer and historical analysis tools normally requires an archive node to query the full historical data. Wallets on the other hand normally only requires a full node to be able to query the current state(e.g. the balance of an account) and submit transactions to the Clover Network.

Hardware requirements

  • CPU - Recent released high end cpu, e.g. Intel 10700/Amd 5800X.

  • Memory - 32GB for Testnet, 64GB for Sakura and Mainnet.

  • Storage - 300GB SSD, Storage usage could increase by time, you might need to increase the capacity as the chain data grows..

  • OS: Linux, Debian/Ubuntu LTS distributions are recommended.

Prepare Environment

We're using docker to simplify the setup process. You can use the tools which you're familiar with.

Below ports need to be exposed:

  • 30333 - The p2p port of the chain

  • 9933 - The http endpoint of the RPC service

  • 9944 - The websocket endpoint of the RPC service.

You may not expose 9933/9944 ports directly. Instead a reverse proxy server could be setup in front and proxy requests to the rpc backend.

Create the config and data directories using below command:

sudo mkdir -p /opt/data/
sudo mkdir -p /opt/compose/
# secure the data access
sudo chmod 0700 /opt/data
sudo chmod 0700 /opt/compose 

Currently we only have Clover Testnet(iris) and Clover Mainnet(ivy) launched.

Rpc Configuration for Clover Mainnet will be updated later.

Create /opt/compose/docker-compose.yaml and set the content as below:

version: "3.8"
services:
  clover-validator:
    image: "cloverio/clover-iris:0.1.15"
    restart: always
    command:
      - /opt/clover/bin/clover
      - --chain 
      - /opt/specs/clover-preview-iris.json  
      - --base-path 
      - /opt/chaindata
      - --pruning
      - archive
      - --name 
      - 🍀clover-rpc-node
      - --port 
      - "30333"
      - --ws-port 
      - "9944"
      - --rpc-port 
      - "9933"
      - --rpc-cors=all
      - --ws-max-connections
      - "2000"
      - --ws-external 
      - --rpc-external
      - --execution
      - wasm
    ports:
      - "30333:30333"
      - "9933:9933"
      - "9944:9944"
    volumes:
      - /opt/data/clover:/opt/chaindata

You can edit the docker-compose.yaml and include your customizations by updating below arguments:

  • --name: The node name of your validator, the name could be found in the telemetry node list

  • --pruning: we're using the archive mode for the pruning argument, which means it will keep all the historical block data. You can provide numeric parameters for it, to let it just keep the provided number of blocks data.

  • --ws-extenral/--rpc-external: it enable the outer access for the RPC service.

  • Enabling --execution wasm will spped up wasm code execution quite a lot, it's recommended for rpc nodes.

Use below command to bring up the validator node:

cd /opt/compose # goto the compose file directory
docker-compose up # bring up the rpc node in the foreground
## check whether the node starts up normally
## Ctrl-C stop the node
docker-compose up -d # start the rpc node in the daemon mode.

You need to check the node logs using docker-compose logs command. Wait until the node is synced and the block numbers syncs with the latest number on the chain.

You may want to setup a reverse proxy server or load balancer for the RPC service. There're some known tools for you to start with, please checkout:

We'll use and to run the validator in this guide. You need to install docker and docker-compose firstly. Please follow the installation guide in the docs.

Firewall Setup

Create Directories

Setup Clover Rpc Node

Create the Compose configure file

image: the docker image used to launch the node, for Clover Testnet, use cloverio/clover-iris:0.1.15. For a full list of clover networks please check out the page.

Bring up the RPC node

Post Setup

- High Performance Load Balancer, Web Server, & Reverse Proxy

- Powerful, enterprise-ready, open source web server with automatic HTTPS written in Go

🍀
🛠️
🛰️
📁
⚙️
📝
🚀
📡
docker
docker-compose
Docker Install Document
Docker-Compose Install Document
Clover Network List
Nginx
Caddy