Los sigops en un scriptPubKey que se gasta no se consideran al calcular el coste total de sigops de un bloque, ya fueron contados previamente cuando entraron al UTXO set, antes de ser ejecutados. El problema es que, al no ser computados al momento de gastar, un atacante puede reunir miles de inputs (con scriptPubKey ya computado en bloques anteriores) en una sola transacción que ejecuta muchos más sigops de los que el bloque declara.
CheckSigopsBIP54 cuenta los sigops presentes en los scripts que la validación ejecuta. Si el total supera los 2500, la transacción se invalida.