astroport/zen/g1_MONITOR_zen.sh

190 lines
7.1 KiB
Bash
Raw Normal View History

2020-03-16 02:24:20 +01:00
#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
# Version: 1.0
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
2020-03-20 18:37:56 +01:00
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
2020-04-28 14:27:25 +02:00
2020-03-16 02:24:20 +01:00
########################################################################
2020-03-20 17:06:48 +01:00
# \\///
# qo-op
2020-03-20 18:37:56 +01:00
############# $ME DELAY
########################################################################
2020-04-28 14:27:25 +02:00
echo "
2020-03-21 05:02:16 +01:00
_(_)_ _(_)_
@@@@ (_)@(_) @@@@ (_)@(_) @@@@
@@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw
@@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___)
/ Y \| / Y \| / Y
\ | \ |/ | / \ | \ |/ | / \ | \ |/
\\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|///
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2020-04-28 14:27:25 +02:00
# [ASTROPORT](https://astroport.com)
# ex: ./$ME \"10 days\"
# Survey Node G1 Wallet for TX/IN Commands in received comments ...
2020-03-16 02:24:20 +01:00
########################################################################
2020-03-20 18:37:56 +01:00
"
DELAY="$1"
2020-03-16 02:24:20 +01:00
2020-04-19 19:09:29 +02:00
ipfsnodeid=$(ipfs id -f='<id>\n')
[[ "$ipfsnodeid" == "" ]] && echo "$USER Please Install IPFS !!" && exit 1
2020-03-26 03:08:15 +01:00
[[ ! -d ~/.zen/cache/g1_TX_inputs ]] && mkdir -p ~/.zen/cache/g1_TX_inputs # Directory containing G1 blockchain incoming TX Scan
2020-03-22 00:03:47 +01:00
[[ ! -d ~/.zen/ipfs ]] && mkdir -p ~/.zen/ipfs # Directory where NODE store SMS & other Channel Wallets
[[ ! -d ~/.zen/ipfs_swarm ]] && mkdir -p ~/.zen/ipfs_swarm # Local copy of all SSB friends IPFS Nodes published ipfs
2020-03-16 02:24:20 +01:00
#########################################################################################################
# GET G1 PUBKEY FROM SCUTTLEBUTT or $2 (DEBUG)
2020-04-19 11:30:03 +02:00
[[ $DELAY == "" ]] && DELAY="60 days" && echo "*** HELP ***" && echo "./$ME \"duration\" (default $DELAY)" && echo "************" && echo
2020-03-16 02:24:20 +01:00
DELAYUNIT=$(echo $DELAY | cut -d ' ' -f 2)
2020-04-19 17:21:43 +02:00
# g1pub=$2 # DEBUG
2020-04-30 05:30:55 +02:00
[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
g1pub=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
2020-04-19 17:21:43 +02:00
[[ "$g1pub" == "" ]] && echo "$USER Missing ~/.ssb/secret : Please Install Scuttlebutt server !" && exit 1;
2020-03-16 02:24:20 +01:00
#########################################################################################################
echo "======================================="
2020-04-19 19:09:29 +02:00
echo "IPFS Node ID = $ipfsnodeid
__
_|_ _ _| |\ | _ _| _ /__/| _.|| __|_
(_| |(/_(_|< | \|(_)(_|(/_ \_| | \/\/(_|||(/_|_
last $DELAY
2020-04-19 17:21:43 +02:00
G1 PUBKEY = $g1pub
2020-03-20 18:37:56 +01:00
"
2020-03-16 02:24:20 +01:00
2020-03-18 01:47:10 +01:00
# PREPARE TIMESTAMP LIMITS
TIMEBEFORE=$(date -u --date="-$DELAY" +"%s")
TIMESTAMP=$(date -u +"%s")
# GET DUNITER SERVER
DUNITERNODE=$($MY_PATH/tools/duniter_getnode.sh)
DUNITERURL="https://$DUNITERNODE"
2020-03-18 01:47:10 +01:00
# GET BLOCKCHAIN TX FOR TIME WINDOW
2020-04-19 17:21:43 +02:00
curl -s $DUNITERURL/tx/history/$g1pub/times/$TIMEBEFORE/$TIMESTAMP > /tmp/g1_TX.scan.txt
TXNB=$(cat /tmp/g1_TX.scan.txt | wc -l)
echo "
2020-04-19 17:21:43 +02:00
$DUNITERURL/tx/history/$g1pub/times/$TIMEBEFORE/$TIMESTAMP
___
|\/ ._ ._ _ |_ _ ._
G1 |/\ | ||_|| | ||_)(/_|
$TXNB
"
2020-03-16 02:24:20 +01:00
# Choose between "history.received" OR "history.pending" depending on DELAY
2020-03-16 02:24:20 +01:00
if [[ $DELAYUNIT != "minutes" && $DELAYUNIT != "minute" ]]; then
2020-03-16 02:24:20 +01:00
# HOW MANY TX DO WE HAVE...
TXnb=$(cat /tmp/g1_TX.scan.txt | jq '.history.received[].hash' | wc -l)
2020-04-19 19:09:29 +02:00
echo "During $DELAY, detected $TXnb TX... Now looking for INPUT TX..."
2020-03-16 02:24:20 +01:00
# PARSE $TXnb TX
line=1
while [[ $line -le $TXnb ]]; do
2020-03-18 01:47:10 +01:00
# GET TX HASH
TXhash=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.received[].hash' | head -n $line | tail -n 1 )
2020-03-18 01:47:10 +01:00
# IT IS A NEW TX?
2020-03-26 03:08:15 +01:00
if [[ ! -f ~/.zen/cache/g1_TX_inputs/zen.$TXhash ]]; then
2020-03-18 01:47:10 +01:00
# GET LAST TX ISSUER
ISSUER=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.received[].issuers[0]' | head -n $line | tail -n 1)
2020-04-19 17:21:43 +02:00
[[ $ISSUER == $g1pub ]] && ((line++)) && continue ## TX/OUT CONTINUE
2020-03-26 03:08:15 +01:00
echo $ISSUER > ~/.zen/cache/g1_TX_inputs/zen.$TXhash
2020-03-18 01:47:10 +01:00
# GET OUTPUTS AND MAKE ZEN=G1*100 SUM
2020-04-19 17:21:43 +02:00
ZEN=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.received[].outputs[]' | grep $g1pub | head -n $line | tail -n 1 | cut -d ':' -f 1)
2020-03-16 02:24:20 +01:00
# GET COMMENT
COMMENT=$(cat /tmp/g1_TX.scan.txt | jq '.history.received' | jq -r '.[].comment' | head -n $line | tail -n 1)
2020-04-19 17:21:43 +02:00
# echo "TX-IN $ISSUER => $g1pub"
echo "Received $ZEN Zen From $ISSUER :: $COMMENT :: ($TXhash)"
2020-03-19 13:09:54 +01:00
CMD=$(echo "$COMMENT" | awk '{print toupper($1)}')
echo "
___ ___ _ ___ _
|\/ | |\ ||_)| || |_) _ _ _ o _ _|
|/\ _|_| \|| |_|| | \(/_(_(/_|\/(/_(_|
"
2020-04-19 19:09:29 +02:00
case "$CMD" in
ZEN)
# Create ZenTAG QRCode
$MY_PATH/zen_MAKE.sh $ZEN $TXhash
;;
*)
2020-04-19 23:46:12 +02:00
echo "$TXhash = $ZEN ZEN ($COMMENT)"
2020-04-19 19:09:29 +02:00
# $MY_PATH/zen_MAKE.sh "ME" $TXhash
;;
esac
2020-03-16 02:24:20 +01:00
fi
((line++))
done
2020-03-16 02:24:20 +01:00
else
# MINUTE DELAY = pending // TODO: if anyone succeed in passing $VAR in jq command, both can be merge...
2020-03-16 02:24:20 +01:00
# HOW MANY TX DO WE HAVE...
TXnb=$(cat /tmp/g1_TX.scan.txt | jq '.history.pending[].hash' | wc -l)
2020-04-19 19:09:29 +02:00
echo "During $DELAY, detected $TXnb TX... Now looking for INPUT TX..."
2020-03-16 02:24:20 +01:00
# PARSE $TXnb TX
line=1
while [[ $line -le $TXnb ]]; do
TXhash=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.pending[].hash' | head -n $line | tail -n 1)
2020-03-16 02:24:20 +01:00
# IT IS A NEW TX/IN?
2020-03-26 03:08:15 +01:00
if [[ ! -f ~/.zen/cache/g1_TX_inputs/zen.$TXhash ]]; then
2020-03-16 02:24:20 +01:00
# GET LAST RX ISSUER
ISSUER=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.pending[].issuers[0]' | head -n $line | tail -n 1)
2020-04-19 17:21:43 +02:00
[[ $ISSUER == $g1pub ]] && ((line++)) && continue ## TX/OUT CONTINUE
2020-03-26 03:08:15 +01:00
echo $ISSUER > ~/.zen/cache/g1_TX_inputs/zen.$TXhash
2020-03-16 02:24:20 +01:00
# GET OUTPUTS AND MAKE ZEN SUM
2020-04-19 17:21:43 +02:00
ZEN=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.pending[].outputs[]' | grep $g1pub | head -n $line | tail -n 1 | cut -d ':' -f 1)
2020-03-16 02:24:20 +01:00
# GET COMMENT
COMMENT=$(cat /tmp/g1_TX.scan.txt | jq '.history.pending' | jq -r '.[].comment' | head -n $line | tail -n 1)
2020-04-19 17:21:43 +02:00
# echo "TX-IN $ISSUER => $g1pub"
echo "Pending $ZEN Zen From $ISSUER :: $COMMENT :: ($TXhash)"
2020-03-19 13:09:54 +01:00
CMD=$(echo "$COMMENT" | awk '{print toupper($1)}')
echo "
___ ___ _ ___ _
|\/ | |\ ||_)| || |_)_ ._ _|o._ _
|/\ _|_| \|| |_|| | (/_| |(_||| |(_|
_|
"
2020-04-19 19:09:29 +02:00
case "$CMD" in
ZEN)
# Create ZenTAG QRCode
$MY_PATH/zen_MAKE.sh $ZEN $TXhash
;;
2020-04-19 19:09:29 +02:00
*)
2020-04-19 23:46:12 +02:00
echo "$TXhash = $ZEN ZEN ($COMMENT)"
2020-04-19 19:09:29 +02:00
# $MY_PATH/zen_MAKE.sh "ME" $TXhash
;;
esac
2020-03-16 02:24:20 +01:00
fi
((line++))
done
fi
2020-04-20 02:04:49 +02:00
echo "FINISH ! ls ~/.zen/cache/g1_TX_inputs/
__
|\ | _ _| _ /__/| \ /_.|| __|_ |_ _.| _.._ _ _
| \|(_)(_|(/_ \_| | \/\/(_|||(/_|_ |_)(_||(_|| |(_(/_
2020-04-19 17:21:43 +02:00
silkaj -p $DUNITERNODE balance $g1pub
"
2020-03-20 18:37:56 +01:00
exit 0