On May 2nd, we announced the Scrypto Oracles Challenge to celebrate Scrypto v0.4 release. This 25-day challenge asked candidates to design an Oracle solution to bridge between off-chain data and Scrypto components, or a way for on-chain components to communicate back out to off-chain systems. Among the many impressive and creative submissions, our Runner-up stood out by not only the quality of his work but also his background story.
We chatted with Peter Kim to understand how he could start with zero coding knowledge only two months ago and then take second place in a global competition. He is an inspiration to all newcomers to coding.
First of all congratulations on your outstanding achievement with Scrypto. You have made an amazing impression on the RDX Works team, as well as the Scrypto community. How do you feel now?
I feel really great! I never thought that I would get second prize in the first place.
You started with zero coding knowledge and then became the run-up in a global competition within only 2 months. That is really impressive. What made you start with Scrypto?
I have always dreamed of a “utopia” where everybody is treated equally, individuals are valued for their talent and ability not by power, wealth or connections. About 2 years ago, I found DeFi and it sparked a light in me. Since then I have believed that distributed ledger technology (DLT) has the power to help me realise my dreams. In Dec 2021, I was on the search for the public DLTs that have the capability to support the whole human society. Luckily I found Radix DLT, got my Radix Revelation, and fell deep into the rabbit hole.
In early 2022, Scrypto/Radix Engine was introduced and that was when my dream could come true with Radix. That is how I began my Scrypto journey.
Can you tell us more about the Radix Revelation that you just mentioned?
I learned about the problems of smart contracts and the trilemma of Defi: decentralisation, security and scalability. With the keyword “atomic composability” I found Radix, the only smart contract platform that has “infinite scalability” and “atomic composability” which are crucial to build my “utopia”.
What a noble cause! You must be very talented to fulfil that.
Actually my experience with code was only “if, else” and “for loop” basic functions from high school Pascal class. Also, my experience with economic study in college helped in understanding the concept of “component”, “vault”, “bucket”, “badge”, “resource'' through asset-oriented articles about Scrypto and Radix Engine. The thought “learning Scrypto is just like playing with assets, so it would be somehow familiar and easy” kept me motivated in the beginning.
As a self-taught person, I read Scrypto docs and did everything as instructed until I could run my first “Hello world”. I even tried to tamper with the code in “metadata”, “initial supply number” and “vault take number” and was really happy when I saw `[INFO ] My balance is: 1000000 PeterToken. Now give away 10 tokens!` appear on my screen.
It sounds like a lot of work. Did you have any difficulties along the way?
Yes, I stopped during February and March since I was too busy. Time management was the difficulty I had. But in April I continued again, trying to tamper with every Scrypto code example and the Libson tutorial codes.
Self-taught is a lonely journey. How did you deal with it?
At some point, I started helping Scrypto community members. It was motivating to know that I could help others.
I discussed governance with community members (mostly VandyILL and academiascrypto.com) at governance Radix channel.
I joined hands with Chris on Adept’s GitHub (that’s when I first learned about “how to pull a request on GitHub ''), and tried to create governance, and vote blueprints for the project.
And Omar, Scrypto community liaison, was the most important person in my Scrypto Journey. He was my greatest motivator. He raised my hope that “if he can do it, so can I”. That later became one of my mottos to share with the community.
And then you decided to join the Scrypto Oracle challenge?
I must admit the challenge prize was appealing but I felt anxious thinking about my limited coding skill. However, I thought, “why don’t I just participate then, even if I don’t win a prize, at least I can learn a lot from the team’s feedback”. That was when I asked Omar about his experience and put all effort into building an Oracle package called NeuRacle.
Basically, NeuRacle = Neural Network + Radix + Oracle. “Neural Network” is a distributed network of neural, some “visualisation” of people with ideas, skills together create NeuRacle Network.
On building the Scrypto blueprint, I checked the Scrypto example (mostly Omar’s RaDex) to learn how those codes applied to my idea.
My first prototype was a component that got user queries to create one of two Data Pools types, Decimal and String. People pooled medium tokens into it and got data from time to time, allowing users to withdraw tokens. Unfortunately, this contained some extra for loops, which would not be effective in terms of DApp. So I changed my perspective: burn all used tokens immediately and push users’ token management responsibility back to users.
Eventually, I came to the common centralization problem of an oracle: If an admin updates data they can tamper with that data and scam users, even if it is an automated machine on the system which updates the data. So I worked on the dApp design again.
When searching for a solution, I found Komodo Trustless Oracle which used the Consensus model to validate price data on-chain. I used this idea, along with Cerberus’s DPoS Consensus model to solve this problem. I also used an API for better automation on my NeuRacle. These both became the two stars of the NeuRacle prototype.
When the NeuRacle prototype finally worked I went through @devmannic’s Hareswap - the first place of DEX Scrypto challenge - to learn his organised demo by bash script + transaction manifest. Although I could not understand most of his Rust code, I was able to learn from his work using Bash script. Thanks, @devmannic!
After finishing backend-testing code I tried with the front-end. Check the snowpack page, the gumball PTE example.
So I used Vite + React to build my front-end. From this point, I learned a lot of React coding from Chris’s Pouch. Thanks, Chris!
The NeuRacle logo is designed from my hometown’s symbol: Halong Bay, Vietnam
Peter’s key takeaways
I’m pretty amazed that I got second place. I’m now a living example of my own thought, “if he can do it, so can I”.
I wish to share this with the Radix community, contribute to a bigger Scrypto community, and join hands in building the future of DeFi.
Other than that, here is what I learned:
Background: You might not need any coding or economic background but one of the crucial parts is to have mathematics and logic skills.
Ambition: Mine was to create a “utopia” where everybody is treated equally, individuals are valued because of their talent or ability, not by power, wealth or connections.
Mindset: I realised that I can make my dreams come true by learning Scrypto and building on Radix.
An asset-oriented mindset: “Learning Scrypto is just like playing with assets”. Develop an asset-oriented understanding about Scrypto and Radix Engine.
Close-knit and supportive community: get involved in our communities, ask questions, offer help to others and ask for help when needed.
GitHub: Have a GitHub account. It’s a great tool to share, learn, build open source projects and it also helps you to keep track of your Scrypto journey:
Summary of my reference materials:
- Follow all of the Scrypto start-here channel on discord, including installing the toolchain, trying and tampering with the examples, and joining in beginner-channel.
- Types and functions of Scrypto toolchain in the Scrypto docs when building your own projects.
- Omar’s RaDex when using the functions and methods on Rust-Scrypto (recommended for newbies).
- @devmannic’s Hareswap when using manifest, testing the blueprint by bash-script.
- Chris’s Pouch when building a workable front-end dApp using Babylon PTE.