Inspiration

With recent events in Ukraine, the intersection of blockchain and charitable giving has become significantly more apparent. Ukraine raised ~$100 million in ETH! Currently, there are many roadblocks for charities and donors alike that hinder charitable giving. Setting up bank accounts, qualifying as a 501c and incentivizing donations are just the tip of the iceberg. The current method of donations has no modularity, is uniquely opaque (donors don’t know where funds are allocated), and is thus inefficient for all parties involved. The blockchain provides a unique opportunity to revamp and streamline the charitable giving process. Immense onchain liquidity and the benefit of transparency and decentralization are forces to embrace. Accompanied by a simple onboarding process, a gamified donation environment and sleek interface, we hope to accelerate the trend of onchain charitable giving.

What it does

Our goal at Altruia (altruia.xyz) is to connect non-profits to crypto liquidity and provide an accessible avenue to fundraise on-chain. We built a trustless and open fundraising dApp with a modern interface that gamifies giving. We mint custom commemorative NFTs for donors and fundraisers with the intent of promoting social recognition for charitable giving by providing different forms of recognition for contribution. We have a fully functioning MVP deployed to testnet, modular smart contracts, and NFTs deployed on IPFS. Our NFT contract references the information within the master contract that manages the accounting of the contributing addresses and issues specialized NFTs based on contribution level. Someone who donated 1 ETH and raised 3 ETH on behalf of Ukraine will receive a different NFT than someone who donated 3 ETH and raised 1 ETH to GoodWell. Different aspects of the NFT will correspond to amount donated, amount raised and each charity will foster a unique design. These NFTs are displayable on both our website and OpenSea!

How we built it

We have 4 unique pieces of technology: a master smart contract that manages the accounting of the contributions made to the charities, an NFT contract that mints each of the possible permutations of the charities’ NFTs, NFT data hosted on IPFS, and a serverless frontend. Our master smart contract whitelists charities, keeps track of donations and referrals, and custodies the ETH donated until whitelisted charities withdraw the funds designated for them. We have currently onboarding two charities: the Ukrainian Government in light of the recent crisis and GiveWell for effective altruism research. Our NFT smart contract references the accounting done on our master smart contract and mints & upgrades the NFTs representing the different contribution levels of donors. We have all NFT images and metadata stored on IPFS and have a fully functioning frontend that allows for codeless donations, referrals minting NFTs, NFT upgrades and NFT displaying. UI/UX optimization was a critical consideration – we wanted to make the frontend as informative as possible in alerting the user their donation and raise statistics, their current NFT per charity, and when it’s time to mint or update their corresponding NFT.

Challenges we ran into

Our largest challenge was that our NFTs broke the traditional mold because they were updatable and non-transferable. As a result, we had to create a custom smart contract that could track the running balances of each of the addresses that were donating and referring others to donate to the platform. All of these factors accumulated into a need to balance the robustness of our contract, the composability with our donation contract, the unique upgradable logic, and the decentralized IPFS storage mechanism within the guidelines of Opensea. While this was grueling at times and required creative solutions, our team feels that we gained a deeper understanding of all underlying technologies through the process.

Accomplishments that we're proud of

Our product is FULLY decentralized. Our dApp is serverless, our NFTs are stored on IPFS and we have no access to custodies funds. Despite this achievement, the dApp is built for newcomers and non-blockchain-native folks! We are proudly deployed at altruia.xyz.

## What we learned We grew as a team and learned how to effectively deploy smart contracts, build a frontend, work with distributing file storing (IPFS) and integrate the parts in just 2 days! We learned how to connect smart contracts to frontends, how to create “gamified” frontend design that integrates traditional and recent web3 supporting libraries, how to modularize smart contracts, how to modify the ERC-721 standard to generate non-transferable NFTs, and how to minimize “risk” (e.g. permissioning withdrawals to ensure the safety of custodied funds) in a smart contract. Reflecting, the last two days have been a super fun experience. Our hours of debating, refining the method in which our upgradable NFTs were going to be displayed, an all nighter pulled last night, and problems/successes we’ve had along the way have been one of the most enjoyable experiences we’ve had to date!

What's next for ALTRUIA

In order to further “gamify” our platform, we want to add a leaderboard to the website where donors can see how much their peers have donated to charities. Our smart contracts are modular in design and we want to leverage the “money-lego” paradigm to stake Eth and lend Eth on behalf of charities, thus giving them access to the world of DeFi through a simple interface, while providing some extra yield for respective charities. Most importantly, we hope an auditor (e.g. Consensys) reviews our contract so that we can safely deploy our dApp on mainnet, actualizing our vision of an open charitable future.

See: https://github.com/jonahb27/donations https://github.com/alethiometer/altruism https://altruia.xyz/

Built With

Share this project:

Updates