Skip to content

umershaikh123/moralis-x-filecoin-frontend

 
 

Repository files navigation

This is a Next.js project bootstrapped with create-next-app.

Getting Started

npm run dev
# or
yarn dev

Moralis x Filecoin Hackathon Winner project


Project : Web3 Fundraising Project

Disclaimer :

The project is'nt fully completed . We could'nt make the front end dynamic and it is not responsive


Smart contract repo

Link: https://github.com/umershaikh123/morlis-x-filecoin-SmartContract


Designs :

Link : https://www.figma.com/file/y6DAZMsWFNriJaF4Ol2lP9/Daily-UI---Day-01-(Community)?node-id=792%3A1026


Techonlogies used

Chainlink Keepers
NFT.STORAGE
WEB3.STORAGE
XMTP
POLYGON


what is our project about?

Our project aims to solve the issue of trust, transparency in the isssuance of funds for charity, fundraising, donations etc.

Organizers/NGOs can create any funding program which they need to raise money.

After filling necessary information in a form such as program details , cause , fund goal etc the form data is uploaded to WEB3.STORAGE and is stored inside smart contract.

As to discourage unnecessary/scam funding projects Organizers have to pay a 0.005 % fee of the total fund goal and each project first gets verified by the user and . User can vote for or against any cause .

The voting is transparent . anyone can see who voted for or against the program

We are still looking for better voting mechanism and penalty for malicious users .

The voting is open and can be done by anyone but each wallet can only vote for a cause once, the voting is stoped once the no of votes reached their limit.

then chainlink keepers change the state of the program. If the program is verified then it moves to Fund-Raising-State but if it failed then it moves to Failed-State

Once the program is in Fund-rasising state the users can finally start donating .

users can also chat with the organizers about the program using Xmtp messaging feature

anyone who donates to the cause gets a special soul-bound nft made by the organizer of the program.

There are 3 NFTS . the first one will be given to any users who donate , the 2nd and 3rd one will be given to users who donated above a certain amount.These values will be set by the organizer when creating the program


The funding program is closed when the specified goal has been reached.

plans moving forward

  • Our main goal is to make sure that the money that is raised , is actually spent for the purpose of the program and people can actaully see how their donated money is being used.
  • We plan to implement a standard open dao which with each cause as proposals and ways to incentivize users to verify them
  • we plan to add support for donation of real world asssets or other digital assets


integrations

Chainlink keepers for automating functions in smart contract

  https://github.com/umershaikh123/morlis-x-filecoin-SmartContract/blob/main/contracts/Main.sol

Chainlink Keepers are used to change the state of the program.

Each program have 4 states . Verifying state , Fund Raising State , Complete State and Failed State

Depending on certain conditions like voting , fund raising time , No of votes completed , Fund Goal completed the chainlink keepers will change the state of the program

xmtp for messaging (Not dynamic)

  code : https://github.com/umershaikh123/moralis-x-filecoin-frontend/blob/main/pages/detailPage/%5Baddress%5D.js
  live project : https://moralis-x-filecoin-frontend-fadk.vercel.app/detailPage/1

Users can message organizers thorugh XMTP

Filecoin , web3.storage and NFT.storage

 https://github.com/umershaikh123/moralis-x-filecoin-frontend/blob/main/pages/Create-new-program.js

Web3 Storage : For storing Form data
NFT Storage : For Storing NFTS

Moralis for syncing events from our smart contract (Not yet implemented)


Polygon for scalibility



Detailed project working

In our project we have the organizer of the funding programs and users who can donate , vote (verify) program.

Each user will have their own profile which will show all the programs that he donated to and all the soul bound NFTS he recieved

Similarly the organizers will also have their own section which will show all the programs that they have created so far

Firstly an organizer creates a new funding project by clicking the create new program button which opens up a form the organizer writes detail of the program and NFTs that will be rewarded to the users .

The organizer has to pay 0.005 % fee a fraction of fundGoal to create a new funding program. This reduces the chances of scammers trying to create fake programs.

If the program fails for some reason then the fees will be refunded to the organizer

verifying stage

Okay now that the organizer has submited the form , payed the fees . The program goes in Verifying state. Now the users can vote for or against the program .

The voting time , No of Votes might be different depending on the FundGoal.

All the votes are transparent and are shown on the verfying page.

We implemented a very simple voting system but we can improve it a lot.

Another approach we thought was that there will be people called 'verifiers' who would stake some Eth/or any coin and only they can vote for the program

If they voted wrong then their saking coin would be slash but if they are right they will get a reward in our own crypto currency

Users can see the details of the program by clicking the Cardview of the program , they can chat with the organizer using XMTP messaging

Now if the program gets reached its voting limit the chainlink keepers will check certain conditons and change the state of the program.

If the program succeded in verifying it will move to Fund Raising State otherwise it will move to Failed State

Fund Raising stage

Now that the program is in the fund raising state . Users can donate Crypto to the organizer of the program. all donations are shown on the page

The users can be rewarded upto 3 Soul Bound NFT if they donate at a above a certain value.

The first NFT will be given to all user who donate any amount

Complete State

If the program reached its Fund goal then it will be in Complete state.

The organizer can withdraw all the amount that was raised

The chainlink keepers will then check all the users who donated and mint them soul bound NFTs if they are eligible.

Failed State

If the program was not verified or people voted against the program then the program will move to Failed State
and the organizer fees will be returned

If the program was in Fund Raising state and it could not reached their goal in a certain time limit lets say 6 months then the program will move to failed state . All the users will get their donation refund back and the organizer will get his fees back.

The logic behind this is that if someone needed 10k$ to raise for his project and he only raised 5K$ then whats the point of 5K$ if he needed min 10k$ to do something useful.

Of course we can still change some of our logic and their is always room for improvement


Team members

Me - umershaikh123 (Project Lead )

  • Desribed the technical working of the project
  • Made all the designs from scratch (link above )
  • Wrote the entire complete smart Contract from scratch
  • Added chainlink keepers logic
  • NFT mint logic
  • Soul bound NFT contract.
  • Fix errors in smart Contract
  • Used Web3.Storage on Front end
  • Used NFT.Storage on Front end
  • Fixed and Polished the front end code.

rolic-hub (Front-end-developer)

  • Made the front end code and logic
  • implemented XMTP

0xWick (Back-end developer)

  • helped in WEB3.STORAGE , NFT.STORAGE Implementation
  • handled moralis , api logic

M.FaiqKhan (Researcher and blockchain dev)

https://github.com/MFaiqKhan/Moralis-x-Filecoin-Hackathon/commit/2886eb0f255420592140db6c0e64adbe4311f908


https://github.com/rolic-hub/moralis-x-filecoin-frontend/commit/99aa11114de688db31b57a25cbc2f34791c2ffc1