Running a TomoX Mongodb fullnode
This guide shows how to run a TomoX MongoDb Fullnode.
To run the fullnode, you need to have MongoDb instance that enable replica set.
Start MongoDB¶
In this tutorial, we will run a mongo instance with Docker. Run this command:
docker run -d -p 27017:27017 --name mongodb \ --hostname mongodb mongo:4.2 --replSet rs0
Enable Mongodb replica set:
docker exec -it mongodb mongo --eval "rs.initiate()"
Run a fullnode¶
Download tomo
version 2.0+ from TomoChain Github Release page
E.g:
wget https://github.com/tomochain/tomochain/releases/download/v2.0.0-beta/tomo-linux-amd64 -O tomo chmod +x tomo sudo mv tomo /usr/bin/
Create a coinbase address:
tomo account new
Init genesis block: Testnet
curl -L https://raw.githubusercontent.com/tomochain/tomochain/master/genesis/testnet.json -o genesis.json tomo init genesis.json
Then run the node:
Testnet
NODENAME=[your_node_name] tomo \ --bootnodes "enode://ce1191bf9a634e7939676d136816ad84941b079c03d6a96e64cca35852363012169055c6879c644e821dc236a01d0499a1b7ff39e9518dbc00da87c7f1898604@13.251.101.216:30301,enode://cf2d05f71f143d85dce45dae6f74fae0ba56fc5ea1d1c548a095e29a5becb3a1fb93eb33e7b1dec43946dcfe608fd1495a02740af710bc615b90ad60fcc04d14@13.250.94.232:30301" \ --networkid 89 \ --rpc --rpccorsdomain "*" --rpcaddr 0.0.0.0 --rpcport 8545 --rpcvhosts "*" \ --ws --wsaddr 0.0.0.0 --wsport 8546 --wsorigins "*" \ --rpcapi "personal,db,eth,net,web3,txpool,miner,tomox" \ --announce-txs \ --tomo-testnet \ --tomox.dbengine "mongodb" \ --ethstats "${NODENAME}:anna-coal-flee-carrie-zip-hhhh-tarry-laue-felon-rhine@stats.testnet.tomochain.com"
You node will sync the data from TomoChain network, you need to wait until your node catch up the latest block. You can check the status in the logs or the stats page.
To save your time, you should download chaindata snapshot and override your chaindata.
Troubleshoot¶
Fatal: Failed to write genesis block
You already inited genesis block for the default datadir. So you need to use another datadir by --datadir
tomo account new --datadir [YOUR_DATADIR] tomo init genesis.json --datadir [YOUR_DATADIR]
Example¶
Testnet
wget https://github.com/tomochain/tomochain/releases/download/v2.0.0-beta/tomo-linux-amd64 -O tomo chmod +x tomo sudo mv tomo /usr/bin/ tomo --version tomo version curl -L https://raw.githubusercontent.com/tomochain/tomochain/master/genesis/testnet.json -o genesis.json tomo init genesis.json tomo account new --datadir /tmp/chaindata tomo init genesis.json --datadir /tmp/chaindata/ NODENAME=testnode02 tomo \ --bootnodes "enode://ce1191bf9a634e7939676d136816ad84941b079c03d6a96e64cca35852363012169055c6879c644e821dc236a01d0499a1b7ff39e9518dbc00da87c7f1898604@13.251.101.216:30301,enode://cf2d05f71f143d85dce45dae6f74fae0ba56fc5ea1d1c548a095e29a5becb3a1fb93eb33e7b1dec43946dcfe608fd1495a02740af710bc615b90ad60fcc04d14@13.250.94.232:30301" \ --networkid 89 \ --rpc \ --rpccorsdomain "*" --rpcaddr 0.0.0.0 --rpcport 8545 --rpcvhosts "*" \ --ws --wsaddr 0.0.0.0 --wsport 8546 --wsorigins "*" \ --rpcapi "personal,db,eth,net,web3,txpool,miner,tomox" \ --announce-txs --tomo-testnet --tomox.dbengine "mongodb" \ --ethstats "${NODENAME}:anna-coal-flee-carrie-zip-hhhh-tarry-laue-felon-rhine@stats.testnet.tomochain.com" \ --datadir /tmp/chaindata/
Testnet chaindata snapshot¶
To speed up syncing chaindata, you can download chaindata snapshot and override your local chaindata.
Download: Testnet chaindata
E.g:
# Download wget -c https://chaindata-testnet.s3-ap-southeast-1.amazonaws.com/chaindata-testnet.tar # Uncompress tar xvf chaindata-testnet.tar