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 66f1a0e
Show file tree
Hide file tree
Showing 2 changed files with 36 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.
32 changes: 32 additions & 0 deletions contrib/utxo-tools/dump_to_sqlite.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
# Copyright (c) 2024 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

export LC_ALL=C
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 66f1a0e

Please sign in to comment.