Thanks for all the answers/explanation.
Any idea regarding last sentence/question from first post?
The sender is in full control of the transaction. They get to see everything about the transaction before they ever transmit it. They can
always look at a transaction and decide not to send it if the thing you are using to determine a "win" doesn't exist in the transaction.
Instead, you could have some secret piece of information that you don't tell anybody. When you receive the transaction, you could combine it with the secret information. Then you can see if the combination of the secret information and something from the transaction result in a "win". This is sometimes handled by generating a hash of the combined TXID and SECRET, and checking to see if the resulting value is less than some target value. The lower the target value, the more difficult the odds of being successful. This allows you to adjust the odds of "winning" by adjusting the target value. After a while, such as the end of the contest, or end of the hour, day, or week, you could reveal the SECRET so that everybody could check and see for them selves that you aren't lying and they actually did "win" or "lose".
The problem with this solution is that, since the secret value isn't known to anybody else, you could generate multiple secret values and check the result of each one until you find a combination that gives you results that you like. Then you could use that secret. To prove that you haven't cheated in this way, you can generate a hash of the SECRET and release the hash at the beginning of the contest (before the transactions are sent). Then when you later release the actual secret, everyone can calculate the hash of it to verify that it matches the hash that you released before the contest.