From 6ddcddf5ea930899b249e3ab8329f955b004bc3f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 6 Jun 2024 16:17:53 +0800 Subject: [PATCH] feat: add tools for validators --- erbie_install.sh | 69 +++++++++++---------- params/version.go | 2 +- validator_tool.sh | 155 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 32 deletions(-) create mode 100644 validator_tool.sh diff --git a/erbie_install.sh b/erbie_install.sh index d79baeab..e22637d4 100644 --- a/erbie_install.sh +++ b/erbie_install.sh @@ -1,6 +1,6 @@ #!/bin/bash #check docker cmd -echo "Script version Number: v0.15.0" +echo "Script version Number: v1.0.2" which docker >/dev/null 2>&1 if [ $? -ne 0 ] ; then echo "docker not found, please install first!" @@ -21,18 +21,23 @@ fi vt5=1670383155 vl=$(wget https://docker.erbie.io/version>/dev/null 2>&1 && cat version|awk '{print $1}') vr=$(cat version|awk '{print $2}' && rm version) -erb=$(docker images|grep "erbie/erbie"|grep "v1") +erb=$(docker images|grep "erbie/erbie"|grep "latest") + if [ -n "$erb" ];then - ct=$(docker inspect erbie/erbie:v1 -f {{.Created}}) +#erbie/erbie:latest image in machine + ct=$(docker inspect erbie/erbie:latest -f {{.Created}}) cts=$(date -d "$ct" +%s) if [ $cts -eq $vl ];then + #version is latest container=$(docker ps -a|awk '{if($NF == "erbie")print $0}') if [[ $container =~ "Up" ]];then + #erbie container is running while true do key=$(docker exec -it erbie /usr/bin/ls -l /erb/.erbie/erbie/nodekey) if [ -n "$key" ];then - echo -e "It is the latest version: $vr \nYour private key:" + #nodekey is alive + echo -e "Erbie is the latest versiob: $vr \nnode private key:" docker exec -it erbie /usr/bin/cat /erb/.erbie/erbie/nodekey echo -e "\n" exit 0 @@ -41,16 +46,16 @@ if [ -n "$erb" ];then fi done elif [[ $container =~ "Exited" ]];then - echo -e "Your peer isn't running\nYou can use 'docker start erbie' to start the node" + echo -e "Your node isn't running\nYou can use 'docker start erbie' to start the node" exit 0 else docker rm erbie - read -p "Enter your private key:" ky + #read -p "Enter your private key:" ky fi elif [ $cts -lt $vl ];then docker stop erbie > /dev/null 2>&1 docker rm erbie > /dev/null 2>&1 - docker rmi erbie/erbie:v1 > /dev/null 2>&1 + docker rmi erbie/erbie:latest > /dev/null 2>&1 if [ $cts -lt $vt5 ];then if [ -f /erb/.erbie/erbie/nodekey ];then echo "Clearing historical data ............" @@ -58,36 +63,36 @@ if [ -n "$erb" ];then rm -rf /erb/.erbie mkdir -p /erb/.erbie/erbie mv /erb/nodekey /erb/.erbie/erbie/ - else - read -p "Enter your private key:" ky - fi - elif [ $cts -ge $vt5 ];then - if [ ! -f /erb/.erbie/erbie/nodekey ];then - read -p "Enter your private key:" ky + #else + #read -p "Enter your private key:" ky fi + #elif [ $cts -ge $vt5 ];then + #if [ ! -f /erb/.erbie/erbie/nodekey ];then + #read -p "Enter your private key:" ky + #fi fi fi -else - read -p "Enter your private key:" ky +#else + #read -p "Enter your private key:" ky fi -if [ -n "$ky" ]; then - mkdir -p /erb/.erbie/erbie - if [ ${#ky} -eq 64 ];then - echo $ky > /erb/.erbie/erbie/nodekey - elif [ ${#ky} -eq 66 ] && ([ ${ky:0:2} == "0x" ] || [ ${ky:0:2} == "0X" ]);then - echo ${ky:2:64} > /erb/.erbie/erbie/nodekey - else - echo "the nodekey format is not correct" - exit 1 - fi -fi +#if [ -n "$ky" ]; then +# mkdir -p /erb/.erbie/erbie +# if [ ${#ky} -eq 64 ];then +# echo $ky > /erb/.erbie/erbie/nodekey +# elif [ ${#ky} -eq 66 ] && ([ ${ky:0:2} == "0x" ] || [ ${ky:0:2} == "0X" ]);then +# echo ${ky:2:64} > /erb/.erbie/erbie/nodekey +# else +# echo "the nodekey format is not correct" +# exit 1 +# fi +#fi -docker pull erbie/erbie:v1 +docker pull erbie/erbie:latest docker images|awk '{print $1,$2}'|while read img ver do - if [[ $img == "erbie/erbie" ]] && [[ $ver == "v1" ]];then + if [[ $img == "erbie/erbie" ]] && [[ $ver == "latest" ]];then echo "true">temp break fi @@ -101,15 +106,16 @@ else exit 1 fi -docker run -id -p 30303:30303 -p 8545:8545 -v /erb/.erbie:/erb/.erbie --name erbie erbie/erbie:v1 +docker run -id -p 30303:30303 -p 8545:8545 -v /erb/.erbie:/erb/.erbie --name erbie erbie/erbie:latest while true do echo -e "running the container...\n" s=$(docker ps -a|grep "Up"|awk '{if($NF == "erbie") print $NF}'|wc -l) key=$(docker exec -it erbie /usr/bin/ls -l /erb/.erbie/erbie/nodekey 2>/dev/null) - if [[ $s -gt 0 ]] && [[ "$key" =~ "nodekey" ]];then - echo "Your private key is:" + #echo "ls -l /erb/.erbie/erbie/nodekey:"$key + if [[ $s -gt 0 ]] && [[ "$key" =~ "root" ]];then + echo "node private key:" docker exec -it erbie /usr/bin/cat /erb/.erbie/erbie/nodekey echo -ne "\n" docker exec -it erbie ./erbie version|grep "Version"|grep -v go @@ -118,3 +124,4 @@ do sleep 5s fi done + diff --git a/params/version.go b/params/version.go index 300ad3fe..eb086772 100644 --- a/params/version.go +++ b/params/version.go @@ -23,7 +23,7 @@ import ( const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 0 // Minor version component of the current release - VersionPatch = 1 // Patch version component of the current release + VersionPatch = 2 // Patch version component of the current release VersionMeta = "stable" // Version metadata to append to the version string ) diff --git a/validator_tool.sh b/validator_tool.sh new file mode 100644 index 00000000..65b86daa --- /dev/null +++ b/validator_tool.sh @@ -0,0 +1,155 @@ +#!/bin/bash +noderpcurl="http://127.0.0.1:8545" +nodekeypwd=".erbie/erbie/nodekey" + +echo """ +*********************************************************************** +Notice: + +Default value in this script should modifided base on your situation: +node rpc url;noderpcurl="http://127.0.0.1:8545" +node file: nodekeypwd=".erbie/erbie/nodekey" +********************************************************************** +""" + +echo "Please choose and enter the number:" +echo + +select opt in "to be a validator" "do not to be a validator" "displays the corresponding address based on the private key" "exit" +do + case $opt in + "to be a validator") + #read -p "Enter your private key:" ky + PASS="" + echo -e "Enter your private key: \c" + while : ;do + char=` #这里是反引号,tab键上面那个 + stty cbreak -echo + dd if=/dev/tty bs=1 count=1 2>/dev/null + stty -cbreak echo + ` #这里是反引号,tab键上面那个 + if [ "$char" = "" ];then + echo #这里的echo只是为换行 + break + fi + PASS="$PASS$char" + echo -n "*" + done + + if [ -n "$PASS" ]; then + if [ ${#PASS} -ne 64 ];then + #echo $PASS + #else + echo "the private key format is not correct" + #break + else + + + #nodekey=$(cat .erbie/erbie/nodekey) + nodekey=$(cat $nodekeypwd) + #echo $nodekey + + ./erbvalidator -cmd 1 -nodeurl $noderpcurl -prikey $PASS -proxykey $nodekey + + address=$( ./erbvalidator -cmd 3 -nodeurl $noderpcurl -prikey $PASS | awk '{print $3}') + echo "private key address is: "$address + echo "waitting for Verify operation results ..." + sleep 30 + result=$(curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_getAccountInfo","params":["'$address'", "latest"],"id":50888}' $noderpcurl 2>/dev/null |grep -i $address) + if [ -n "$result" ];then + echo "validator!" + else + echo "not validator!" + fi + fi + fi + #break + ;; + "do not to be a validator") + #echo "do not to be a validator" + # 在这里添加操作B的代码 + PASS="" + echo -e "Enter your private key: \c" + while : ;do + char=` #这里是反引号,tab键上面那个 + stty cbreak -echo + dd if=/dev/tty bs=1 count=1 2>/dev/null + stty -cbreak echo + ` #这里是反引号,tab键上面那个 + if [ "$char" = "" ];then + echo #这里的echo只是为换行 + break + fi + PASS="$PASS$char" + echo -n "*" + done + + if [ -n "$PASS" ]; then + if [ ${#PASS} -ne 64 ];then + echo "the private key format is not correct" + + else + + + ./erbvalidator -cmd 2 -nodeurl $noderpcurl -prikey $PASS + + address=$( ./erbvalidator -cmd 3 -nodeurl $noderpcurl -prikey $PASS | awk '{print $3}') + echo "private key address is: "$address + echo "waitting for Verify operation results ..." + sleep 30 + + result=$(curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_getAccountInfo","params":["'$address'", "latest"],"id":51888}' $noderpcurl 2>/dev/null |grep -i $address) + if [ -n "$result" ];then + echo "validator!" + else + echo "not validator!" + fi + fi + fi + + + #break + ;; + "displays the corresponding address based on the private key") + #echo "displays the corresponding address based on the private key" + # 在这里添加操作C的代码 + + PASS="" + echo -e "Enter your private key: \c" + while : ;do + char=` #这里是反引号,tab键上面那个 + stty cbreak -echo + dd if=/dev/tty bs=1 count=1 2>/dev/null + stty -cbreak echo + ` #这里是反引号,tab键上面那个 + if [ "$char" = "" ];then + echo #这里的echo只是为换行 + break + fi + PASS="$PASS$char" + echo -n "*" + done + + if [ -n "$PASS" ]; then + if [ ${#PASS} -ne 64 ];then + #echo $PASS + + echo "the private key format is not correct" + #break + else + + + #./erbvalidator -cmd 3 -nodeurl "http://127.0.0.1:8545" -prikey $PASS + address=$( ./erbvalidator -cmd 3 -nodeurl "http://127.0.0.1:8545" -prikey $PASS | awk '{print $3}') + echo "private key address is: "$address + fi + fi + #break + ;; + "exit") + echo "exit" + break + ;; + *) echo "Invalid option $REPLY";; + esac +done