Private KardiaChain Network

KardiaChain Official User Guide for Setting Up Local or Private BlockChain

System Requirement:

Recommending using Cloud compute service with the following requirements.

Hardware requirement and Function:

Function
Nodes
CPU (Cores)
RAM (GB)
SSD Storage (GB)
KardiaChain Network-BlockChain Network-Backend-DB-Explorer
6
16
8
512
Kubernetes Services
1
16
64
1,000
Frontend
1
4
8
256
Elastic Search
3
4
8
512
DB+Caching
3
4
8
512

OS Requirements:

Operating system: CentOS or Ubuntu (manual compiling and build) or with Docker Compose installed.
Internet Requirement:
Bandwidth: 1GBps

Firewall:

Port open: TCP/UDP 3000 (internet exposure), TCP 8545 (for JSON RPC).

Preparing Environment for KardiaChain Network

When the system or cloud instance is ready, proceeding with the following steps for preparing the environment.

Installing go-kardia

From Source

You'll need go installed and the required environment variables set, which can be done with the following commands:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

Get Source Code

git clone https://github.com/kardiachain/go-kardia.git $GOPATH

Direct Installation

Prerequisites

Install libzmq

Compiling and Installing

cd $GOPATH/src/github.com/kardiachain/go-kardia/cmd
go install
Notes: the latest cmd command is now installed.

Docker Installation

Prerequisites

Install Docker following the installation guide for Linux OS
Install docker compose

Installation Files:

Download the following file docker-compose.yaml, genesis_devnet.yaml

Compiling and Installing

docker-compose build
docker-compose up -d

Configuring KardiaChain Nodes

Configuration file will be stored in YAML file. Download the following config node1.yaml, node2.yaml, node3.yaml. Below is the example of the Config file.
Node:
Name: node1 # Name of node
DataDir: /root/.kardia # Location of data storage
HTTPHost: 0.0.0.0
HTTPPort: 8545 # RPC Port
HTTPModules:
- node
- kai
- tx
- account
HTTPVirtualHosts:
- 0.0.0.0
- localhost
- "*"
HTTPCors:
- "*"
P2P:
PrivateKey: #Your private key
ListenAddress: tcp://0.0.0.0:3000
MaxPeers: 25
LogLevel: info # crit, error, warn, info, debug, trace
Metrics: 1
MainChain:
ServiceName: KARDIA
ChainId: 1
NetworkId: 10000
AcceptTxs: 1 # accept tx sync process or not (1 is yes, 0 is no)
Seeds:
- # Seed node 1@<ip>:<port>
- # Seed node 2@<ip>:<port>
- # Seed node 3@<ip>:<port>
Database:
Dir: chaindata # directory stores leveldb
Cache: 16 # cache is used in leveldb
Handles: 32 # handles is used in leveldb
Drop: 1 # Specify whether drop database or not (0 is no, 1 is yes)
Below is example config file to run Kardia network:
Mainnet (coming soon)
Testnet
Config file​
Local
Config file​
Previous
Deployment
Next
Local
Last updated 4 months ago
WAS THIS PAGE HELPFUL?
CONTENTS
Mainnet (coming soon)
Testnet
Notes: Following the example above to modify information which match each Node function.

Run KardiaChain Network

For Direct

./cmd --network devnet --node <path/to/kai_config_devnet_node1.yaml>
./cmd --network devnet --node <path/to/kai_config_devnet_node2.yaml>
./cmd --network devnet --node <path/to/kai_config_devnet_node3.yaml>

For Docker

docker-compose ps
docker logs -f --tail 10 node1
docker logs -f --tail 10 node2
docker logs -f --tail 10 node3
Notes: logs showed the status of each node.

KardiaChain Explorer Frontend

Development

Prerequisites

NodeJs v12.18.4

Start Developing

  • Clone from the above project link
  • Run npm install
  • Run npm start

Build

Run npm run build

KardiaChain Explorer Backend

Setup

  • Generate github_private_token with repo permission and set as GITHUB_TOKEN variables in your system.
  • Run make all
  • Checkout Makefile for more command and use what you need

Project Structure

  • --- api: define API for FE
  • --- cfg: define base configuration
  • --- cmd: all entry point here
  • --- contracts: ERC20 and smc
  • --- deployments: docker-compose and dockerfile for deploy/develop
  • --- features: BDD |--- kardia: kardia client implement
  • --- metrics: custom metrics for tracking/monitor
  • --- scripts: scripting for execute
  • --- server: logic/db server
  • --- tools: tools for develop
  • --- types
  • --- utils: collections utilities function