2

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?

4
  • bitcoin.stackexchange.com/questions/1797/what-are-checkpoints Blocks before the last checkpoint are optionally not validated.
    – MCCCS
    Aug 26 '20 at 10:35
  • 1
    @MCCCS The accepted answer there is actually wrong these days. Checkpoints don't exist anymore.
    – Jannes
    Aug 26 '20 at 12:19
  • 1
    @Jannes They still exist, but no new ones have been added since 2014. Aug 26 '20 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 '20 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.

2
  • 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 '20 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 '20 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.