The problem FutureCast solves
Most of the prediction market platforms use trading mechanisms for trading outcomes. This limits user participation as only experienced and tech savvy people can participate on such platforms. We created a platform which is aimed to include everyone and give the best user experience possible π€ . Also, our platform rewards users who participate early as we believe they deserve more than the users who participate later.
People can participate on our platform in 3 ways:
- By creating a market - Market makers
- By staking on an outcome - Stakers/Voters
- By reporting on an outcome - Reporters/Validators
A market proceeds through 4 phases, these phases are explained as follows:
- Betting Phase
As the name suggests, people bet or stake on an outcome that they believe is true or most likely to occur. To facilitate change in opinion as time goes on due to changing circumstances, a participant who has already staked in this phase on a particular outcome can change his/her outcome.
- Inactive Phase
In this phase all functions are disabled in a market. This phase occurs during the event time. For example, if a market for a particular football match exists the inactive phase represents the duration of the match.
- Reporting Phase
In this phase, people again stake on the right outcome after an event represented by a market concludes. There arenβt any fees associated in this phase, hence this is a phase which can give maximum profit to the participants.
- Resolved Phase
When the reporting phase ends with a clear outcome, a market is said to be resolved. All funds locked in a market are available to be redeemed. The payouts of all the participants are determined by the payout formula (mentioned in doc)
PS. A detailed explanation of the project comprising of mathematics with relevant pictures is given in this doc here. One can refer to it for a comprehensive study and we strongly suggest to do the same.
Challenges we ran into
The ideation process:
After coming up with a decentralized prediction market, we studied the existing implementations and how they handle various of their problems. There were two main problems that we faced:
- The first of them was how to reach the correct answer to a particular question. We read that some decentralized markets have a centralized entity that is involved. As we focused on true decentralization, we decided to ask from our network and add a reporting phase in the timeline.
- The second major hurdle was deciding on an algorithm for distributing the rewards. We explored several formulas that Augur and other markets use to reward users. After spending so much time on it, we came up with a simple scheme. We added a platform fee that increases with time(more details in this document) and encourages users to participate early.
Integrating Decentology:
As we started the hackathon, we instantly tried to build something and test it. But we ran into several issues while using the Decentology's Dappstarter application itself, so we quickly switched to a basic hardhat setup and started our dev process.
Time-based testing:
There are certain functionalities in our project that can only be tested when the significant time has elapsed. As we were using ganache-CLI, we found necessary articles on medium to elapsed time. It took us some time to make a function that can elapse time for us.
Integrating with front-end:
As we were making our app compatible with different browsers, we faced minor issues. From the start, we integrated our application with Metamask, which was complicated, as we need to resolve some web3 instance issues in the browser. Portis integration was relatively easy and didn't take much time.