I was reading since every node has to execute a smart contract and receive the same result, Ethereum smart contracts can't go out to the Internet to verify data. So how do these sites that bet on sports game outcomes deal with this (e.g. https://cryptosportz.com/ )? Or maybe not even betting but weather or other facts that are available online, but would be hard to figure out without online access?
They're using Oracles: external services that are authorized to modify some data (like the result of a football game) in the smart contract.
Update, based on the comment on this post:
I added the above short definition of what an Oracle does, in case the linked article disappears (although, a search for ethereum oracles should yield other interesting results). But I wouldn't duplicate other people's blog posts in the answer either.
Yes, anybody can build an oracle. Oracles are basically doing 2 things:
- scraping data off a site
- writing that data into a smart contract.
The smart contract expects that data to be recorded at one moment in time and when it is, it executes some code (like settling the bet).