You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

98 lines
4.5 KiB

#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 1.0
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
###########################################################################################
# tag_OP.sh OPERATION ON ZenTAG...
###########################################################################################
# fred@ONELOVE:~/workspace/ZEN$ ipfs ls /ipns/QmZxwgScLyLjitE1mrUFqpTw27gk6tMdfKQ7QTEo28dE2u
# QmVkur97Pqpgt7cy71FCNacPd5Z1eD9QVfw5tu4LdXHavk 47 _chain
# QmUQcSjQx2bg4cSe2rUZyQi6F8QtJFJb74fWL7D784UWf9 2 _chain.n
# QmRPdapkSVeYeRcC6X7freVo8vrGYjKcGsa96V5GsMg36p 20 _chain.nanodate
# Qmc5m94Gu7z62RC8waSKkZUrCCBJPyHbkpmGzEePxy2oXJ 1 _chain.prev
# Qmb8gYFmno4QeEpaPTi969qQNyVJK9VyfBbsXtyMA3PMow 45 _g1.creator
# QmQo6ghBGdkGCnGoB22cYmraR76q44K1mjVXqQQ3UVn2T1 45 _g1.issuer
# QmfUFk27ZvHaGfEwBeqResw2qQ9SCu4tsY69SkVuCdWAxB 65 _g1.txhash
# QmaKa7FGwmMshE7RACrWAFCsWETu1HcHnV1eak7HcUk6Cs 47 _ipfs.creator
# QmfCL14hnVnm3mrYT7fRjveMRTEoSp2axqCVp3JYoxXXgn 1300 _ipfs.publishkey.B.gpg
# QmUQ7WsACNYYWAw4QW8hKTCq8MM8oYGV7HJuxW7QTGj9qS 1243 _ipfs.publishkey.crypt
# QmdvRknZWSZUyS9SfmFWcvySv1tgi2PTF711rsGPN6ftL1 65 _tag.B.sha
# QmXA1zSxA3dh1dxFtkKaH5iomN3BsKMSAo2qhruA58AU81 34 _tag.uid
# QmPrumas2N5DuwcqUz9mayAU6oDL2bLjhpkVZ8hCRq9rpx 5 _tag.zen
############################################################################################
# TRANSFERT $VALUE ZEN FROM $JSOURCE ZenTag to $JDEST ZenTag
JSOURCE=$1
JDEST=$2
VALUE=$3
IPFSNODEID=$(ipfs id -f='<id>\n')
NANODATE=$(date -u +%s%N)
############################################
echo "############################################
zen_OP.sh ZenTag TRANSFER $NANODATE
############################################
SOURCE(1): $JSOURCE
DEST(2): $JDEST
VALUE(3): $VALUE ZEN
############################################"
#############################################################################################################
# SOURCE
#############################################################################################################
############## SOURCE EXTRACTION
JSOURCEUID=$(ipfs cat /ipns/$JSOURCE/_tag.uid)
JSOURCERR=$(echo "$JSOURCEUID" | sed s/\ //g)
#############################################
############## GOOD or BAD ?
[[ $JSOURCERR == "" ]] && echo "NO G1Tag /ipns/$JSOURCE ... Ciao!" && exit
[[ ! -d /tmp/$JSOURCERR ]] && mkdir -p /tmp/$JSOURCERR || rm -f /tmp/$JSOURCERR/*
ipfs get --output=/tmp/${JSOURCERR}/ /ipns/$JSOURCE > /dev/null 2>&1
# echo "Retrieving SOURCE G1Tag: ipfs get --output=/tmp/${JSOURCERR}/ /ipns/$JSOURCE"
JSOURCECREATOR=$(cat /tmp/${JSOURCERR}/_ipfs.creator)
JSOURCEVALUE=$(cat /tmp/${JSOURCERR}/_tag.zen)
#############################################
############## No JDEST, then return $JSOURCEVALUE
[[ "$JDEST" == "" ]] && echo "ZenTAG ($JSOURCEUID) VALUE = $JSOURCEVALUE Zen" && exit
#############################################
#############################################
############## TEST IF $VALUE IS AVAILABLE
FINALSOURCE=$(echo "${JSOURCEVALUE} - ${VALUE}" | bc -l)
[[ $FINALSOURCE -lt 0 ]] && echo "Manque $FINALSOURCE Zen à ce ZenTAG... Ciao!" && exit
#############################################################################################################
# DEST
#############################################################################################################
############## DESTINATION EXTRACTION
JDESTUID=$(ipfs cat /ipns/$JDEST/_tag.uid)
JDESTRR=$(echo "$JDESTUID" | sed s/\ //g);
#############################################
############## GOOD or BAD ?
[[ $JDESTRR == "" ]] && echo "NO G1Tag /ipns/$JDEST ... Ciao!" && exit
[[ ! -d /tmp/$JDESTRR ]] && mkdir -p /tmp/$JDESTRR || rm -f /tmp/$JDESTRR/*
ipfs get --output=/tmp/$JDESTRR/ /ipns/$JDEST > /dev/null 2>&1
JDESTCREATOR=$(cat /tmp/${JDESTRR}/_ipfs.creator)
JDESTVALUE=$(cat /tmp/${JDESTRR}/_tag.zen);
FINALDEST=$(echo "${JDESTVALUE} + ${VALUE}" | bc -l)
######################################################################################################
# CHECK NANODATE
LAST=$(cat /tmp/${JSOURCERR}/_chain.nanodate)
timediff=$( echo "${NANODATE} - ${LAST}" | bc -l )
# NODE TIME SYNC 600 milliards de nanosecondes = 600 s = 10 mn
if [[ $timediff -lt 600000000000 ]]; then
echo "LAST OPERATION NOT FINISHED YET... RETRY IN A FEW MINUTES"
exit
fi
echo "OK. OPERATION ALLOWED...
$JSOURCERR (/ipns/$JSOURCE) : $JSOURCEVALUE => $FINALSOURCE
$JDESTRR (/ipns/$JDEST) : $JDESTVALUE => $FINALDEST"
# TODO: SEND TASK TO $JSOURCECREATOR AND $JDESTCREATOR