Comments (3)
Great find!
It seems reasonable and safer to increase the min prune target, since blocks can be larger post-segwit (and we've seen it, e.g. 774628). Some rough napkin math for a new value (correct me if something looks off):
- 4MB per block, 288 blocks = 1152MB
- Add 15% for Undo data = 1325MB
- Add 20% for Orphan block rate = 1590MB
- Add one block file + added 15% undo data = 147MB
- Target >= 1737MB, so something like 1750MB seems at first glance that it could work
I would recommend we minimize impact to existing nodes and provide time for warning/deprecation.
increase the limit in a hard way - this would be an inconvenience to lots of existing users who would need to update their bitcoin.conf to be able to start bitcoind
This seems like a no-go to me as it can impact node runtime. An alternate option is presented below
increase it in a soft way, something like disrepecting it on purpose by setting it to a higher value, but without an init error.
This seems at minimum unintuitive and at most dangerous for node operators, since nodes with limited space would believe bitcoind was being limited/constrained to a particular allocated amount of space but would be exceeding the allocated amount.
add a comment to the -prune doc that values around 550MiB are pointless.
Yes, this seems prudent.
do nothing
We should do something, as this seems like a bug given current allowed block sizes.
How about something like:
- Temporarily allow and respect values >= 550MB (e.g. for one release)
- bitcoind provides a warning message for values between 550MB and 1750MB
- Add a clear deprecation warning in the release notes
- Add note/comment for
prune
in the default bitcoin.conf and-prune
help/doc about values between 550MB and 1750MB being supported temporarily but unsupported in a future release, and that actual consumed storage may approach 1750MB even if 550MB is specified. - In a future release, the min prune target can be changed to and enforced to 1750MB
from bitcoin.
since nodes with limited space would believe bitcoind was being limited/constrained to a particular allocated amount of space but would be exceeding the allocated amount
This is already the case today, because the 288 blocks rule takes precedence over the user-provided number. With average block sizes of 1.6MiB currently, my synced prune=550
node usually takes up between 700MiB and 900MiB of space for *.blk
and *.rev
files.. The target is only respected when possible (during the earlier parts of IBD where blocks are still small). So the point would be that if we are going to disrepect the target anyway in later stages of IBD we might as well start earlier (and gain some performance benefits).
Temporarily allow and respect values >= 550MB but < 1750MB (e.g. for one release)
You probably didn't mean it that way , but there is no maximum target, everything >=550MB is respected today, and we won't want to change that.
How about something like:
Sounds reasonable to me in general.
from bitcoin.
since nodes with limited space would believe bitcoind was being limited/constrained to a particular allocated amount of space but would be exceeding the allocated amount
This is already the case today, because the 288 blocks rule takes precedence over the user-provided number. With average block sizes of 1.6MiB currently, my synced
prune=550
node usually takes up between 700MiB and 900MiB of space for*.blk
and*.rev
files.. The target is only respected when possible (during the earlier parts of IBD where blocks are still small). So the point would be that if we are going to disrepect the target anyway in later stages of IBD we might as well start earlier (and gain some performance benefits).
Maybe a good way to handle this is to include/enhance a warning (described above) to let the user know that actual consumed storage can be greater (e.g. up to 1750MB) even if 550MB is specified.
Temporarily allow and respect values >= 550MB but < 1750MB (e.g. for one release)
You probably didn't mean it that way , but there is no maximum target, everything >=550MB is respected today, and we won't want to change that.
Correct, thanks for clarifying. I should have been more accurate in describing it, and have adjusted the description above. The overall idea is that in the interim we could be allowing/forgiving of values greater than 550MB but less than 1750MB. Values < 550MB cause init failure. In the interim all values >= 550MB are allowed. At some point later, only values >= 1750MB are allowed.
How about something like:
Sounds reasonable to me in general.
from bitcoin.
Related Issues (20)
- Restore wallet taking forever to load HOT 2
- stringop-overflow warning with GCC 14 HOT 4
- Wrong block mined time in testnet HOT 1
- .
- dumpprivkey error HOT 2
- dumpprivkey error HOT 5
- .
- LevelDB error: Corruption: block checksum mismatch didn't trigger reindex. HOT 5
- bug: verify-binaries/verify.py incorrectly parses version string; gives error or downloads wrong files HOT 1
- Improve the bitcoin.conf instructions in init.md doc
- Log: "no wallet support compiled in" when i start bitcoind HOT 3
- LevelDB read failure: Corruption: block checksum mismatch HOT 13
- prune shall not delete blocks it did not download HOT 3
- "netinfo" doesn't show IPv6 "Local addresses" HOT 4
- fuzz, wallet_bdb_parser: BDB builtin encryption is not supported
- descriptor: Tapscript-specific Miniscript key serialization / parsing leads to fuzz timeouts
- Dewyboy
- Enable `importprivkey`, `addmultisigaddress` in descriptor wallets HOT 1
- Add "maxuploadtargettimeframe" to change the timeframe considered by "maxuploadtarget"
- show error "could not sign any more inputs" when sign PSBT for multisig
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bitcoin.