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.– MCCCSAug 26, 2020 at 10:35
1@MCCCS The accepted answer there is actually wrong these days. Checkpoints don't exist anymore.– JannesAug 26, 2020 at 12:19
1@Jannes They still exist, but no new ones have been added since 2014.– Pieter WuilleAug 26, 2020 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.– JannesAug 27, 2020 at 7:44
Bitcoin Core does validate all signatures after a certain point, and can be configured to validate all signatures in history if so desired.
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.
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.
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?– user103136Aug 26, 2020 at 16:45
2Prior 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, 2020 at 17:19