1

I seem to have discovered corrupt blocks on one of my nodes. The node is on all the time to keep up to sync and the rest of my nodes connect to it to retrieve block data when they need to sync. The node that's on all the time seems to be running fine, but when syncing my other nodes using data served from it, they report these five repeating errors after a certain block height:

2020-02-16T05:08:34Z ERROR: AcceptBlock: bad-witness-merkle-match, ContextualCheckBlock : witness merkle commitment mismatch (code 16)
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-witness-merkle-match, ContextualCheckBlock : witness merkle commitment mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))
2020-02-16T05:08:34Z ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-txnmrklroot, hashMerkleRoot mismatch (code 16))

I suppose this means the data being served from the head node is corrupt. My question: Is there a way to redownload and reindex from a specific block height instead of reindexing the whole thing? Would reindex even fix this problem? It seems like the block data is what's wrong, but the node doesn't know it.

2

A reindex will not redownload the block. However, after safely shutting down Bitcoin Core, you can delete the block file containing that block. When you start it again, you will need to reindex, but once it gets to the blocks that you deleted, it will redownload them.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.