With a pruned wallet possible in master I believe we should expose the option in the GUI.
The Main tab in preferences will offer a chance to toggle the node type and size.
The prune size UI should not permit sizes less than 550.
With a pruned wallet possible in master I believe we should expose the option in the GUI.
The Main tab in preferences will offer a chance to toggle the node type and size.
The prune size UI should not permit sizes less than 550.
There are a couple of considerations to take into account here:
While there are certainly differing opinions on this, I personally believe that the pruning feature at this stage is still somewhat experimental and has side effects that only people who are paying close attention will be aware of. With time, some of these side effects will go away or be minimized, but if there’s going to be a GUI element, I think it makes sense to call this out and direct the user to the release notes. If someone turns it on and it results in an unexpected multi-hour sync being required, that’s pretty bad UX.
Honestly, I’d err on the side of requiring the user to manually supply the option in the config file as I believe users that are willing to do this are more likely to have read the release notes and fully understand the ramifications of turning it on.
What would be involved in making it less-irreversible?
Is it possible to use SPV to obtain a verified history of an item in the UTXO set?
only re-download the pruned blocks rather than the whole blockchain?
In the case of data loss of the UTXO set and pruned nodes, I would imagine if you kept a hash (or set of hashes) of those data sets you could request just the data you need to replace from other nodes in the network and could verify that they hash to the same values you have. In order for this to survive a HD failure they’d need to be stored on a different disk tho.
Concept ACK. I just had to tell someone today that running a full node is easy, except if you don’t have 150 GB then you need to do this prune thing… This issue is a bit more urgent then when it was opened.
Even better would be for QT to propose a reasonable size at launch if it’s obvious the chain won’t fit on disk, but that could be a followup.
Agree with @ajweiss comments (1 & 2). I don’t think (3) is a problem for most users with only one wallet, but the UI could warn about potential downsides of pruning in an “are you sure” dialog and a tooltip. Also agree with @luke-jr that it should be made clear this is hard to reverse. The lack of contribution to the network situation has improved a bit since.
Related: #12404 or something like it should make IBD faster for pruned nodes.
What would be involved in making it less-irreversible?
Is it possible to use SPV to obtain a verified history of an item in the UTXO set?
It just requires a new blockchain download. Making that suck less seems of out of scope for this issue.
prune
must be persisted such that bitcoind
also uses it. But it seems easier to just append it to bitcoin.conf
. Two config files adds code complexity and isn’t a great user experience. If any potentially problematic other settings are found in that file, QT could prompt the user to manually set prune=
.
bitcoin.conf
itself.
prune
then QT could simply refuse to modify any existing (non-empty) bitcoin.conf
. We can get more bold after that.
bitcoin_rw.conf
works fine.
Another approach could be to change the meaning of a missing prune=
setting. Currently that’s interpreted as prune=0
which will throw an error if the block database is actually pruned. What if instead we interpreted a missing setting as prune=1
if blocks are pruned, prune=0
if not pruned?
In that case, if a user enables pruning in QT and then runs bitcoind
their chain would keep growing until either the next time they launch QT or until they explicitly set prune
in bitcoin.conf
.
This would allow us to kick the shared configuration file issue down the road (though I’d prefer to solve that).