I'm build a DApp where the end-user should be able to attach a proof (could be information, data, attachment, whatever). Now, if the DApp accepts this proof as being legit off-chain, then I want the end-user to be rewarded on-chain with a certain amount of tokens by the dApp. How can I establish this 'trusted' communication between the two 'realms'? Do I need an oracle for this? any input is appreciated!
I agree with Lauri. In most cases if there is any sort of centralization in the design, then this sort of thing can be approached as an access control concern and an Oracle. A privileged server writes to the contract. The trust aspect would come from off-chain processes.
This isn't always satisfactory if decentralization is the goal.
proof as being legit off-chain
There are multiple off-chain solutions that roll up proofs of off-chain claims. For example, payment channels.
There are zero-knowledge proofs and even frameworks to make implementation a little more approachable. For example, Zocrates. https://github.com/Zokrates/ZoKrates
I came up with a simple(ish) selective disclosure technique that might apply to your use-case. I can't be sure because these things really depend on the application, the organization of the data, what needs to be disclosed and the degree of information leaks you can safely tolerate.
In any case, it might give you some ideas about possible approaches without deep diving into zero-knowledge proofs.
Hope it helps.
If you are building a dapp you have a backend of some sorts. So you can simply use the same backend to issue the required transaction to the blockchain.
There is no way for your smart contract to detect any changes off-chain without a transaction so you will always need someone to send it a transaction - be it your backend system or an oracle but I don't see how oracles would help in this case.