“As powerful as smart contracts could be, they aren’t quite ready to replace every trust system we have in place already. As described in the examples above, a complicated transaction utilizing smart contracts would likely require multiple smart contracts linked together to cover all of the potential ‘if’ situations that would crop up as part of the transaction.
There’s also the “Oracle Problem,” to consider, whereby smart contracts themselves cannot interact directly with the real world. If smart contracts are involved in transactions involving real-world actions, such as professional to client services, they need an entity (an “oracle”) to tell them that that event has taken place.
That’s a real security risk. If you rely on a single oracle for a smart contract, then you have effectively eliminated the decentralizing benefit of a smart contract entirely and created a single point of failure. A decentralized oracle network makes it hard to trust anyone within that network.
Alongside the yet-to-be-fixed Oracle Problem, there also exists the security problem faced by smart contracts. Like any programmed code, smart contracts can have vulnerabilities, and that becomes even more likely as complexity increases. Following a recent research effort into Ethereum smart contracts, one company found tens of thousands of bugged contracts that could allow for the theft of tokens with ease. There is even debate as to whether such contract exploitation is illegal, since the flaws are built into the contracts themselves.”