This is a Next.js project bootstrapped with create-next-app
.
npm run dev
# or
yarn dev
The project is'nt fully completed . We could'nt make the front end dynamic and it is not responsive
Link: https://github.com/umershaikh123/morlis-x-filecoin-SmartContract
Link : https://www.figma.com/file/y6DAZMsWFNriJaF4Ol2lP9/Daily-UI---Day-01-(Community)?node-id=792%3A1026
Chainlink Keepers
NFT.STORAGE
WEB3.STORAGE
XMTP
POLYGON
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.
- 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
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
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
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
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
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
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
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.
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
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)