How does the EOS contract system handle data which varies? This could be from using a true random number, or receiving real-world data like a token price. Every time the contract executes, different values might be obtained, so I can see problems in consistent validation.
If you need information in your contract that changes over time, such as real-world pricing information, you should have an action on your contract that allows you to inject the information as part of a specific transaction. Then, any subsequent actions called on the smart contract will use the injected information. When the external information changes, a new transaction can be created to inject this new information.
This concept is generally called an oracle.