#!/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='\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