The second Scrypto challenge is over and we are ready to share the results! This second edition, which started on May 2nd, 2022, and lasted for 25 days, asked the participants to build an oracle blueprint in Scrypto that can make off-chain data accessible directly from a Scrypto component. Even though this challenge was around a more complex and abstract subject, we still had many good entries and some excellent winners. This just goes to show how much the community has grown and leveled-up in Scrypto since the last challenge.
Before we announce the three winners you should know that the submissions were judged on the following criteria:
- Quality and asset-orientedness of the code
Did the developer follow asset-oriented design patterns such as identifying users with badges and letting the user withdraw instead of sending tokens directly to an address?
- Breadth of functionality
The more the user of the blueprint and component can do, the more points the developer gets.
- Creativity of the concept
Did the developer implement something that we didn’t think about or found original solutions to attack a specific problem?
- Quality of the documentation and comments in the code
Did the developer write documentation explaining how the blueprint worked and how to test it? Did they write comments in their code to help people understand it?
We were extremely impressed by the quality and creativity of the submissions and every participant should be proud of what they built. While each participant will be rewarded for their effort with a special edition NFT (which will be sent once Babylon is out) and a Radix-themed t-shirt, we still had to choose only three champions for the XRD prizes. So without further ado, let’s get to the announcement.
1st place: Callback Scheduler by Backyardcoder
Backyardcoder tackles a real problem with this oracle which is the difficulty in scheduling things on distributed ledgers so that they are executed at a later point in time. By using a combination of off-chain systems and callback functions, Backyardcoder solves this problem through their callback scheduler oracle which gives blueprint developers the power to schedule method callbacks to happen at a specific epoch or wall-clock time.
Backyardcoder did not just stop there! Their submission shows a deep understanding of the security implications involved with callback functions on a public distributed ledger. Their submission tackles these security concerns in a beautifully elegant asset-oriented way, where badges are used to authenticate the oracle component and the entity requesting the callback. Their system is very well documented and includes tons of comments which make their code a pleasure to read for everybody no matter what their experience level with Scrypto is. In addition, their system offers a great deal of functionality which makes it useful to a wide range of developers.
There are many applications which would greatly benefit from the ability to have certain methods executed at a certain epoch or wall-clock time which makes this oracle a very useful one, especially more so for dApps which asynchronously rely on time.
Backyardcoder seems to already have plans to extend the functionality of their oracle to allow for callbacks to be called when arbitrary conditions are met. We are excited to see how they develop their oracle in the coming weeks and months and eager to see what new functionality will be added!
Backyardcoder will receive the first prize of $2750 in XRD.
“Developing with Scrypto is just awesome. It is simple, intuitive, and secure. Even as a beginner in blockchain programming, I can be sure that my code behaves the way I expect it to”. – Backyardcoder
2nd place: NeuRacle by Peter Kim
The core functionality provided by Peter’s oracle is the ability to retrieve data from any public API and make use of that data on-ledger which is a powerful idea that opens the door to many interesting and useful applications that rely on data from off-chain APIs.
Centralization is one of the key issues with today’s oracles. The main issue lies in: if the data provider is centralized, then how can you ensure that the data provided to you is indeed correct and has not been tampered with by the provider?
This is one of the key issues Peter attempts to address with their oracle. The Oracle allows for multiple different validators to be registered to their oracle. A validator in Peter’s system is an off-chain entity that retrieves data from the APIs specified by the users. When the user requests some data, all of the validators retrieve this data from the user-specified APIs and the system requires that ⅔ of the validators reach a consensus on what the data was. Then, honest validators are rewarded by the protocol while dishonest validators are punished.
Despite Peter being a new member of our community, he was able to build an impressive oracle with a handful of blueprints, inter-component calls, and two dozen transaction manifest files that demonstrate how their oracle can be used. Looking at Peter’s code, there is no denying that this submission had a lot of effort put into it.
Peter Kim will receive the second prize of $1500 in XRD.
“I started Scrypto with almost no coding background just 2 months ago before the challenge. Scrypto is a real game-changer, it's so easy that made an amateur like me feel like an expert just for only 2 months of learning. It's so logical that you can create dApps with no room for exploits. It's so magical that you can create a ready-for-scale dApp without you even notice about it! My achievement in this challenge is only proof for the whole Radix Community that: If I can make it, you can also make it. I'm seeing so many Scrypto newbies at the community right now and just can't wait to become their competitor in the next challenge” – Peter Kim
3rd place: Tweeter Oracle by YetininOlivierCoulibaly
Yetinin’s submission is a creative and interesting one! Their oracle allows users to get data from Twitter and use that data on-ledger. The data that the oracle currently has support for is: “Who follows a specific account?”, “Who has liked a specific tweet?”, and “Who has retweeted a specific tweet?”.
The ability to have such data available on-ledger allows for many interesting and creative blueprints to be made.
This submission has a good amount of documentation and comments throughout the code, combined with how clean and concise the code used is, it makes this submission a pleasure to look through and makes it very good learning material for people interested in
YetininOlivierCoulibaly will receive the third prize of $750 in XRD.
“Thanks for this great opportunity to participate in this challenge! I'm a. Net developer who has recently joined the Scrypto community. The examples from the community and Clément's advice when I submitted the product-market example allowed me to get up to speed quickly. This increase in skills has strengthened my resolve to take part in the challenge.” – YetininOlivierCoulibaly
Honorable Mention: VRF Oracle by dekentz
Dekentz has been exploring the concept of VRFs and their submission showcases how a VRF Oracle can be built with Scrypto. Their submission is a very high-effort submission that attempts to implement an entire 40-page VRF-related publication in Rust and Scrypto. Offering random numbers on a public ledger is a deep problem, and this entry shows strong work in this direction (although to be clear, we haven’t analyzed it to a point to be able to say if the results can be practically relied on by app developers).
Congratulations to the three champions and everyone who submitted a blueprint to the oracle Scrypto competition.
You are all super early in this ever-growing ecosystem! Keep an eye out, in the Scrypto developer program emails we send every two weeks or on the Radix Discord, for the announcement of the next Scrypto competition, which will be a lot bigger than the two previous ones.