Inspiration
Ironically, the inspiration for ZKLearning stems from the previous days' efforts to learn and develop greater ZKP skills. With no knowledge on ZKP prior to the hackathon and after several attempts at ideas, we realized that the problem that needs to be addressed is a skill entry-barrier problem. We decided to create a more beginner-friendly application that develops a greater intuition towards ZKP and helps people go into the "rabbit hole" of blockchain technology. EDTech is becoming more common during and after the COVID era, and this EdTech protocol lies at the intersection of the emerging fields of both EdTech and blockchain.
What it does
Implements zkSnarks using Circom and SnarkJS which receives two private inputs and one output proving that it can factor a number. This is an interactive gateway that we believe can serve as the "rabbit hole" entrance for people wanting to learn about this amazing technology. After running the smart contract, the user is instantly provided with an explanation of what happened step by step in simple mathematical language and links to continue his learning journey.
How we built it
We built it using React, Circom, SnarkJS, and Solidity. Before this hackathon, I only had knowledge of React and Solidity, most of my time was spent first learning what ZK even was, and then we invested our time into figuring out what we wanted to build. After figuring that out, we started to figure out what tools we would need to accomplish our goal. Most of our time was spent learning these technologies. I already knew some Solidity and could've done the EVM path, but I saw this as an opportunity to do a deep dive into one of the most fascinating topics I've encountered in the blockchain world.
Challenges we ran into
Challenges we ran into could fill the whole page, because learning Zero-Knowledge Proofs, and especially kSNARKS in a short time period, has been one of the most intellectually challenging experiences in my life. While brainstorming and thinking of implementations of this technology, we debated and researched for hours a good use for this technology. And the main problem was two-fold: there were so many problems this technology could solve but they were also extremely technically challenging projects. But we still needed to do it, because we were learning so much. So after debating, we decided that the most important thing we could do was make the entry barrier easier for people from all backgrounds and encourage people to dive into important topics like these.
Accomplishments that we're proud of
The thing I'm most proud of is that we didn't give up. There were too many times when we didn't understand so many things, we had no idea how to even start coding a tool related to ZK but still tried. At the end of the day, we were able to create a ZK prover that receives two inputs and uses zkSnarks to prove that it can factor a number. This for us was huge because it represented three days of countless hours of work and sleepless nights dedicated to this.
What we learned
What's next for ZKLearning
In the end, I wasn't able to implement the functionality I wanted. I basically wanted to connect the front-end with the smart contract so that after the user inputs two numbers and submits, they would receive a detailed explanation of what ZK did, and then links and resources to guide them in their learning. That's the ultimate goal, create a ZK entrance to a rabbit hole.
Built With
- circom
- javascript
- react
- snarkjs
- solidity
Log in or sign up for Devpost to join the conversation.