Couldn't we just define an AssumeValid block each N blocks, instead of adding it manually?

What is the difference from just periodically picking sufficiently confirmed blocks? Anyway those blocks have been verified by the whole network

1 Answer 1


If your suggestion is to automatically treat any block that has N blocks on top of it as assume-valid, that would be a very fundamental change in the trust model.

Right now, blocks don't become assume-valid unless they're actually valid. It's assessed by the contributors, reviewers, and maintainers of the Bitcoin Core software (assuming that's the assume-valid you're talking about), but you're already trusting that group collectively to provide you with software that correctly implements the Bitcoin protocol any time you update. It's also auditable (and audited) by anyone who wants, by running the software with assumevalid disabled and verifying history.

If instead your local node would automatically treat any block with a sufficient number of blocks on top (without actually validating it) as assume-valid, it would imply that a cabal of dishonest miners could make you accept invalid blocks. Note that while an honest majority of miners is part of Bitcoin's assumptions, this is only the case for consensus, not validity. There is no way today that even 99% of miners today could make your full node accept a block that contains a transaction which steals your coins without valid signature. In a world where sufficiently-buried blocks are considered assume-valid this does become theoretically possible.

  • I think you mean that "most worked chain" and "most worked valid chain" are completely different. However wouldn't it be practically irrelevant? If we set the assume-valid block deep enough it's hard to see how these blocks aren't valid. Commented Jan 9, 2023 at 21:14
  • 2
    Right, that is my point. And of course, in practice it's hard to see how a very deeply buried block could be invalid. But the reason why we can make that assumption that is exactly because full nodes don't ever accept invalid blocks (making it wasted effort to make invalid blocks). If you're suggesting in some cases not doing that validation anymore, we need to re-evaluate whether this isn't introducing an incentive for miners to try to build a very long secret chain with invalid spends? Full nodes are full nodes, and I don't think Bitcoin Core is likely to accept deviating from that. Commented Jan 9, 2023 at 21:25
  • I understand much better the difference now, thanks! Commented Jan 9, 2023 at 21:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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