Skip to content

Commit

Permalink
contrib: add script dump_to_sqlite.sh for direct SQLite3 UTXO dump
Browse files Browse the repository at this point in the history
  • Loading branch information
theStack committed Dec 24, 2024
1 parent 1f15b6e commit 7b39be0
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
4 changes: 4 additions & 0 deletions contrib/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,7 @@ to a SQLite3 database. The coins are stored in a table with the following schema
```
CREATE TABLE utxos(txid TEXT, vout INT, value INT, coinbase INT, height INT, scriptpubkey TEXT)
```

### [Dump-to-SQLite](/contrib/utxo-tools/dump_to_sqlite.sh) ###
This script creates an UTXO set dump in SQLite3 format on the fly from a running bitcoind instance,
i.e. with the intermediate step of storing the compact-serialized UTXO set on disk is skipped.
26 changes: 26 additions & 0 deletions contrib/utxo-tools/dump_to_sqlite.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
set -e
if [ $# -ne 2 ]; then
echo "Usage: $0 <bitcoin-cli-path> <output-file>"
exit 1
fi

BITCOIN_CLI=$1
OUTPUT_FILE=$2
UTXO_TO_SQLITE=`dirname $0`/utxo_to_sqlite.py

# create named pipe in unique temporary folder
TEMPPATH=$(mktemp -d)
FIFOPATH=$TEMPPATH/utxos.fifo
mkfifo $FIFOPATH

# start dumping UTXO set to the pipe in background
$BITCOIN_CLI dumptxoutset $FIFOPATH latest &
BITCOIN_CLI_PID=$!

# start UTXO to SQLite conversion tool, reading from pipe
$UTXO_TO_SQLITE $FIFOPATH $OUTPUT_FILE

# wait and cleanup
wait $BITCOIN_CLI_PID
rm -r $TEMPPATH

0 comments on commit 7b39be0

Please sign in to comment.