Inspiration
We came across a StackOverflow post discussing cryptography and their potential application in virtual currencies, destroying the traditional stereotypes that "cryptos are a waste of electricity and resources. Immediately, we were interested in the topic, we delved further and watched 3B1B videos as well as reading the original Bitcoin paper. It is a decentralized currency that cannot be controlled by any authoritarian regime, and we hope to extend this to the biggest platform for open source developers like us! In cryptocurrencies, the process of hashing can be replicated by Git's own commit hash, and we decided to base a cryptocurrency on Git, adding to developer's experience.
What it does
Gitcoin is a platform designed to support open-source software development by connecting developers with project owners, funders, and organizations in the blockchain and cryptocurrency space. By utilizing a unique system of bounties, Gitcoin enables projects to reward contributors for their work on specific tasks, encouraging collaboration and incentivizing the growth of decentralized technologies. It offers a marketplace where users can discover various open-source projects, participate in hackathons, and receive funding through grants and sponsorships. Moreover, Gitcoin fosters a community-driven ecosystem that promotes innovation, creating opportunities for developers to enhance their skills, earn compensation for their contributions, and ultimately help advance the broader mission of decentralization.
How we built it
We decided to implement this with a CLI interface with various commands users can prompt Gitcoin with using arg parser. We used cryptography methods like SHA-256 and Schnorr to generate public and private keys, representing each user. We implemented a validation method to verify that each transaction on the blockchain is valid and kept track of all transactions to ensure that no one is making fraudulent transactions. Each transaction is essentially a commit to Git and mining each block is an attempt to find a Git commit hash that starts with a certain number of zeros in its hash. The mining, or proof of work, is optimized to run on the CPU, and periodically, users and miners will pull remotes to update their own blockchain. Any transaction that is not verified by the miner is rebased as prospective transactions.
Challenges we ran into
- Working with arg parse recursively, because users can infinitely append destinations and amounts, with a custom transaction fee
- Putting all parts of the Gitcoin together: validating transactions, git remote commands, mining, etc…
- Tests our project, because every action we take will mutate the repo
- Creating a mempool that keeps track of all valid transactions
- Transactions in general, making sure that there is no double spending, or using unexisting Gitcoins
- Making physical Gitcoins with QR codes leading to a private key for giveaway
Accomplishments that we're proud of
Some of the accomplishments we are proud of include building the UI and creating a physical Gitcoin. The Gitcoins themselves also have a unique feature where there are QR codes on the back that gives the owner of the physical Gitcoin a private key. Additionally, we created beautiful animations for each of the Gitcoin processes that were first hand drawn then converted to ASCII art. And in general, ensuring our validation, transaction, mining logic functions and tested.
What we learned
We learned that blockchains function as decentralized, immutable ledgers that facilitate secure and transparent transactions without the need for central authority. We discovered the intricacies of how blocks are linked through cryptographic hashes and the importance of consensus mechanisms, such as Proof of Work, in validating transactions and maintaining network integrity. This understanding highlighted the potential of blockchain technology to enhance trust, promote transparency, and enable decentralized applications beyond cryptocurrencies, shaping our approach to building innovative solutions in the open-source ecosystem.
What's next for Gitcoin
What's next for Gitcoin involves expanding our platform to better support the growing open-source ecosystem and enhance the developer experience. We aim to introduce new features that facilitate greater collaboration between developers and project owners, including improved tools for project discovery and funding. Additionally, we are focused on enhancing our grant and bounty systems to encourage more participation from diverse communities and create incentives for sustainable development.
Log in or sign up for Devpost to join the conversation.