-
Notifications
You must be signed in to change notification settings - Fork 35.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Longer term workaround for chainstate corruption from negative versions. #2982
Conversation
This also makes negative transaction versions non-standard. This avoids an issue triggered in block 256818 where transactions with negative version numbers were incorrectly serialized into the UTXO set. On restart nodes detect the inconsistency and refuse to start so long as a block with these transactions is inside the self-consistency check window, logging "coin database inconsistencies found". The software recommends reindexing, but reindexing does not correct the problem. This should be fixed by changing the chainstate serialization, but working around it seems harmless for now because the version is not used by any network rule currently. A patch free workaround is to start with -checklevel=2 which skips the consistency checks, but the IsStandard change is important for miners in order to protect unpatched nodes.
Automatic sanity-testing: PASSED, see http://jenkins.bluematt.me/pull-tester/f8b7aa862519ab2efd1ce327d2ed4bea1325dc11 for binaries and test log. |
ACK: tested on OSX. |
ACK: works for me on Ubuntu 12.04 64 bit |
https://github.com/gmaxwell/bitcoin/commit/f8b7aa862519ab2efd1ce327d2ed4bea1325dc11 |
ACK |
1 similar comment
ACK |
I can confirm that this patch fixes the issue for me, and tests run without errors. |
ACK code changes; didn't test. |
Longer term workaround for chainstate corruption from negative versions.
This also makes negative transaction versions non-standard.
This avoids an issue triggered in block 256818 where transactions with
negative version numbers were incorrectly serialized into the UTXO set.
On restart nodes detect the inconsistency and refuse to start so long as
a block with these transactions is inside the self-consistency check
window, logging "coin database inconsistencies found". The software
recommends reindexing, but reindexing does not correct the problem.
This should be fixed by changing the chainstate serialization, but
working around it seems harmless for now because the version is not
used by any network rule currently.
A patch free workaround is to start with -checklevel=2 which skips
the consistency checks, but the IsStandard change is important for
miners in order to protect unpatched nodes.