Instead, a smart contract is like an “if-then” statement in computer programming. You program the computer that if it observes a certain event occurring, then the computer does something specified in the program.
Once you view a smart contract as an if-then statement, you can see many limitations on what computers can do with them. Computers can’t detect many “if” events or carry out many “then” tasks.
First, consider the “if” part. There are some things a computer can’t know. Many possible “if” occurrences won’t happen on the blockchain, so information would be needed from the outside world.
In theory, a smart contract might be programmed to look on the internet at a specific place for information to ascertain whether the “if” requirement has occurred.
For example, imagine a concert promoter taking out an insurance policy against it raining at the beginning of an outdoor concert because rain would depress ticket sales. In theory, a smart contract could be programmed to look at the website of the National Weather Service to see if it rained in a specific place at a specific time.
Would that work? For insurance, it probably would matter whether it rained long and hard enough, and a computer might not be able to discern that.
In addition, a computer can’t judge whether certain types of “if” events occur. For example, sometimes in a contract a party is obliged to use “best efforts” to get something done. The party need not accomplish the goal, but it has to try hard.