astroport/zen/g1_SURVEY.sh

187 lines
7.5 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##*/}"
echo "
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
########################################################################
# 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-21 05:02:16 +01:00
_(_)_ _(_)_
@@@@ (_)@(_) @@@@ (_)@(_) @@@@
@@()@@ wWWWw (_)\ @@()@@ wWWWw (_)\ @@()@@ wWWWw
@@@@ (___) \|/ @@@@ (___) \|/ @@@@ (___)
/ Y \| / Y \| / Y
\ | \ |/ | / \ | \ |/ | / \ | \ |/
\\|// \\|/// \\\|// \\|// \\|/// \\\|// \\|// \\|///
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2020-03-18 01:47:10 +01:00
# [ASTROPORT](https://astroport.com)
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
IPFSNODEID=$(ipfs id -f='<id>\n')
2020-03-18 01:47:10 +01:00
[[ $IPFSNODEID == "" ]] && echo "$USER Please Install IPFS !!" && exit 1
[[ ! -d ~/.zen/g1_TX_inputs ]] && mkdir -p ~/.zen/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-03-20 17:06:48 +01:00
[[ $DELAY == "" ]] && DELAY="30 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)
# NODE_G1PUBKEY=$2 # DEBUG
if [[ $NODE_G1PUBKEY == "" ]]; then
if [[ -f ~/.ssb/secret ]]; then
ssbpub=$(cat ~/.ssb/secret | grep public\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
ssbpriv=$(cat ~/.ssb/secret | grep private\" | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/\"//g)
NODE_G1PUBKEY=$(echo $ssbpub | base64 -d | base58)
NODE_G1PRIVKEY=$(echo $ssbpriv | base64 -d | base58)
2020-03-18 01:47:10 +01:00
if [[ ! -f ~/.ssb/secret.dunikey ]]; then
echo "pub: $NODE_G1PUBKEY" > ~/.ssb/secret.dunikey
echo "sec: $NODE_G1PRIVKEY" >> ~/.ssb/secret.dunikey
fi
2020-03-16 02:24:20 +01:00
else
2020-03-18 01:47:10 +01:00
NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
NODE_G1PRIVKEY=$(cat ~/.ssb/secret.dunikey | grep 'sec:' | cut -d ' ' -f 2)
2020-03-16 02:24:20 +01:00
fi
fi
2020-03-18 01:47:10 +01:00
[[ "$NODE_G1PUBKEY" == "" ]] && echo "$USER Missing ~/.ssb/secret : Please Install Scuttlebutt server !" && exit 1;
2020-03-16 02:24:20 +01:00
#########################################################################################################
echo "======================================="
echo "IPFS Node ID = $IPFSNODEID
__
_|_ _ _| |\ | _ _| _ /__/| _.|| __|_
(_| |(/_(_|< | \|(_)(_|(/_ \_| | \/\/(_|||(/_|_
last $DELAY
G1 PUBKEY = $NODE_G1PUBKEY
SSB ID = %$ssbpub.ed25519
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
curl -s $DUNITERURL/tx/history/$NODE_G1PUBKEY/times/$TIMEBEFORE/$TIMESTAMP > /tmp/g1_TX.scan.txt
TXNB=$(cat /tmp/g1_TX.scan.txt | wc -l)
echo "
$DUNITERURL/tx/history/$NODE_G1PUBKEY/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-03-16 02:24:20 +01:00
echo "DETECTED $TXnb TX... Checking TX/IN..."
# 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?
if [[ ! -f ~/.zen/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-03-16 02:24:20 +01:00
[[ $ISSUER == $NODE_G1PUBKEY ]] && ((line++)) && continue ## TX/OUT CONTINUE
echo $ISSUER > ~/.zen/g1_TX_inputs/zen.$TXhash
2020-03-18 01:47:10 +01:00
# GET OUTPUTS AND MAKE ZEN=G1*100 SUM
ZEN=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.received[].outputs[]' | grep $NODE_G1PUBKEY | 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-03-16 02:24:20 +01:00
# echo "TX-IN $ISSUER => $NODE_G1PUBKEY"
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 _ _|
|/\ _|_| \|| |_|| | \(/_(_(/_|\/(/_(_|
"
# Add CASE for received here
2020-03-18 01:47:10 +01:00
###### CREATE ZEN VALUE IN IPFS #########
2020-03-20 17:06:48 +01:00
[[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER
2020-03-18 01:47:10 +01:00
############################################
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-03-16 02:24:20 +01:00
echo "DETECTED $TXnb TX... Checking TX/IN..."
# 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?
if [[ ! -f ~/.zen/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-03-16 02:24:20 +01:00
[[ $ISSUER == $NODE_G1PUBKEY ]] && ((line++)) && continue ## TX/OUT CONTINUE
echo $ISSUER > ~/.zen/g1_TX_inputs/zen.$TXhash
2020-03-16 02:24:20 +01:00
# GET OUTPUTS AND MAKE ZEN SUM
ZEN=$(cat /tmp/g1_TX.scan.txt | jq -r '.history.pending[].outputs[]' | grep $NODE_G1PUBKEY | 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-03-16 02:24:20 +01:00
# echo "TX-IN $ISSUER => $NODE_G1PUBKEY"
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._ _
|/\ _|_| \|| |_|| | (/_| |(_||| |(_|
_|
"
# Add CASE for pending here
2020-03-18 01:47:10 +01:00
###### CREATE ZEN VALUE IN IPFS #########
2020-03-20 17:06:48 +01:00
[[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER
2020-03-18 01:47:10 +01:00
############################################
2020-03-16 02:24:20 +01:00
fi
((line++))
done
fi
echo "FINISH !
__
|\ | _ _| _ /__/| \ /_.|| __|_ |_ _.| _.._ _ _
| \|(_)(_|(/_ \_| | \/\/(_|||(/_|_ |_)(_||(_|| |(_(/_
silkaj -p $DUNITERNODE balance $NODE_G1PUBKEY
"
2020-03-20 18:37:56 +01:00
exit 0