Ethereum relies on Oracles to provide information about the outside world used by SmartContracts. Also, when a node syncs (in slow mode) it has to go over all transactions (including SmartContract transactions) to validate the entire transaction history. Well, what if by the time a new node is syncing, the oracle is no longer available?
2 Answers
I think the important thing to understand is a contract can't consult an oracle for the exact reason the OP describes in the question. Oracles sign transactions with input for contracts, so the fact of that input is part of the chain regardless of the future availability and consistency of the Oracle.
A callback-like pattern can make it seem like the contract calls an Oracle.
Roughly:
Step 1: The Client (contract) sends a request to the Oracle contract.
Step 2: The Oracle's off-chain components observe the request, e.g. watching events.
Step 3: The Oracle's off-chain components sign a transaction to the Client's callback.
Step 4: The Client (contract) has the Oracle's input and can continue with the next step of its process.
In such a sequence, both the sender's transaction that kicked off Step 1 and the Oracle's response, Step 4, are immutable transactions that other nodes will use to compute the Client contract's state. It's not important that the Oracle remains available. What it said, once, is recorded and that's what the Client acted on.
Hope it helps.
The blockchain is isolated from any external interaction and you have all data required to validate blocks and transactions at any time.
Some transactions may include statements from an oracle but they are at a higher abstraction level so regular network client cannot validate them.
An oracle protocol has to provide ways to validate such statements. A typical solution is to provide a voting period if a majority is reached the statement is confirmed. All votes are recorded in the blockchain and you can validate them.