An idea sparked in our heads when we came across this satirical article online. link: We found this article extremely humorous at first. But upon closer examination, we felt sad that there were businesses out there that would actually abuse the goodwill of people that are trying to contribute to help people in need. We also found other businesses that were not truthful in declaring their proceeds to charity and they ended up keeping proceeds for themselves. That was when we decided that we had to implement a solution and try to curb this problem.
What it does
We wanted to build an API that would support a payments system that included these aspects:
- Transactions must be displayed to maintain transparency
- Transactions had to be secure
- Transactions made had to be irreversible (or immutable)
- Transactions can be verified by both donors and merchant
With all these Engineering Design concerns, we decided that it was best that we implemented a centralized blockchain system to help merchants make payments to charities upon sales, which is entirely hosted on GitHub to maintain as much transparency as possible.
How we built it
We used React framework for the front-end development, express.js and node.js for back-end development. We have 2 repo to host our system, one repo to maintain and keep track of the data of our users and the other to host our system. We used Github to store our information as the information was accessible by everyone. We relied on Github's feature where every commit made has a unique hash attached to the commit and we used that hash to uniquely identify our blocks in our blockchain. So every commit made is a block in our system! And the hash uniquely identifies it.
Challenges we ran into
One of the many challenges we faced was that we realized that uploading everything (including user data) on Github may lead to users to deem our system as having a lack of privacy or even not complying with PDPA regulations.
There was not enough host to build a traditional distributed blockchain and hence we have to architect another system to help do what we needed to do.
Accomplishments that we're proud of
We are proud that we overcame many challenges along the way. The way we overcame the challenge stated above was that we hashed our donors' name and we continue to track the hashed name instead of the actual name. What this means is that now the information displayed on Github is only the amount donated and which charity received the donation.
We are also able to maintain a list of all donations made by a user.
What we've learned
We've learned how to implement a blockchain in this short 24-hour hackathon and we are very proud of it! Our team members have each put ourselves out of our comfort zone and done something we've never done before. For Cheewee, it was back-end implementation through blockchain. For Zames, it was going through the blueprints of a new storage system using Github and explaining it to the team. For Gary, it was experimenting with front-end designs. This is the first that we've architect a new storage system using Github and cannot wait to explore more about it!
What's next for API for Transparent and Verifiable Donations
We will look to counter more security measures and update our Donors and Merchant page! We might also look to make our system entirely distributed once we gather enough users of our product.