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
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
|
|
|