Goodwill serves as an Ethereum based dApp which can be used for bringing up transparency in the way , we believe that the money donated by a donar is his hard earned ,which the individual donates with a hope that it would be used for the betterment and the welfare of the society, but the problems like black money holders showing there transactions in white,using money for smuggling and other illegal purposes hampers the trust of these individuals and creates a big doubt in there mind, this can be stopped to a large extent using our proposed system.


Donations for public welfare, NGOs, orphanages, organ transplantation are the means by which children, old age people, handicapped and the less privileged ones are able to receive facilities which they won’t be able to get otherwise.However, this system must work very honestly and with no corruption to have actual benefits towards the betterment of society. Owners and managers of these organizations may turn out to be corrupt and use the working of anonymous donation as the main means for corruption on large scale. There is a need to decentralize the distribution of resources. This can be achieved using blockchain. It is a transparent, decentralized and distributed technology which operates without a central control organ. The main purpose of this system is to eliminate the corruption in organizations by means of which, black money is legalized or resources are manhandled. Also In today's scenario, there are thousands of donation portals involved in fundraising and there are millions working, the world over. It is important to understand the mammoth tasks these centres have to go through for doing such noble causes. Problems Identified:

• Misuse of donated funds in various donation portals • Complete organisation is designed with manual work process, Because of which there are operational issues • Donation Portals are not able to attract donors because of faulty practices like money laundering, corruption etc in every strata of society.

What it does

Goodwill is an ethereum based dapp which is using blockchain and its database that is run by many users on a decentralized network with trustful protocols thereby making such fundraising portals transaction secure and transparent. In our project we have two contracts. One is the main algorithm based on which every transaction is approved. Second to store the address of all the deployed contracts on our network. The user interacts with factory to get the details of the organization it wants to interact with and then it can interact with the organization directly

We have implemented the following features:

1. Add Organisation: This function is involved in the creation of a new organization. The details of the organization like its name, description, minimum contribution value is passed as parameters. In the network, the node which creates the organization is the manager of the organization.
2. Contribution to the Organization: This function is to accept donations from users. Donors donate some amount of money to organizations such that amount donated > min contribution. Once donated they form a part of the blockchain network. 
3. Request Generation: In this function the manager creates a request for spending money for the organization for some purpose. It adds all the details of the request regarding the description of the request, amount required and to whom to send the money for this request.
4. Request Approval: This function is for the request approval of the request generated by the manager. In this the donors who get approval rights for request will get the list of requests they have rights to approve to. They can analyze the validity and genuineness of requests and hence approve/reject based on that. 
5.  Request Finalization: This function can only be called upon by the manager. It is like a confirm button for a request to get processed. This function only gets enabled when the request gets approved by the donators. The manager may decide not to process the request for some reason and will have a chance to reject it. Once the request is finalized it gets processed and the money is sent to the mentioned address.

How we built it.

We have used NextJS module for server-side rendering of the ReactJS Components. In our project we have two contracts. One for the main consensus algorithm based on which every transaction is approved. Second to store the address of all the deployed contracts on our network. The user interacts with factory to get the details of the organization it wants to interact with and then it can interact with the organization directly. In our project we deploy our smart contract on Infura using the API ID provided by the Infura API as the address of our smart contract.

Tech Stack

• Ethereum
• Next.js, Reactjs
• Solidity
• Metamask chrome extension

Challenges we ran into

Ideating the whole project, brainstorming over the features we have to come up with was a very rigorous process itself. We introduced ourself to blockchain few months back so working on smartcontracts with limited resources was challenging. We were not very much familiar with nextjs , so working with it was a bit gruelling. Setting up ethereum network and connecting with metamask using infura as the platform took efforts in initial stage nevertheless stackoverflow helped.

Accomplishments that we're proud of

  1. We have been able to come up with a working model in a limited time frame.
  2. A step towards solving a serious real world problem.
  3. Creating a simple and effective UI/UX of the application.
  4. Smooth collaboration using online mediums.

What we learned

Every hackathon is a very good learning experience, by participating here also we got to learn and explore a lot of new stuff.

  1. writing smart contracts, creating our dapp.
  2. next.js was new for us, so we got some handson at next.js as well
  3. most importantly working under pressure and maintaining coordination with the collaborators so that we are at a sync with them.

What's next for Goodwill

In this system we see that the adding of block in blockchain takes around 8-11 seconds in the test network which is slow as per efficiency of the system is concerned as per next this system can be made efficient when we parallelize the transactions that are queued for getting processed on the network. However, till now there is no particular way to speed up the transactions except the experiment of increasing resources to process the request faster. In future works, we will try to make this system efficient as per the speed of transactions is concerned. Our proposed system serves a very important purpose if implemented and accepted by the government. Hence, if the system is utilized to its maximum potential, it will help bring down corruption to a large scale.

Built With

Share this project: