> I meant C pointer and by "more robust" any kind of memory / CPU DoS arising due to memory management (e.g. hypothetical rule checking the 64 bytes size for all block transactions).

Ok, thanks for clarifying. I'm still not making the connection to "checking a non-null [C] pointer" but that's prob on me.

> In my understanding, the validation logic equivalent of core's CheckBlock is libbitcoin's block::check():
https://github.com/libbitcoin/libbitcoin-system/blob/master/src/chain/block.cpp#L751

Yes, a rough correlation but not necessarily equivalence. Note that block.check has context free and contextual overrides.

The 'bypass' parameter indicates a block under checkpoint or milestone ("assume valid"). In this case we must check Merkle root, witness commitment, and both types of malleation - as the purpose is to establish identity. Absent 'bypass' the typical checks are performed, and therefore a malleation check is not required here. The "type64" malleation is subsumed by the is_first_non_coinbase check and the "type32" malleation is subsumed by the is_internal_double_spend check.

I have some other thoughts on this that I'll post separately.

Best,
Eric

--
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bitcoindev/607a2233-ac12-4a80-ae4a-08341b3549b3n%40googlegroups.com.