Inspiration
The idea of the project comes from the world of open-source contributions. The entire community of open-source developers produce some amazing projects all throughout the year, which not only help the other members of the community but also gives them an opportunity to collaborate and enhance their skills.
But there are some issues that the field of open source faces and the biggest one of them is the lack of monetary support to the repositories and it's contributors. If we try to think about it, the biggest reason why this problem exists to date is : Lack of an easy to use platform to fund open source repositories and their developers. We brainstormed over this problem, researched how we could solve this in the best possible ways and came up with our own platform: Minerva!
What it does
Minerva is a framework to incentivise Open Source Contributions by letting sponsors directly fund both the maintainers of different repositories and also their contributors, on platforms such as GitHub. The idea is described below :
Part-1: Rewarding Open Source Repositories (and their Maintainers)
- The idea here is to have a platform where anyone interested to support/sponsor a certain GitHub repository can contribute their part for building the project associated.
- If a supporter/sponsor finds a repository which he/she/they think is useful, innovative or interesting and can be taken to another extent, they can fund the repository in the form of stablecoins through the platform.
- Now whenever the sponsor funds a repo, they get an ERC-20 token (associated with the repository) in return.
- Now the entire invested amount goes to the pool which is used later to incentivise contributions to this repo, for the contributors.
- An X amount of percentage of ERC-20 tokens (associated with the repository) goes to the maintainer of the repository as their reward from this pool.
- The rest goes to the Aave lending pool which is used later to incentivise contributions to this repo, for the contributors.
Part-2: Taking forward the Idea - Rewarding Open Source Contributors to these repositories
- Taking forward the idea, the project also allows open-source repository maintainers to reward contributors in order to build goodwill and encourage more people to contribute. When a user submits a PR that gets merged, their contribution is recorded through an oracle and they receive an ERC20 token as a reward (from the pool established from the investor's money). These tokens represent a stake that the contributor has in the project. Therefore, having more PRs merged leads to the contributor having more tokens, which implies a larger stake.
- The contributor rewards pool contains a predefined percentage of the funds obtained from the supporters. The total value of the pool decides the value of the ERC20 token, such that the total amount is split equally among each token.
- The ERC20 tokens can be traded among the contributors. The contributors can also directly liquidate the rewarded ERC20 tokens from the liquidity pool.
- When a contributor wants to liquidate a number of their tokens from the pool, they receive the equivalent value in stablecoin.
How we built it
- We used Chainlink Oracle for fetching Github PR merges using Github API and passing the off-chain data on-chain.
- Each repo that joins our platform has its own ERC20 token contract deployed which also hosts the interfaces for Aave and Chainlink.
- When the Chainlink Oracle function is triggered by the Chainlink alarm every alternate period, the oracle stores the user ID of the contributor and assigns some ERC20 tokens in their name which they can later redeem on going to the contributor section of the website.
- Project supports can sponsor a Repo in ETH and the funds they send go into an Aave interest generating pool. The aTokens associated with the funds are stored in the contract itself
- When a token holder wants to liquidate their repo ERC20 token in exchange for funds, they can go to liquidity section of the website. They will have to deposit their ERC20 tokens into the contract and the contract will withdraw some funds from the Aave pool by sending aTokens and send the funds to the token holder.
- For the contract, we used OpenZeppelin's ERC20 token standard and integrated it with Aave and Chainlink interfaces.
- We also have our own Chainlink Kovan node hosted on Azure
- The frontend was built in React and the backend was built using Node.js, Express, GitHub API and Fleek Storage.
- For the sponsor, contributor and liquidity flows, we're using the GitHub repo ID as an identifier which retrieves contract address for the repo token from IPFS
Challenges we ran into
The biggest challenge for us was to identify the tokenomics of the ERC-20 token associated with the repositories. The challenge we had to solve, was to make sure that the ERC-20 tokens maintained their value. Another challenge was to determine the interest generating logic for the pool of money that came from the sponsor in order to get distributed to the contributors. Aave lending pools came to the rescue here. Also the crypto-space is amazing, as we were able to connect with a lot of folks for feedback. This also helped a lot to solve our issues.
Accomplishments that we're proud of
- We were able to implement the basic idea that we had planned in a very short amount of time.
- We got to have the same really cool brainstorming sessions and had some amazing display of teamwork together.
- For some of us, this was the first big hackathon experience. So we are really proud we pulled it off!
What we learned
It was probably the most learning experience we have had in a hackathon. Right from working with Chainlink data oracles to the GitHub Auth, to the front-end, everything was pretty challenging. We have an amazing experience of working on all of them now. We explored a lot of stuff while researching, deciding on ideas and developing. The hackathon taught us how to explore anything and how to frame our thoughts into a working framework. This is probably the biggest learning we had.
What's next for Minerva
- The main aim we had is to create a platform even people new to Web3 can easily adopt and use. However, there are parts where the user is required to handle cryptocurrency, such as supplying LINK to the repository contract or supplying gas for transactions. Better user onboarding methods can be explored and implemented.
- The tokenomics of the ERC20 token of the repository can be refined to better benefit both sponsors and contributors.
Built With
- aave
- azure
- chainlink-alarm-clock
- chainlink-data-oracles
- ens
- express.js
- fleek
- github-auth-api
- ipfs
- metamask
- react
- remix
- solidity
- web3.js
Log in or sign up for Devpost to join the conversation.