During freshman orientation at UW, each student is given a coin. Students are expected to give these coins to someone who has made a significant positive impact on their life transitioning from high school to university. What if this wasn't a one time thing, but rather a way for students to reward each other for public good? In college, one of the most important things is to make community, whether that be by studying with friends, attending social events, having chance encounters with people you haven't met before, or simply being friendly. We wanted AllenCoin to encourage these social connections by providing a gamified approach to rewarding students for fostering the public good.

What it does

AllenCoin is an ERC20 token. On our AllenCoin platform, every so often, new AllenCoins are minted and any student who has a wallet on the Ethereum blockchain can claim some AllenCoin free of charge. Using AllenCoin, students can reward each other by transferring tokens to other wallets. Additionally, as one of our inspirations were social events, we have functionality for users to enter into giveaways using their AllenCoin. These giveaways are organized by the owner of the token's contract account.

How we built it

We used Austin Griffith's scaffold-eth tech stack to quickly build a dapp on the Ethereum blockchain. We felt that using a popular blockchain like Ethereum would provide us with more documentation and developer help. We found a branch of the scaffold-eth repository called "token-sandbox", which contained some skeleton code for how to mint custom ERC20 tokens. Using this, we created smart contracts using Solidity that would mint, transfer, and provide giveaway functionality for our dapp. The frontend of our code is built with React. The scaffold-eth repository contains some example React code, which we adapted to suit our functionality. We also included some React Bootstrap elements for a cleaner aesthetic

Challenges we ran into

Our biggest challenge was understanding scaffold-eth and how it deploys smart contracts. Although scaffold-eth is a great tool, we did not fully understand the code. Due to this, a good portion of our time was spent on understanding how input is passed from the frontend to the blockchain. Additionally, we had to find ways in which we could change the React example code without sacrificing any functionality, which, again, meant we had to understand how data flows in the frontend Another challenge was implementing ERC20 and how other contracts can interface with the AllenCoin ERC20 contract.

Accomplishments that we're proud of

For most of us, this is our first exposure to designing and implementing a blockchain-based solution, so we are proud to get hands-on with this technology. We achieved decent utilization of smart contract capabilities that is definitely useful information to have in the future. We are also proud of getting to work together as a team. Although we somewhat knew each other before the hackathon, we never worked with each other in an official capacity, so it was great communicating with each other and figuring things out together.

What we learned

We learned how to get started developing dapps on the Ethereum blockchain. A big portion of our original work was centered around developing a use case for blockchain, as well as writing smart contracts to achieve that use case. We also strengthened our abilities to use Git, quickly understand open-source code repositories, and adapt these repositories for our own applications.

What's next for AllenCoin

AllenCoin would be an amazing tool if utilized with community organizations in mind, such as the ACM (Association for Computing Machinery), who holds events and has the resources to distribute tokens, provide giveaways, and fund ethereum gas costs for using the app. We hope that with better implementation and future lowering of gas prices, it would not cost a lot to run this application, and, coupled with an even friendlier user interface, be able to be used for even people who do not understand the concepts of blockchain.

Share this project: