Blockchain Based Fund Manager - Transparent as Water

The problem Paaradarshak solves

Problems ?

  1. Payers are unaware of how their money is utilized
  2. Fraudulent authorities indulge in corruption
    These problems restrict payers from paying proper tax or donate in a campaign as they are not sure about the legitimacy of authorities in the chain

Solution ✔️ : Blockchain-Based Fund Manager
Track: Payer can track how his individual contribution is being used.
Audit: Anyone can audit how the total funds are being utilized
Corruptionless: The exchange of funds between authorities is publicly available and is immutable.

(Transparent/ Immutable/ Decentralized/ Secure/ Traceable/ Scalable (Due to Matic))

Future Aspects ?

  • Payment via UPI | Onboarding more people
    Currently, users pay in Matic Tokens,UPI can be integrated as a mode of payment. But it was not possible to get a GSTIN number to connect with payment APIs like (Razor or Google pay) in such a short time.

  • Uploading Result Proof | Adding more Legitimacy
    Currently, the last stakeholder of authority chains just enters the result as text without giving any proof for it. We plan to add a feature where they can upload result receipt or photo through MoBit.

Why we chose Matic ?

  1. Matic is a Plasma solution built on Ethereum with PoS as consensus, therefore it has higher transaction throughput compared to public blockchains without compromising security.
  2. Matic supports real-time updates through eth-dagger which results in better UX.
  3. Matic has Decentralized storage integrated through Mobit, which we are planning to integrate in our next version.

Challenges we ran into

  1. Asynchronous nature of Javascript
    To keep the smart contract logic efficient on gas, we deployed all loop logic on the client-side. Therefore loops contained async calls, which we had to make sure that are getting executed one by one, as in our case the next request was dependent on the previous request. This thing was challenging as we needed various loops for getting histories of tokens, authorities, etc. To counter this problem we made use of promises.all(), reducers, and memoize.
  2. UPI Integration
    Currently, users pay in Matic Tokens, Our main plan was to have UPI as a mode of payment, and then use oracles to monitor bank deposit/withdrawal and change token state concurrently. But Payment UPIs require GSTIN number as a prerequisite, which we were not able to get in the given time
  3. Understanding Matic
    We wanted to understand Matic at its core, rather than using it directly. The concepts like Plasma, Plasma exit, Freezing assets were new for us. It took us a decent amount to understand these things.
  4. The Syncing state of React with a change in blockchain state. When the React component mounts up, we fetched the data from the blockchain. But when our app made some state changes in the blockchain, we had to make sure that our React state is in line with it. There were 2-3 ways to solve this, like mounting the component again, making the state changes concurrently, using a drizzle.