Project Name: Oracula - The Oracle for Everything
Project Track: Web3
Team Name: Team Oracula
Team Member(s): 3, @laplacesdemon (adding others soon when they join the forum)
DevPost URL: Oracula - The Oracle for Everything | Devpost
Project Website: http://www.oracula.xyz/
Deliver a oracle that can answer any binary question you can think of, with the help of game theory. Oracles like ChainLink and WinkLink are great at providing financial data, such as the price of BTC at a given time. However, they are not good at providing answers to questions such as “Did England win the Fifa World Cup 2022?”. We wanted to create something that can any answer any binary question (which in theory means every question, not just binary).
This is why we created Oracula, an optimistic oracle. With a functioning optimistic oracle, tons of applications can be built on top of it such as prediction markets, insurance products and lending markets.
The Oracula oracle allows anyone to ask any binary question, and to get it answered on-chain in a reliable way. This is achieved by utilizing the game theoretic concept “Schelling points”, together with the power of a distributed token.
Project Video: Oracula - The Oracle for Everything - YouTube
Project Github GitHub - laplacesdemon420/oracula
Project Test Instructions:
Get vote tokens:
- Go to oracula.xyz/faucet
Asking a question:
- Go to oracula.xyz/questions and ask a question.
Proposing an answer:
Go to the website and take an existing question, see if it’s at it’s resolution date.
Propose an answer to the question.
Disputing an answer:
Go to the website, see if there exists a proposal to a question with the wrong answer.
Initiate a dispute to the proposal.
Go the website and see if there are any active disputes.
If the vote is in the commit-phase, commit your answer.
Wait until the reveal-phase starts, and then reveal your answer.
Oracula is what’s called an optimistic oracle. The optimistic part comes from the fact that when an answer is proposed to the blockchain, it is ASSUMED to be true UNLESS it’s disputed.
Every question start with these 2 steps
Question is asked (anyone can ask anything)
Answer is proposed (anyone can propose but you need to post a bond of 10 tokens)
Now if the answer is correct, then you do nothing and wait until it finalizes (24 hours). BUT, if you believe that the answer is wrong, you open a dispute. If you open a dispute, you also need to post a bond of 10 tokens. If you are right you’ll get them back, otherwise you’ll lose them.
If an answer is disputed, then the question goes to “the court” where token holders vote. When the token holders vote, Oracula uses a “commit-reveal scheme”. It means that you first commit your vote on chain, and later reveal it. When the vote is commited, no one else can see what you voted on. Later in the reveal-phase, you reveal your vote and then everyone can see it.
When the voting period is finished, the smart contract counts the votes and finalizes an answer. If the proposer was correct from the start, he will receive the 10 tokens from his bond back PLUS the 10 tokens from the disputer. If the disputer was proven to be correct, the opposite will happen.
You don’t need to understand the cryptography behind commit-reveal schemes to use Oracula but if you can read more about commit-reveal schemes here Exploring Commit-Reveal Schemes on Ethereum | by Kaden Zipfel | The Startup | Medium.
The image below shows the question flow in detail:
And this is an illustration of how a commit-reveal scheme works:
Develop the UI
Make it possible for users to choose between public and private vote
BTTC Donau Testnet: