Skip to content

Instantly share code, notes, and snippets.

@mutatrum
Last active June 12, 2021 16:44
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save mutatrum/264cfa84af5fc3dc0b107bcb3ba10893 to your computer and use it in GitHub Desktop.
Save mutatrum/264cfa84af5fc3dc0b107bcb3ba10893 to your computer and use it in GitHub Desktop.
Print a taproot signalling block diagram
#!/bin/bash
BLOCKCHAININFO=$(bitcoin-cli getblockchaininfo)
BLOCKS=$(echo "$BLOCKCHAININFO" | jq .blocks)
TAPROOT=$(echo "$BLOCKCHAININFO" | jq .softforks.taproot.bip9)
SINCE=$(echo "$TAPROOT" | jq .since)
PERIOD=$(echo "$TAPROOT" | jq .statistics.period)
BLOCKS=$(echo "$BLOCKCHAININFO" | jq .blocks)
PERIOD_COUNT=$(((BLOCKS - SINCE) / PERIOD))
SINCE=$((SINCE + (PERIOD * PERIOD_COUNT)))
ELAPSED=$(echo "$TAPROOT" | jq .statistics.elapsed)
for BLOCK in $(seq "$SINCE" $((SINCE + ELAPSED - 1))); do
HASH=$(bitcoin-cli getblockhash "$BLOCK")
HEADER=$(bitcoin-cli getblockheader "$HASH")
VERSION=$(echo "$HEADER" | jq .version)
SIGNAL=$(((VERSION & 3758096388) == 536870916))
case $SIGNAL in
(1) echo -n "🟩";;
(0) echo -n "🟥";;
esac
if ((($BLOCK + 1) % 48 == 0)); then echo; fi
done
echo
PERCENTAGE=`echo $BLOCKCHAININFO | jq '.softforks.taproot.bip9.statistics | .count / .elapsed * 100'`
echo $PERCENTAGE
@mutatrum
Copy link
Author

Infinite version

#!/bin/bash
BLOCKCHAININFO=$(bitcoin-cli getblockchaininfo)
BLOCKS=$(echo "$BLOCKCHAININFO" | jq .blocks)
TAPROOT=$(echo "$BLOCKCHAININFO" | jq .softforks.taproot.bip9)
SINCE=$(echo "$TAPROOT" | jq .since)
PERIOD=$(echo "$TAPROOT" | jq .statistics.period)
BLOCKS=$(echo "$BLOCKCHAININFO" | jq .blocks)
PERIOD_COUNT=$(((BLOCKS - SINCE) / PERIOD))
START=$((SINCE + (PERIOD * PERIOD_COUNT)))
ELAPSED=$(echo "$TAPROOT" | jq .statistics.elapsed)
COUNT=0
for BLOCK in $(seq "$SINCE" $((START + ELAPSED - 1))); do
  HASH=$(bitcoin-cli getblockhash "$BLOCK")
  HEADER=$(bitcoin-cli getblockheader "$HASH")
  VERSION=$(echo "$HEADER" | jq .version)
  SIGNAL=$(((VERSION & 3758096388) == 536870916))
  case $SIGNAL in
    (1) echo -n "🟧"
        ((COUNT++))
    ;;
    (0) echo -n "🟦"
    ;;
  esac
  if (( ($BLOCK + 1) % 56 == 0 )); then echo "   "; COUNT=0; fi
done
echo " $COUNT"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment