The team was brought together by a common interest in applying Blockchain technology outside of finance applications to utilize its transparency for social good. In 2016, charitable giving dropped to a 10 year low in Canada which perhaps had much to do with the real (or perceived) lack of transparency in fund allocation. When discussing our hack at ETH Waterloo, several hackers expressed how they would like to be able to track where individual donations go.
We believe, fully transparent charitable organizations with decentralized governance, can increase trust and efficiency in how charitable donations, development funding, and foreign aid is raised and distributed. The goal is to see decentralized fundraising and fund distribution anywhere in the world and quickly deploy raised money for communities in a transparent way.
What it does
Our proof of concept is a Decentralized Autonomous Charity (DAC) that offers "TitleTokens" in return for donations. The DAC is able to split and track the individual donation title tokens into child projects. Donations are accepted in ETH and then converted using the 0x.js API into SAI (a more stable coin, the value of which is maintained at around 1 USD) and held in a pool for a given funding period. The reason for the conversion is to maintain consistency in the currency value the donor chooses to participate and make local currency transactions more seamless. At the moment, the conversion to SAI and the issuance of TitleTokens are separate features, but the aim is to integrate them in the future.
TitleTokens are minted upon receipt of a donation. Each Token is able to be tracked down the supply chain, i.e. the DAC gives all or a portion of TitleTokens to a project, the project gives TitleTokens to a hospital, the hospital then trades the TitleTokens back to the DAC for their representational amount of SAI that they exchange for local money to purchase whatever they need. What is special about TitleTokens is that you can track the entire path of individual donations from start to finish, enabling donors to know exactly where their money went at each step of the process. This aims to solve the problem of ambiguity in charity/non-profit sector spending, and will hopefully incentivize more giving.
How we built it
We separated into two teams. Leo and Matt worked on implementing the Title Tokens and the front-end/UI while Micheal and Tom worked on learning about the 0x platform and accessing the API in order to exchange ETH for SAI stablecoins. This process is then folded into the front-end side so the donor ends up sending SAI to the DAC.
Challenges we ran into
When creating TitleToken, we needed a solution that was lightweight and not spamming the blockchain with bookkeeping data that would become temporally irrelevant in a relatively short period of time. We had to make tradeoffs between how we felt the system would function and eventually settled on using Event Logs to represent an acyclic graph of the divisions of TitleTokens as they move forward in their deployment.
With the 0x API, we first tried implementing the project on testrpc and ran into issues of running a local implementation of the SAI source code. We decided to switch to Kovan where we initially had trouble importing 0x.js and running web3, which we eventually resolved by folding the 0x portion into our front-end framework which already had all of the necessary web3 dependencies and injections. We had some difficulty with the 0x documentation, and had to consult with the 0x team for a while to resolve issues with BigNumbers and signatures.
Accomplishments that we're proud of
Tom: Apart from what we developed, I am proud of the non-technical aspects of our project, how well our team prepared for the hackathon, how we communicated throughout the weekend, helped each other and worked hard to accomplish a shared vision.
Michael: Delving into and integrating an API was pretty challenging especially for someone just getting back into development and new to crypto. It was pretty satisfying getting the thing integrated and watching that sweet test SAI stream in.
Matt: With a lot of discussion, sketching and help from the team, I wrote the TitleToken contract to have as minimal footprint on the Ethereum blockchain as possible via logging transfer splits as Events that can recreate a directed acyclic graph on the frontend.
Leo: Quickly building a working prototype using Vue.js that interacts with our smart contracts. Really proud of the way we managed to split out the work and get 3 very different pieces all done in a short amount of time: 1) Smart contracts for our trackable token (TitleToken), our DAC, and individual projects belonging to the DAC. 2) A UI build with Vue.js that interacts with the blockchain and our smart contracts. 3) Using 0x to convert Ether into SAI for the DonorWallet
What we learned
Tom: I'd never been to a real hackathon and coming from a data analysis and hardware background, I learned a lot about working on a software development team, interacting with smart contracts and APIs through testrpc and testnets and discovered more about how I want to be involved with blockchain technology in the future
Michael: Being new to crypto and Solidity, I'm proud of how much (beginner) Solidity I picked up during the weekend, and about (hopefully?) good and common patterns to apply (minimizing data storage on the blockchain, utilizing the event log to interface with the front-end, etc). Also, used a bunch of new tech along the way (Vue.js, MetaMask, node web server, 0x.js, etc.)
Matt: I learned how to filter and read event log data during the hack which was cool and something I had previously never done.
Leo: The biggest takeaway was a lot of lessons about creating a fully trackable token. Also, fast UI development to create a prototype with a lot of functionality.
What's next for The DAC
The ideas we learned here could be applied to other fields, specifically Supply Chain Management provenance solutions. We would love to standardize a TitleToken that provides pseudo serialization as we expressed in the DAC. We definitely have some work to integrate more core features and generalize TitleToken contracts for other "child DACs" and industry use cases. Exploring alternative ideas, creating a platform for DACs and discussion with a great team and wider audience at ETH Waterloo has been a tremendous learning experience. The ability for blockchains to provide trusted, transparent, tracking of capital should be applied to more fields (e.g. government spending), helping raise the confidence and trust in our current institutions.