After participating a couple weeks ago in the LFGrow hackathon with an international team I decided that I wanted to bring this kind of events to my local comunnity. Currently there aren’t many hackathons where I live (although they are getting more popular), the most important being the Nasa Space Apps Challenge organized by the local Mars Society(which I participated in a couple times and was great). So, beside posting my experience here I also posted a few stories on Instagram about the hackathon along with a call to action to participate in the next Hackathon, Dao Hacks.
We are a team of five. I had two friends with whom I’m working on other projects that I had previously promised to get them into hackahons, Ariel (who is co-writing this article) for the business and project management side and Arturo for the graphic design and marketing side. The other two members were developers that I knew from elsewere who expressed interest in my instagram story.
We started with an online meeting a couple days before the event and then most of the team met up on another unrelated event we all happend to be at the day previous to the hackathon’s start.
Then, the nex day, hacking started.
What is a DAO
Before starting with activities specific to the hackathon, we faced the challenge of aligning ourselves with the concept of a DAO.
Part of this challenge’s difficulties was setting the limits of what is considered a DAO and what isn’t.
This led us to generate a large number of questions and doubts before going to the technical answers. The interesting thing about this question brainstorming process is that it helped us to identify what we currently knew as a team.
So specifically, what? is it a DAO?
A DAO, as its acronym indicates, is an autonomous decentralized organization. According to the Etherum page, it explains that DAOs are an efficient and secure way to work with like-minded people around the world.
After this exploration, we focused on looking for different examples of DAOs that are currently in operation and what their internal protocols were specifically.
An example to understand the operation and foundations of a DAO is to consider a community or business whose specific objective that they pursue together can be achieved through collaboration through the Internet, which collectively belongs to and is managed by its members.
To close this part of the process we decided to focus on the process of problem identification and solution for the Hackathon.
Once we managed to figure out what is a DAO. We went through a couple of project proposals for possible DAOs or tooling for them, developing on them and then discarding them when their fundamental flaws became painfully obvious.
Finally, after going out for a walk and having dinner at a pizza place, we > settled on making a crowdfunding platform to solve a a particular problem:
A common situation in the web3 is having a team gathering a big amount of funds through funding mechanisms as ICOs and NFT collections for project and then banish or simply not being capable of executing.
Our solution was to implement a milestone-based fund retention. Here’s the user flow we worked with:
On our first model the users could only choose to terminate the project or to allow it to continue as planned. But we realized that in that model all of the milestone setting was done at the beginning, which we knew wasn’t how actual projects developed. Project don’t follow a set array of milestone, they change, evolve and pivot over time. So we changed the voting system to allow the team, now armed with more information and experience than in the beginning, to propose new sets of milestones for the community to choose from.
With that done we started to work on the development.
On the Solidity backend we started with an ERC1155 contract where the first token was the Project NFT and the second token was a fungible token representing stake in the project.
Then we added a fund function that received a ERC20 token deposit (Let’s assume it’s a whitelisted stablecoin token) and minted the same amount of project stake tokens. After that we added functions for withdrawing milestones funds, submitting them (along with links to the new metadata), voting and withdrawing user funds in case the project is terminated.
We missed implementing a lot of things. I was exited trying to implement Superfluid streams for ERC1155 fungible tokens, but I didn’t get enough time (It’ll be a project for other day).
Just like last time, the frontend was nowhere near completed for sumbisison time, so we had to present the mocks along with showing a screen capture of our tests running.
Surprisingly, even though we started coding almost an entire day late, most of the team was working with web3 for the first time and we didn’t have any experienced frontend developer we managed to win two small prizes. One from IPFS for using it to host metadata and another from Unlock Protocol for using it for restricting voting in the UI.
Obviously, get a frontend developer for the team (Any interested can send me an e-main). Beside that we’re going to continue to sharpen our technical skills to hit the ground running on next hackathons.