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\"
|
2020-03-24 20:53:44 +01:00
|
|
|
# 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
|
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-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 "======================================="
|
2020-03-24 20:53:44 +01:00
|
|
|
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-24 20:53:44 +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")
|
2020-03-24 20:53:44 +01:00
|
|
|
# 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-03-24 20:53:44 +01:00
|
|
|
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
|
|
|
|
2020-03-24 20:53:44 +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-24 20:53:44 +01:00
|
|
|
|
2020-03-16 02:24:20 +01:00
|
|
|
# HOW MANY TX DO WE HAVE...
|
2020-03-24 20:53:44 +01:00
|
|
|
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
|
2020-03-24 20:53:44 +01:00
|
|
|
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
|
2020-03-24 20:53:44 +01:00
|
|
|
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
|
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-03-24 20:53:44 +01:00
|
|
|
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
|
2020-03-24 20:53:44 +01:00
|
|
|
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"
|
2020-03-24 20:53:44 +01:00
|
|
|
echo "Received $ZEN Zen From $ISSUER :: $COMMENT :: ($TXhash)"
|
2020-03-19 13:09:54 +01:00
|
|
|
CMD=$(echo "$COMMENT" | awk '{print toupper($1)}')
|
2020-03-24 20:53:44 +01:00
|
|
|
|
|
|
|
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-24 20:53:44 +01:00
|
|
|
|
2020-03-16 02:24:20 +01:00
|
|
|
fi
|
|
|
|
((line++))
|
|
|
|
done
|
2020-03-24 20:53:44 +01:00
|
|
|
|
|
|
|
|
2020-03-16 02:24:20 +01:00
|
|
|
else
|
2020-03-24 20:53:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
# 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...
|
2020-03-24 20:53:44 +01:00
|
|
|
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
|
2020-03-24 20:53:44 +01:00
|
|
|
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
|
2020-03-24 20:53:44 +01:00
|
|
|
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
|
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-03-24 20:53:44 +01:00
|
|
|
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
|
2020-03-24 20:53:44 +01:00
|
|
|
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"
|
2020-03-24 20:53:44 +01:00
|
|
|
echo "Pending $ZEN Zen From $ISSUER :: $COMMENT :: ($TXhash)"
|
2020-03-19 13:09:54 +01:00
|
|
|
CMD=$(echo "$COMMENT" | awk '{print toupper($1)}')
|
2020-03-24 20:53:44 +01:00
|
|
|
|
|
|
|
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-24 20:53:44 +01:00
|
|
|
|
2020-03-16 02:24:20 +01:00
|
|
|
fi
|
|
|
|
((line++))
|
|
|
|
done
|
|
|
|
fi
|
2020-03-24 20:53:44 +01:00
|
|
|
|
|
|
|
echo "FINISH !
|
|
|
|
__
|
|
|
|
|\ | _ _| _ /__/| \ /_.|| __|_ |_ _.| _.._ _ _
|
|
|
|
| \|(_)(_|(/_ \_| | \/\/(_|||(/_|_ |_)(_||(_|| |(_(/_
|
|
|
|
|
|
|
|
silkaj -p $DUNITERNODE balance $NODE_G1PUBKEY
|
|
|
|
|
|
|
|
"
|
2020-03-20 18:37:56 +01:00
|
|
|
exit 0
|