#!/bin/sh

trust=false
lock=/tmp/mmh

checkb() {
  bitcoin-cli echo hello | grep -q .
}

test "$1" = "-f" && {
  rmdir $lock
  shift
  until checkb; do sleep 1; done 
} || { checkb || exit 1; }
mkdir $lock || exit 1

test "$1" = "-t" && {
  trust=true
  shift
}

BN=89999115000
hp=anyone.eu.org
url=${scheme:-"https"}://$hp
out=/dev/shm/mempool.copyhere
touch $out 2>/dev/null || out=$HOME/mempool.copyhere
rm -f $out

uptime=$(bitcoin-cli uptime) || exit 1
test $uptime -gt 113 || bitcoin-cli setnetworkactive false

# 1st pass
rm -f $out
eval $trust && wget -qO - $url/mymempool.txt | sort > $out-mymgrm 
wget -O $out $url/mempool.copy.dat
bitcoin-cli importmempool $out

eval $trust && {
# 2nd pass - with prioritized transactions
bitcoin-cli getrawmempool | sed '1d;$d' | tr -d ' ",' | sort > $out-locgrm
sort < $out-mymgrm \
  | comm -2 -3 - $out-locgrm \
  | xargs -I TXID -n 1 -P 200 bitcoin-cli prioritisetransaction TXID "0.0" $BN \
    >/dev/null 2>&1
bitcoin-cli importmempool $out '{
"apply_fee_delta_priority":true,
"apply_unbroadcast_set":true}'
}

rm -f $out $out-locgrm $out-mymgrm
bitcoin-cli setnetworkactive true
date -u

# clean-up
bitcoin-cli getprioritisedtransactions \
  | grep -e '^  "' -e '"fee_delta":' \
  | tr -d '  {,' | paste -d" " - - \
  | sed 's/"fee_delta":/"0.0" +/' \
  | sed 's/+-//' | tr '+' '-' | tr -d : \
  | xargs -n 3 -P 20 bitcoin-cli prioritisetransaction \
    >/dev/null 2>&1

date -u
rmdir $lock