Skip to content

Instantly share code, notes, and snippets.

@joshhamon
Forked from mesquka/incognito_eth.sh
Last active February 11, 2024 04:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save joshhamon/43d90df0afa906980a7d1ff85a4e2bb0 to your computer and use it in GitHub Desktop.
Save joshhamon/43d90df0afa906980a7d1ff85a4e2bb0 to your computer and use it in GitHub Desktop.
Run multiple vNodes on the same machine/cloud VM
#!/bin/bash
# Update api="https://mainnet.infura.io/v3/*" with your mainnet url. Go to the forum on we.incognito.org for help
# Update the following section with your validator keys
validator_keys=(
"KEY 1"
"KEY 2"
"KEY 3"
...
"KEY X"
)
api="https://mainnet.infura.io/v3/*"
run()
{
bootnode="mainnet-bootnode.incognito.org:9330"
latest_tag=$1 #leave as $1 or replace with a known good tag if latest tag isn't stable
current_tag=$2
for i in "${!validator_keys[@]}"
do
docker rm -f "inc_mainnet_$i"
done
if [ "$current_tag" != "" ]
then
docker image rm -f incognitochain/incognito-mainnet:${current_tag}
fi
if [ ! -d "$PWD/eth-mainnet-data" ]
then
mkdir $PWD/eth-mainnet-data
chmod -R 777 $PWD/eth-mainnet-data
fi
docker pull incognitochain/incognito-mainnet:${latest_tag}
docker network create --driver bridge inc_net || true
docker run --restart=always --net inc_net -d --name eth_mainnet -p 8545:8545 -p 30303:30303 -v $PWD/eth-mainnet-data:/geth -it ethereum/client-go --syncmode light --datadir /geth --rpcaddr 0.0.0.0 --rpcport 8545 --rpc --rpccorsdomain "*"
for i in "${!validator_keys[@]}"
do
docker run --restart=always -p $((9334 + $i)):$((9334 + $i)) -p $((9433 + $i)):$((9433 + $i)) --net inc_net -e GETH_PROTOCOL= -e GETH_PORT= -e NODE_PORT=$((9433 + $i)) -e RPC_PORT=$((9334 + $i)) -e BOOTNODE_IP=$bootnode -e GETH_NAME=$api -e MININGKEY=${validator_keys[$i]} -e TESTNET=false -e LIMIT_FEE=1 -v $PWD/data${i}:/data -it -d --name inc_mainnet_${i} incognitochain/incognito-mainnet:${latest_tag}
done
}
if [ -x "$(command -v docker)" ]; then
echo "Docker Installed"
else
echo "Installing Docker"
bash -c "wget -qO- https://get.docker.com/ | sh"
sudo usermod -aG docker $USER
echo "PLEASE RESTART YOUR COMPUTER AND RE-RUN THIS SCRIPT"
exit
fi
ps aux | grep 'incognito.sh' | awk '{ print $2}' | grep -v "^$$\$" | xargs kill -9
current_latest_tag=""
while [ 1 = 1 ]
do
tags=`curl -X GET https://registry.hub.docker.com/v1/repositories/incognitochain/incognito-mainnet/tags | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}' | sed -e 's/\n/;/g'`
sorted_tags=($(echo ${tags[*]}| tr " " "\n" | sort -rn))
latest_tag=${sorted_tags[0]}
if [ "$current_latest_tag" != "$latest_tag" ]
then
run $latest_tag $current_latest_tag
current_latest_tag=$latest_tag
fi
for i in "${!validator_keys[@]}"
do
docker start "inc_mainnet_$i"
done
sleep 3600s
done
#!/bin/bash
# I never used this file so edited the name to make it easier to run incognito_eth.sh but I saved this just in case.
validator_keys=(
"KEY 1"
"KEY 2"
"KEY 3"
...
"KEY X"
)
run()
{
bootnode="mainnet-bootnode.incognito.org:9330"
latest_tag=$1 #leave as $1 or replace with a known good tag if latest tag isn't stable
current_tag=$2
for i in "${!validator_keys[@]}"
do
docker rm -f "inc_mainnet_$i"
done
if [ "$current_tag" != "" ]
then
docker image rm -f incognitochain/incognito-mainnet:${current_tag}
fi
docker pull incognitochain/incognito-mainnet:${latest_tag}
for i in "${!validator_keys[@]}"
do
docker run --restart=always -p $((9334 + $i)):$((9334 + $i)) -p $((9433 + $i)):$((9433 + $i)) -e NODE_PORT=$((9433 + $i)) -e RPC_PORT=$((9334 + $i)) -e BOOTNODE_IP=$bootnode -e MININGKEY=${validator_keys[$i]} -e TESTNET=false -e LIMIT_FEE=1 -v $PWD/data${i}:/data -itd --name inc_mainnet_${i} incognitochain/incognito-mainnet:${latest_tag}
done
}
if [ -x "$(command -v docker)" ]; then
echo "Docker Installed"
else
echo "Installing Docker"
bash -c "wget -qO- https://get.docker.com/ | sh"
sudo usermod -aG docker $USER
echo "PLEASE RESTART YOUR COMPUTER AND RE-RUN THIS SCRIPT"
exit
fi
ps aux | grep 'incognito.sh' | awk '{ print $2}' | grep -v "^$$\$" | xargs kill -9
current_latest_tag=""
while [ 1 = 1 ]
do
tags=`curl -X GET https://registry.hub.docker.com/v1/repositories/incognitochain/incognito-mainnet/tags | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}' | sed -e 's/\n/;/g'`
sorted_tags=($(echo ${tags[*]}| tr " " "\n" | sort -rn))
latest_tag=${sorted_tags[0]}
if [ "$current_latest_tag" != "$latest_tag" ]
then
run $latest_tag $current_latest_tag
current_latest_tag=$latest_tag
fi
for i in "${!validator_keys[@]}"
do
docker start "inc_mainnet_$i"
done
sleep 3600s
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment