Empower your donations with transparent blockchain data management, and stay updated on the real-world impact of your generosity
Chain of Impact revolutionizes the charitable giving landscape by leveraging transparent blockchain data management to empower donors and support organizations. This project enables users to track their donations and witness their impact firsthand, fostering trust and accountability within the philanthropic sector. Experience a new level of engagement with your favorite causes and stay updated on the tangible outcomes of your generosity.
Chain of Impact uses Polybase for the database, Nodejs for backend, React for frontend, Polygon zkEVM for the chain, and NFT.Storage for storing images.
App flows
User is an organization:
Sign in with Wallet Connect → create NFT for donation in Admin → NFT saved to Polybase → Submit data updates per NFT → updates saved in Polybase
User is a donor:
Sign in with Wallet Connect → View NFTs for minting → Mint NFT → unlock ability to view data updates
Polybase
Created collections for users, data updates, NFTs, creators, and token ID tracking An organization’s NFT is saved in Polybase (not yet minted) with their wallet address as the creator.
When minted by a donor, the NFT is updated with the token ID, contract address, and owner wallet address.
The token ID collection is used to serve the contract with a token ID to mint the NFT Pro tip: It’s easier to store the data in Polybase and read from there than read from the chain!
Polygon zkEVM
Used an OpenZeppelin NFT minting contract
Set token URI to the Polybase NFT collection’s URL and NFT id Metadata shows properly formatted in the Polygon zkEVM Testnet Explorer
Other
NFT images are manually uploaded to NFT.Storage and the link is provided when creating the NFT. Ideally, we would’ve liked to have the user upload an image file and on the backend store the image on IPFS for the user.
A donor can mint an NFT but no transaction is made. Ideally, we would’ve liked to have the full transaction go through for the donor to actually pay.
Added a “network” field for each NFT in the schema to allow for flexibility to mint on other chains and keep track of it.
Ideally, data Updates in Polybase would be encrypted.