However, if one were to analyse the transaction fees of a given block... and possibly the "Received Time" of a transaction (such as displayed by blockchain.com)... it might be possible to identify CPFP transactions.
Basically, you'd be looking for the following conditions:
- 2 transactions in the same block (Transaction A and Transaction B)
- Transaction B spends UTXO created by Transaction A
- Transaction A has a "low" fee relative to current fees being paid by other transactions in the block
- Transaction B has a "high" fee relative to current fees being paid by other transactions in the block
Less conclusive indicator would also be looking for Transaction A to have been received several "blocks" before Transaction B... as theoretically someone attempting to do this on purpose could broadcast Trans A and then immediately broadcast Trans B.