How to run full node

Fullnodes Functions

  • Stores the full blockchain history on disk and can answer the data request from the network.
  • Receives and validates the new blocks and transactions.
  • Verifies the states of every account.

Supported Platforms

We support running a full node on Linux.

Hardware Recommendation

  • Directly facing internet
  • 16 cores CPU
  • 32GB of RAM
  • SSD storage
If you are running a node in Testnet, 2CPU/8GB of RAM is sufficient.

Steps to Run a Fullnode

Prepare junca client software

Build from source code¶
Create new directory for the project
mkdir -p $GOPATH/src/github.com/juncachain/
cd $GOPATH/src/github.com/juncachain/
  • Download source code and build
git clone https://github.com/juncachain/juncachain.git juncachain
cd juncachain
  • Checkout the latest version (e.g v0.2.0)
git pull origin --tags
git checkout v0.2.0
  • Build the project
make all
  • Binary file should be generated in build folder $GOPATH/src/github.com/juncachain/juncachain/build/bin
alias junca=$GOPATH/src/github.com/juncachain/juncachain/build/bin/junca
Download JuncaChain binary from Github release page
Download junca binary from our releases page (e.g v0.2.0)
tar xf junca-linux-amd64-v0.2.0.tar.gz
alias junca=build/bin/junca

Download genesis block

$GENESIS_PATH : location of genesis file you would like to put
export GENESIS_PATH=path/to/genesis.json
  • Testnet
curl -L https://raw.githubusercontent.com/juncachain/juncachain/master/genesis/testnet.json -o $GENESIS_PATH
  • Mainnet
curl -L https://raw.githubusercontent.com/juncachain/juncachain/master/genesis/mainnet.json -o $GENESIS_PATH

Create datadir

  • create a folder to store juncachain data on your machine
export DATA_DIR=/path/to/your/data/folder
mkdir -p $DATA_DIR/junca

Initialize the chain from genesis

junca init $GENESIS_PATH --datadir $DATA_DIR

Initialize / Import accounts for the nodes's keystore

If you already had an existing account, import it. Otherwise, please initialize new accounts
export KEYSTORE_DIR=path/to/keystore
Initialize new accounts
junca account new \
--password [YOUR_PASSWORD_FILE_TO_LOCK_YOUR_ACCOUNT] \
--keystore $KEYSTORE_DIR
Import accounts
junca account import [PRIVATE_KEY_FILE_OF_YOUR_ACCOUNT] \
--keystore $KEYSTORE_DIR \
--password [YOUR_PASSWORD_FILE_TO_LOCK_YOUR_ACCOUNT]
List all available accounts in keystore folder
junca account list --datadir $DATA_DIR --keystore $KEYSTORE_DIR

Start a node

Environment variables
  • $IDENTITY: the name of your node
  • $PASSWORD: the password file to unlock your account
  • $YOUR_COINBASE_ADDRESS: address of your account which generated in the previous step
  • $NETWORK_ID: the networkId. Mainnet: 668. Testnet: 669
  • $BOOTNODES: The comma separated list of bootnodes. Find them Mainnet here Testnet here
Let's start a node
junca --syncmode "full" \
--datadir $DATA_DIR --networkid $NETWORK_ID --port 30303 \
--keystore $KEYSTORE_DIR --password $PASSWORD \
--identity $IDENTITY \
--mine --miner.gasprice 250000000 --miner.etherbase $YOUR_COINBASE_ADDRESS \
--bootnodes $BOOTNODES
If you are a dapp developer, you should open RPC and WS apis:
junca --syncmode "full" \
--datadir $DATA_DIR --networkid $NETWORK_ID --port 30303 \
--keystore $KEYSTORE_DIR --password $PASSWORD \
--identity $IDENTITY \
--mine --miner.gasprice 250000000 --miner.etherbase $YOUR_COINBASE_ADDRESS \
--http --http.port=8545 \
--ws --ws.port=8546 \
--bootnodes $BOOTNODES