A digital donation DApp that builds on the idea of mutual funds and robo-investing. It pools cryptocurrency donations and dynamically allocates funds based on the occurrences and severity of natural disasters.


Distributed ledger technology was built by the people, for the people. We believe that the blockchain community can go a step further in improving the world. Hence, Magnanimity enables people to easily invest their funds in needy charitable causes that are efficient and transparent. To be built atop an automatic fund manager protocol such as Balancer, Magnanimity is an extension that pools cryptocurrency donations and dynamically allocates funds based on the occurrences and severity of natural disasters. User allocates a certain amount of their investments into Balancer to go to Magnanimity. They can choose two paths: Manually choose an organisation to donate to. Donate to the MagPool - this is where every 24hrs, we run an algorithm to see the needy organisations (based on severity of cause), and donate the money in weighted amounts. The funds donated to each charity organisation is allocated into the Balancer accounts of charity organisations themselves, where they can earn interest before being withdrawn for usage. The pools selected for these are stable growth, low risk pools. We will also set aside about 30% of their money to not be invested but to remain in their wallet for emergency immediate usage. To enable transparency, each organisation has 2 ways to spend the money donated: Requesting to spend: Organisations that are not marked as ‘Urgent” (based on cause) have to submit requests, to be approved by donators to spend the money. The request shows where the money is going, why and how much. For emergency use, for example, there is a sudden Tsunami and Red Cross needs to immediately take out money, they will make a withdrawal, but this withdrawal is logged in their portfolio for donators to view. Organisations that register with Magnanimity have to be pre-approved so that we know they are legitimate organisations that will not trifle away the money. To further improve the idea, we also want to figure out a way in the future to rank the efficiency of each charity organisation because we want to donate more money to more efficient organisations that use the money for beneficial purposes. This is because we feel that often, donators never really know where their donated money has gone to. Greater transparency and assurance will encourage more people to donate to these organisations. Another area for improvement is to generate MagTokens.

Magnanimity showcase

How it's made

- Use the Balancer API to connect users' funds to a main donation pool or manually allocate to individual charity organisation pools. - Built on Solidity, Metamask and Rinkeby test network. - Chainlink to get data about natural disasters to obtain weightages for dynamic allocation. - Allocation algorithm: Using data from the ReliefWeb Disaster API, we can obtain a list of current and past disasters (disaster type, location). {"id":"50751","score":1,"fields":{"date":{"created":"2021-07-02T00:00:00+00:00"},"country":[{"name":"Barbados"},{"name":"Cuba"},{"name":"Dominica"},{"name":"Dominican Republic"},{"name":"Grenada"},{"name":"Haiti"},{"name":"Jamaica"},{"name":"Saint Lucia"},{"name":"Saint Vincent and the Grenadines"}],"name":"Hurricane Elsa - Jul 2021","glide":"TC-2021-000072-HTI","type":[{"name":"Flood"},{"name":"Tropical Cyclone"}],"url":"https:\/\/\/taxonomy\/term\/50751","status":"alert"}} - We rank the ‘neediness’ of the organisations based on the number of countries indicated in the disaster’s dictionary. The number of countries is multiplied by the population of the countries to see how many people are affected. We also factor in the GDP per capita of the country because this will show how much the government is able to spend themselves to aid the country. Lower-income countries would need more help. We have never coded a DApp or even anything related to blockchains before. This is our first time so we followed a Udemy course and in a week, learnt how to build a DApp using Solidity from scratch and came up with this.

Technologies used