Improve grep for large matchs fir -F option; Fix UDToday when bloc is null

This commit is contained in:
poka 2020-09-22 02:36:20 +02:00
parent 20575ce15e
commit 62a30b0260
4 changed files with 60 additions and 49 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ db/*
cache
debug.log
bk-debug.log
bk

View File

@ -7,6 +7,7 @@
# Git: https://git.p2p.legal/axiom-team/g1-stats
################################################################################
[[ -z $debug ]] && debug=false
# Exit script if error
set -e
@ -18,21 +19,25 @@ if [[ -e $SCRIPTPATH/.env ]]; then source $SCRIPTPATH/.env; else echo "Veuillez
startTime=$(date +'%H:%M')
day=$(date +'%y-%m-%d')
dayP=$(date +'%d-%m-%y')
indexhtml="$WEBPATH/index.html"
echo -e "\n############# $day à $startTime #############\n"
[[ -z $(which jq) || -z $(which bc) || -z $(which curl) ]] && sudo apt update && sudo apt install jq bc curl
echo "Initialisation ..."
#TXBLOCKS=$(cat $SCRIPTPATH/db/txblocs) #kopa
TXBLOCKS=$(curl -s ${DUNITER}/blockchain/with/tx | jq '.result.blocks[]')
if $debug; then
TXBLOCKS=$(cat $SCRIPTPATH/db/txblocs)
membresPubkeys=$(cat db/membresPubkeys)
udBlocs=$(cat db/udblocs)
else
TXBLOCKS=$(curl -s ${DUNITER}/blockchain/with/tx | jq '.result.blocks[]')
membresPubkeys=$(curl -s ${DUNITER}/wot/members | jq -r '.results[].pubkey')
udBlocs=$(curl -s ${DUNITER}/blockchain/with/ud | jq '.result.blocks[]')
fi
TXBLOCKS=($(echo "$TXBLOCKS" | sort -hu | awk '{printf $1" "}'))
unset 'TXBLOCKS[${#TXBLOCKS[@]}-1]'
echo "TXBLOCKS OK"
membresPubkeys=$(curl -s ${DUNITER}/wot/members | jq -r '.results[].pubkey')
#membresPubkeys=$(cat db/membresPubkeys) #kopa
echo "membresPubkeys OK"
nbrMembers=$(echo "$membresPubkeys" | wc -l)
lastBloc=${TXBLOCKS[-1]}
udBlocs=$(curl -s ${DUNITER}/blockchain/with/ud | jq '.result.blocks[]')
echo "udBlocs OK"
isWeb=$1
jsonFile="$SCRIPTPATH/db/daily.json"
@ -61,5 +66,6 @@ displayStats
### Fin de programme
day=$(date +'%d-%m-%y')
echo -e " ---"
echo "$day - Heure de fin: $(date +'%H:%M')"
echo "
---
$day - Heure de fin: $(date +'%H:%M')"

View File

@ -17,18 +17,18 @@ addMembers() {
simpleWallets="$wallets"
for i in $(ls x*); do
local walletToSup=$(cat $i)
simpleWallets=$(echo "$simpleWallets" | grep -v "$walletToSup")
simpleWallets=$(echo "$simpleWallets" | grep -vF "$walletToSup")
done
[[ -d $tmpSplit ]] && rm -r $tmpSplit || exit 1
popd >/dev/null
}
web() {
[ ! -d $WEBPATH/history/ ] && mkdir -p $WEBPATH/history/
[ ! -d $WEBPATH/graph/ ] && mkdir -p $WEBPATH/graph/
[ ! -d $WEBPATH/css ] && cp -r $SCRIPTPATH/tpl/css $WEBPATH/
[ ! -d $WEBPATH/js ] && cp -r $SCRIPTPATH/tpl/js $WEBPATH/
indexhtml="$WEBPATH/index.html"
cp $SCRIPTPATH/tpl/index.html $indexhtml
datePrevious=$(date +'%y-%m-%d' -d "$day -1 day")
@ -52,7 +52,7 @@ web() {
sed -i "s/_soldeM/$soldeM/g" $indexhtml
sed -i "s/_pourcentSimpleWallet/$pourcentSimpleWallet/g" $indexhtml
sed -i "s/_nonConsumedUDT/$nonConsumedUDT/g" $indexhtml
sed -i "s/_monetaryMass/$monetaryMass/g" $indexhtml
sed -i "s/_monetaryMass/$monetaryMass/g" $indexhtml
sed -i "s/_sleepyG1/$sleepyG1/g" $indexhtml
[[ -z $(grep '"display:none;" class="previous"' $indexhtml) ]] && sed -i "s/_datePrevious/$datePrevious/g" $indexhtml && setPrevious="Oui"
[[ -z $(grep '"display:none;" class="next"' $indexhtml) ]] && sed -i "s/_dateNext/$dateNext/g" $indexhtml && setNext="Oui"
@ -116,25 +116,27 @@ nbrWallets() {
}
displayStats() {
echo -e "\n ---\n"
echo "Noeud: $DUNITER"
echo "Nombre total de wallet: $nbrTotalWallets"
echo "Nombre de membres: $nbrMembers (${pourcentMbrs}%)"
echo "Nombre de simple portefeuille: $nbrSimpleWallets (${pourcentWallets}%)"
echo -e "\n ---\n"
echo "Reçus Wallets: $sumRW"
echo "Reçus Membres: $sumRM"
echo "Reçus Total: $sumRT"
echo -e " ---"
echo "Envoyé Wallets: $sumSW"
echo "Envoyé Membres: $sumSM"
echo "Envoyé Total: $sumST"
echo -e " ---"
echo "Solde Wallets: $soldeW"
echo "Solde Membres: $soldeM"
echo -e " ---"
echo -e "Masse Monétaire:\t $monetaryMass Ḡ1"
echo -e "\n ---\n Analyse\n ---"
echo -e "$sleepyG1% des Ḡ1 n'ont jamais été utilisés."
echo "
---
Noeud: $DUNITER
Nombre total de wallet: $nbrTotalWallets
Nombre de membres: $nbrMembers (${pourcentMbrs}%)
Nombre de simple portefeuille: $nbrSimpleWallets (${pourcentWallets}%)
---
Reçus Wallets: $sumRW
Reçus Membres: $sumRM
Reçus Total: $sumRT
---
Envoyé Wallets: $sumSW
Envoyé Membres: $sumSM
Envoyé Total: $sumST
---
Solde Wallets: $soldeW
Solde Membres: $soldeM
---
Masse Monétaire: $monetaryMass Ḡ1
---
Analyse
---
$sleepyG1% des Ḡ1 n'ont jamais été utilisés."
}

View File

@ -2,18 +2,18 @@
scanTxWallets() {
local REGEX_PUBKEYS="[a-zA-Z0-9]{42,44}"
# On vérifie le cache existant et on démarre au dernier bloc en cache
if ls $SCRIPTPATH/cache/walletsUp-* > /dev/null 2>&1; then
local startFile=$(ls $SCRIPTPATH/cache/walletsUp-* | tail -n1)
local startIter=$(echo "$startFile" | awk -F '-' '{ print $NF }')
((startIter++))
local startBloc=$(head -n1 "$startFile")
wallets=$(tail -n +2 "$startFile" | sed '/---/Q' | sort -u)
local walletsAuj=$(cat "$startFile" | sed -e '1,/---/d' | sed '/---/Q' | grep .)$'\n'
local nbrMembersYesterday=$(cat "$startFile" | sed -e '1,/---/d' | sed -e '1,/---/d' | sed '/---/Q' | grep . | cut -d '|' -f 1)
local blockDateLast=$(cat "$startFile" | sed -e '1,/---/d' | sed -e '1,/---/d' | sed '/---/Q' | grep . | cut -d '|' -f 2)
##kopa [[ $lastBloc == $startBloc ]] && return 10
[[ $lastBloc == $startBloc ]] && return
rm $startFile
else
local startIter=0
@ -22,11 +22,10 @@ scanTxWallets() {
fi
incExec=1
for i in ${!TXBLOCKS[*]}; do
for ((i=$startIter; i<${#TXBLOCKS[@]}; i++)); do
startExec=$(($(date +%s%N)/1000000))
bloc=${TXBLOCKS[$i]}
[[ -z $bloc ]] && break
[[ $startIter != 0 && $i -le $startIter ]] && continue
# [[ $i -lt 290 ]] && continue #kopa
sleep 0.05
@ -84,23 +83,23 @@ scanTxWallets() {
# Exporte les valeurs de la journée dans le fichier JSON
jsonify() {
[[ -z $valueReceivedW ]] && valueReceivedW=0 || valueReceivedW=$(echo "scale=2; $valueReceivedW/100" | bc)
[[ -z $valueReceivedM ]] && valueReceivedM=0 || valueReceivedM=$(echo "scale=2; $valueReceivedM/100" | bc)
[[ -z $valueReceivedW ]] && valueReceivedW=0 || valueReceivedW=$(echo "scale=2; $valueReceivedW/100" | bc)
[[ -z $valueReceivedM ]] && valueReceivedM=0 || valueReceivedM=$(echo "scale=2; $valueReceivedM/100" | bc)
[[ -z $valueSentM ]] && valueSentM=0 || valueSentM=$(echo "scale=2; $valueSentM/100" | bc)
[[ -z $valueSentW ]] && valueSentW=0 || valueSentW=$(echo "scale=2; $valueSentW/100" | bc)
[[ -z $nbrMembersToday ]] && nbrMembersToday=0
[[ -z $nbrWallets ]] && nbrWallets=0
[[ -z $UDToday ]] && UDToday=0
local jsonTPL=$(sed s/_DATE/$blockDateLast/g $SCRIPTPATH/tpl/daily.json)
local jsonTPL=$(sed s/_DATE/$blockDateLast/g $SCRIPTPATH/tpl/daily.json)
local jsonTPL=$(sed s/_UDTODAY/$UDToday/g <<< $jsonTPL)
local jsonTPL=$(sed s/_RWALLETS/$valueReceivedW/g <<< $jsonTPL)
local jsonTPL=$(sed s/_RWALLETS/$valueReceivedW/g <<< $jsonTPL)
local jsonTPL=$(sed s/_SWALLETS/$valueSentW/g <<< $jsonTPL)
local jsonTPL=$(sed s/_RMEMBERS/$valueReceivedM/g <<< $jsonTPL)
local jsonTPL=$(sed s/_RMEMBERS/$valueReceivedM/g <<< $jsonTPL)
local jsonTPL=$(sed s/_SMEMBERS/$valueSentM/g <<< $jsonTPL)
local jsonTPL=$(sed s/_NBRMEMBERS/$nbrMembersToday/g <<< $jsonTPL)
local jsonTPL=$(sed s/_NBRWALLETS/$nbrWallets/g <<< $jsonTPL)
echo -e "$jsonTPL" | tr -d '\\' >> $jsonFile
echo -e "$jsonTPL" | tr -d '\\' >> $jsonFile
}
# Si la date du bloc courant est différente du bloc précedent, alors on stock les valeurs journalières
@ -119,7 +118,7 @@ scanTxWallets() {
local i
for i in $(ls x*); do
local walletToSup=$(cat $i)
local walletsAujTmp=$(echo "$walletsAujTmp" | grep -v "$walletToSup")
local walletsAujTmp=$(echo "$walletsAujTmp" | grep -vF "$walletToSup")
done
[[ -d $tmpSplit ]] && rm -r $tmpSplit || exit 1
popd >/dev/null
@ -133,9 +132,13 @@ scanTxWallets() {
nbrMembersToday=$(($nbrMembersTotalToday-$nbrMembersYesterday))
# Obtention du dividende à ce block
udBlock=$(for i in $udBlocs; do [[ $i -ge $bloc ]] && echo $lastBloc && break; lastBloc=$i; done)
UDToday=$(curl -s ${DUNITER}/blockchain/block/$udBlock | jq '.dividend')
UDToday=$(echo "scale=2; $UDToday/100" | bc)
local j
for j in $udBlocs; do
[[ $j -ge $bloc ]] && break
lastUdBloc=$j
done
[[ -z $lastUdBloc ]] && lastUdBloc=$(echo "$udBlocs" | tail -n1)
UDToday=$(curl -s ${DUNITER}/blockchain/block/$lastUdBloc | jq '.dividend' | xargs -i echo "scale=2; {}/100" | bc)
jsonify
}
@ -202,14 +205,13 @@ scanTxWallets() {
clear
echo "Heure de début: $startTime"
echo
echo "Scan en cours: $progress% - $bloc/$lastBloc"
echo "Scan en cours: $progress% - $bloc/$lastBloc (Boucle $i)"
echo "Date: $blockDate"
echo "Temps d'execution: $midTimeExec"
else
echo "Scan des blocs avec transactions en cours ..."
fi
# [[ $i -ge 90 ]] && break #kopa
# [[ $i -ge 35949 ]] && break #kopa
done
[[ $blockDateLast == $blockDate ]] && applyToday