1

There have been claims recently of Bitcoin Core not validating the signatures in a block by default. If this is true, can Bitcoin Core even claim to be a full node?

  • bitcoin.stackexchange.com/questions/1797/what-are-checkpoints Blocks before the last checkpoint are optionally not validated. – MCCCS Aug 26 at 10:35
  • 1
    @MCCCS The accepted answer there is actually wrong these days. Checkpoints don't exist anymore. – Jannes Aug 26 at 12:19
  • 1
    @Jannes They still exist, but no new ones have been added since 2014. – Pieter Wuille Aug 26 at 23:41
  • @PieterWuille That makes sense. I stand corrected. I guess they're still there because they're part of the consensus now? I assume they're not the main deciding factor (on whether to do signature validation or not) anymore with the default assumevalid and assumevalid=0 ? Thank you. – Jannes Aug 27 at 7:44
6

Bitcoin Core does validate all signatures after a certain point, and can be configured to validate all signatures in history if so desired.

The assumevalid feature only disables signature validation for blocks prior to a specific configured block which is updated for each version. This block is typically several (tens of) thousand blocks deep by the time the release is actually made. Any block which is an ancestor of that particular block (and that block is in the main chain) will not have the signatures checked. All blocks that come after it will have their signatures checked. This means that once your node is synced, all new blocks will have the signatures checked.

Furthermore, this assumevalid is not a checkpoint nor does it operate on block heights. If, for some reason, there was a reorg which removed the assumevalid block from the main chain, then all signatures in the blockchain would be validated. It is merely an optimization and does not affect the security of your node.

can Bitcoin core even claim to be a full node?

Yes, there is more to being a full node than validating signatures. There is more to validation than just signatures. Bitcoin Core still checks the PoW, that the outputs being spent existed, etc.

| improve this answer | |
  • How were things working before "assumevalid" was introduced in 2017: github.com/bitcoin/bitcoin/pull/9484 ? I guess skipping of signature validation was still happening so did this exist from starting? – Prayank Aug 26 at 16:45
  • 2
    Prior to assumevalid, signature checks were only skipped for ancestors of the checkpoint blocks. Between the time that the last checkpoint was added, and assumevalid was added, those blocks after the checkpoint would always have their signatures validated. – Andrew Chow Aug 26 at 17:19

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.