diff --git a/RUNTIME/SECTOR.refresh.sh b/RUNTIME/SECTOR.refresh.sh index cf27a530..5cf709b5 100755 --- a/RUNTIME/SECTOR.refresh.sh +++ b/RUNTIME/SECTOR.refresh.sh @@ -70,8 +70,8 @@ for SECTOR in ${SECTORS[@]}; do G1PUB=$(${MY_PATH}/../tools/keygen -t duniter "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}") [[ ! ${G1PUB} ]] && echo "ERROR generating SECTOR WALLET" && exit 1 COINS=$($MY_PATH/../tools/COINScheck.sh ${G1PUB} | tail -n 1) - echo "SECTOR : ${SECTOR} (${COINS} G1) WALLET : ${G1PUB}" ZEN=$(echo "($COINS - 1) * 10" | bc | cut -d '.' -f 1) + echo "SECTOR : ${SECTOR} (${COINS} G1 <=> ${ZEN} Z) : ${G1PUB}" ${MY_PATH}/../tools/keygen -t ipfs -o ~/.zen/tmp/${MOATS}/${SECTOR}.priv "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}" ipfs key rm ${G1PUB} > /dev/null 2>&1 ## AVOID ERROR ON IMPORT @@ -98,11 +98,21 @@ for SECTOR in ${SECTORS[@]}; do # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #~ ## IPFS GET ONLINE YESTERDATE SECTORNS ipfs --timeout 240s get -o ~/.zen/tmp/${MOATS}/${SECTOR}/ /ipns/${YESTERDATENS}/ + if [[ $? != 0 ]]; then + echo "(╥☁╥ ) swarm memory empty (╥☁╥ )" + # Try retieve memory from UPlanet Zen Memory + [[ ${ZEN} -gt 0 ]] \ + && echo "Refreshing from ZEN MEMORY" \ + && ${MY_PATH}/../RUNTIME/ZEN.memory.sh "${SECTOR}" "${MOATS}" + fi # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end=`date +%s` echo "_____SECTOR${SECTOR} GET time was "`expr $end - $start` seconds. # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + ### ZEN + + ## CONTROL CHAIN TIME ZCHAIN=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain | rev | cut -d ':' -f 1 | rev 2>/dev/null) ZMOATS=$(cat ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats 2>/dev/null) @@ -305,21 +315,29 @@ for SECTOR in ${SECTORS[@]}; do ###################################################### CHAINING BACKUP IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) - - ## DOES CHAIN CHANGED or INIT ? [[ ${ZCHAIN} != ${IPFSPOP} || ${ZCHAIN} == "" ]] \ && echo "${MOATS}:${IPFSNODEID}:${IPFSPOP}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_chain \ && echo "${MOATS}" > ~/.zen/tmp/${MOATS}/${SECTOR}/CHAIN/_moats \ && IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${SECTOR}/* | tail -n 1) && echo "ROOT was ${ZCHAIN}" ###################################################### - - echo "% START PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}" - start=`date +%s` - ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP} - ipfs key rm ${YESTERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1 - end=`date +%s` - echo "_____SECTOR${SECTOR} PUBLISH time was "`expr $end - $start` seconds. + ## ZEN CHAINING + # Send 1 Zen to UPlanet WORLDG1PUB Wallet containing REGION TW HASH + INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}" + echo "> ${INTERCOM}" + if [[ ${ZEN} -gt 0 ]]; then + echo "---8<--- SECTOR ZEN CHAINING ---8<------8<----" + ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/sector.dunikey "${UPLANETNAME}${SECTOR}" "${UPLANETNAME}${SECTOR}" + ${MY_PATH}/../tools/PAY4SURE.sh ~/.zen/tmp/${MOATS}/sector.dunikey "0.1" "${WORLDG1PUB}" "${INTERCOM}" + rm ~/.zen/tmp/${MOATS}/sector.dunikey + fi + ############################################################## + ## PUBLISHING ${SECTOR} + ############################### + echo "% PUBLISHING ${SECTOR} ${myIPFS}/ipns/${TODATENS}" + start=`date +%s` + ipfs name publish -k ${TODATE}${G1PUB} /ipfs/${IPFSPOP} + ipfs key rm ${YESTERDATE}${G1PUB} ${G1PUB} > /dev/null 2>&1 ###################################################### @@ -340,6 +358,8 @@ for SECTOR in ${SECTORS[@]}; do ## TODO FILTER INFORMATION WITH MULTIPLE SIGNATURES (DONE in REGION.refresh.sh) ## TODO EXPORT AS RSS ## https://talk.tiddlywiki.org/t/has-anyone-generated-an-rss-feed-from-tiddlywiki/966/28 + end=`date +%s` + echo "_____SECTOR${SECTOR} TREATMENT time was "`expr $end - $start` seconds. done diff --git a/RUNTIME/ZEN.memory.sh b/RUNTIME/ZEN.memory.sh new file mode 100755 index 00000000..eb270f53 --- /dev/null +++ b/RUNTIME/ZEN.memory.sh @@ -0,0 +1,55 @@ +################################################################################ +# Author: Fred (support@qo-op.com) +# Version: 0.1 +# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) +################################################################################ +#~ ZEN.memory.sh +#~ Search for last "UPLANET:$1:..." in UPLANETG1PUB wallet history +#~ INTERCOM="UPLANET:${SECTOR}:${TODATE}:/ipfs/${IPFSPOP}" TX COMMENT are made during SECTOR.refresh.sh +#~ ~/.zen/tmp/${MOATS}/${SECTOR} <=> "/ipfs/$ipfs_pop" +################################################################################ +################################################################################ +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +. "${MY_PATH}/../tools/my.sh" +################################################################################ + +SECTOR="$1" +[[ $SECTOR == "" ]] && echo "MISSING SECTOR MEMORY ADRESS" && exit 1 +MOATS="$2" + +## CHECK FOR BAD PARAM +[[ ! -d ~/.zen/tmp/${MOATS-empty}/${SECTOR-empty}/ ]] \ + && echo "BAD ~/.zen/tmp/${MOATS}/${SECTOR}" \ + && exit 1 + +## STARTING +start=`date +%s` + +## EXTRACT WORLDG1PUB HISTORY +${MY_PATH}/timeout.sh -t 20 $MY_PATH/jaklis/jaklis.py history -n 300 -p ${WORLDG1PUB} -j \ + > ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json + +## SCAN FOR UPLANET:${SECTOR} in TX +if [[ -s ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json ]]; then + + intercom=$(jq -r '.[] | select(.comment | test("UPLANET:'"${SECTOR}"'")) | .comment' ~/.zen/tmp/${MOATS}/${WORLDG1PUB}.g1history.json) + ipfs_pop=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':/ipfs/\K[^"]+') + todate=$(echo "$intercom" | grep -oP 'UPLANET:'"${SECTOR}"':\K[^:]*') + echo "SYNC ~/.zen/tmp/${MOATS}/${SECTOR} <=> /ipfs/$ipfs_pop" + + if [[ $ipfs_pop ]]; then + echo "from $todate memory slot" + ipfs --timeout 90s get -o ~/.zen/tmp/${MOATS}/${SECTOR} /ipfs/$ipfs_pop + end=`date +%s` + echo "(${SECTOR}) ${todate} get time : "`expr $end - $start` seconds. + else + echo "WARNING cannot remember... scan for more TX ??!" + fi + +else + echo "FATAL ERROR cannot access to WORLDG1PUB history" + exit 1 +fi + +exit 0