• Gregory Maxwell's avatar
    Longer term workaround for chainstate corruption from negative versions. · 4035c909
    Gregory Maxwell authored
    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.
    4035c909
main.cpp 148 KB