Find historical bitcoin block number with unix timestamp

Script to find historical block number from timestamp.

I have searched the web for “Find bitcoin block number from historical date” maybe 100 times in my life.

Never again.

You’ll need a bitcoin node for this to work. The script is fast.

Install

WoT Install

one liner

# curl
curl -o fjb.sh https://gist.githubusercontent.com/dskvr/18252c16cf85c06c1ee6cb5ae04a3197/raw/34bad6a35d98501978c8cd0c25b1628db1191cfe/fjb.sh && chmod +x fjb.sh

#wget
wget -O fjb.sh https://gist.githubusercontent.com/dskvr/18252c16cf85c06c1ee6cb5ae04a3197/raw/34bad6a35d98501978c8cd0c25b1628db1191cfe/fjb.sh && chmod +x fjb.sh

Trust no one.

create file

vi fjb.sh
#or
nano fjb.sh

review, copy and past into file

TIMESTAMP=$1
LOWER=0
UPPER=$(bitcoin-cli getblockcount)

while (( LOWER <= UPPER )); do
    MID=$(( (LOWER + UPPER) / 2 ))
    BLOCKHASH=$(bitcoin-cli getblockhash $MID)
    BLOCKTIME=$(bitcoin-cli getblockheader $BLOCKHASH | jq .time)

    if (( BLOCKTIME < TIMESTAMP )); then
        LOWER=$(( MID + 1 ))
    elif (( BLOCKTIME > TIMESTAMP )); then
        UPPER=$(( MID - 1 ))
    else
        echo "$BLOCKTIME"
        exit 0
    fi
done

echo "$UPPER"

give executable permissions

chmod +x ./fjb.sh

Usage

./fjb.sh <timestampSeconds> 

It returns block number only

Example

$: ./fjb.sh 1668779310
763719

No comments yet.