As gas cost can only be estimated until the transaction is executed against the actual contract state at the time of execution on the blockchain, what happens if transaction runs out of gas before the transaction is completed?
Presumably the contract rolls back as if the transaction never happened.
If this is the case, then what prevents malicious users from spamming Ethereum nodes with complex transactions that do not carry sufficient funds?