based on the QML PR 424. For evaluation purposes only!
GUI Integration for UTXO Snapshot Loading
Overview
This PR adds initial GUI support for loading a UTXO snapshot, building on Bitcoin Core’s assumeutxo
infrastructure.
What This PR Does
- Adds a basic GUI interface for loading UTXO snapshots via the Options Dialog panel
- Provides visual confirmation of snapshot activation
- Adds a snapshot progress notification bar accessible via a handler
Implementation Details
Core Components Modified
- Node Interface (
src/node/interfaces.cpp
)
- Implements
snapshotLoad()
based on theloadtxoutset
RPC
- QT Integration (
src/qt/optionsdialog.cpp
)
- Manages snapshot loading state and progress
- makes use of a worker class to manage snapshot metadata (src/qt/snapshotmodel.cpp)
- Provides progress updates via a progress bar
Key Design Decisions
- Extensibility
- Interface designed to accommodate future
assumeutxo
changes - Error handling framework in place
Testing Instructions
- Build
- Launch Bitcoin Core GUI (bitcoin-qt)
- Navigate to Settings -> Options
- Click
Load Snapshot
button - Follow pop-up instructions
- Test with sample snapshot:
https://bitcoin-snapshots.jaonoctus.dev/ (No affiliation with the maintainer of this site. As always “Don’t trust! Verify!”)
Launch bitcoin-qt on
signet
Navigate to Settings -> Options
Click the “Load Snapshot…” button
Navigate to where your snapshot file is. The snapshot was downloaded from here
Click “Yes”
Wait for the snapshot to load and for this pop-up to appear and click “Ok”
Verify the “chain_snapshot” directory is present in your
datadir
Expected Behavior
- File selection dialog works
- Success/failure state properly displayed
- Node becomes usable while background validation continues
Notes for Reviewers
- This is a POC so all feedback is welcomed
- I am not a designer so please feel free to chime in if there’s a more elegant way to achieve this
This is a work in progress - feedback welcome on the approach and implementation details.