This to me is one of the fundamental problems (or challenges) of smart contracts - they remove humans and human judgment from the core, but they just push it to the edges.
You still end up trusting a human - an "oracle". You trust the weather feed, or you trust some exchange to give you the accurate price of some other asset. If that oracle is mistaken (bug, intentional misinformation), the smart contract can be manipulated.
This is a significant challenge for sure, at least with Ethereum there's no way around needing an external account (centralization) to feed data into the blockchain.
However, I know of at least 1 promising project on Ethereum (Augur) that provides decentralized oracles, and you can trust these oracles due to some clever game theorish mechanics.
The gist is randomized Reporters submit real-world information to the blockchain and earn a fee for their service. Reporters purchased a cryptoasset to have this priviledge, and if a certain Reporter submits information in conflict with a majority of other reporters (e.g. they lied) then they lose a portion of their cryptoasset giving them incentive to play by the rules and get paid for it.
And even further, if majority of Reporters report dishonestly then people will not use the Oracle service, the Reporters will not be able to earn fees, and the cryptoassets they purchased to allow to be reporters become worthless.
> Reporters purchased a cryptoasset to have this priviledge, and if a certain Reporter submits information in conflict with a majority of other reporters (e.g. they lied) then they lose a portion of their cryptoasset giving them incentive to play by the rules and get paid for it.
To be precise: it gives them incentive to submit the same information as majority of other Reporters. This is a huge difference.
This seems to be a massive flaw in the gambling markets that they propose. For example, let's say Augur (or any number of competitors) host a market on a football match, where team A are supremely better than team B. The odds on A will be extremely short, and there will be far far more people backing team A than team B.
Now, imagine that team B somehow win the match. How can the system prevent the overwhelming majority of team A backers from submitting a fake result claiming that their team won? They will vastly outnumber the people backing team B, and also outnumber any of the casual observers who might also contribute to the results. So the market will get settled as if team A won, thanks to the 'wisdom of the crowd'. The minority backers will be robbed.
Indeed, not only do you have a problem with corrupt backers of a particular view, you have a problem with systematic slipshodness. A whole raft of reporters would have an incentive to report "what you would expect" for any given outcome since that actually is what happens most of the time. So even if reporters can be separated from outcome bettors somehow, outcome bettors wind-up with an incentive to be on "what people expect will happen".
In a lot of ways, it seems like you could create something like a theory that it impossible to create a system that distinguishes "real world input" from "noise that I get from outside" without that system having a model of said real world.
For Augur, how it works is reporters are randomly handed events to report on. Meaning you can't buy REP and then choose to report on a specific event in order to further your financial interest.
Further even if you did that and by random chance are selected to report on your sporting event, you have to hope that majority of other reporters who were also chosen do the same thing you do (keeping in mind you don't know who they are), so if you still choose to report a lie you further risk losing a portion of the REP that you previously bought.
The only practical way to game the system is to have a majority of all REP holders collude and they would in truth control the outcome of all events. However it would be a waste of their money to do so, because the value of REP is derived from trading fees, and their trading fees would be non-existent because no one would use Augur if the reporting wasn't reliable, so the value of their REP holdings would plummet.
It's just like a 51% attack on Bitcoin, it's physically possible but you're financially incentivized against it.
That is the more precise definition, and there is reason to believe the majority will be honest as reporting events are randomly distributed, and you can't possibly know who's reporting what until the reporting results are all submitted.
You still end up trusting a human - an "oracle". You trust the weather feed, or you trust some exchange to give you the accurate price of some other asset. If that oracle is mistaken (bug, intentional misinformation), the smart contract can be manipulated.