I see that the validateTx function in txpool.go in geth prohibits a transaction from entering the pool if it does not have enough eth to cover gas costs + the value it attempts to send. But is this the same as consensus rules? Is it specified that such a transaction cannot go into a block? Will all validators enforce this? Or can a rogue validator override this requirement, attempt to send the tx, and it result in the transaction failing?
The specific usecase is a publicly posted signed transaction that we only want to trigger if the account has the specified amount of funds, making it impossible to broadcast it unless you deposit enough eth into the address to do so.
Edit: In all the execution clients I have found that they prevent such transactions from entering the mempool. I also see that the spec here: https://github.com/ethereum/execution-specs/blob/master/src/ethereum/paris/spec.py marks blocks with such transactions as invalid. But I can't find where in the execution client or the consensus client that check actually happens. Am I looking in the wrong place? Where do the clients check that none of the blocks they receive include transactions that have "gas fee + eth" > "balance"