Waves Labs Announces Recipients of 3rd Special Batch of Grants
Check out the creative suggested solutions for decentralised applications (dApps).
Three weeks ago, we announced a special batch of grants to fund decentralised application projects developed with Waves’ native programming language, RIDE for dApps. We suggested four use cases that could be implemented using RIDE: Auctions, Voting and democratic tools/DAO, Prediction markets and Identity management/Oracles.
No preliminary application was necessary. To be eligible, a developer simply had to choose a use case, create a solution and submit the final result, including source code on GitHub and links to a demo and a description of the implemented case with instructions for using the solution.
The first applicants to deliver the required materials for a workable solution for each use case would be awarded a grant of 1,000 WAVES each.
It didn’t take long for talented developers eager to explore RIDE for dApps to come up with working solutions for all these use cases.
Since the main goal of this batch of grants was testing the possibilities of the RIDE for dApps language, the solutions were developed as prototypes. However, they have the potential to be developed into fully-fledged products.
We are grateful to all the applicants. Now, let’s check out the winning solutions.
Voting and democratic tools / DAO
The concept of a decentralised autonomous organisation (DAO) is vital for blockchain. A DAO, controlled by rules set in smart contracts, ensures transparency and control strictly by its participants, without any central authority.
Suggesting this use case, we expected a simple and universal DAO prototype that could be used — for instance, for running a company, investment fund or charity organisation. The winning solution was proposed by Aleksei Pupyshev.
Alexei developed a simple DAO dApp for voting and collective investment in projects. In his solution, multiple accounts can deposit their funds and safely withdraw them without any outside interference.
WAVES tokens can be stored in a dApp wallet. Tokens can be transferred to the wallet through a callable deposit function or withdrawn from the the wallet through a callable withdraw function.
Demo: https://dao-waves-demo.herokuapp.com/ Source code on GitHub: https://github.com/AlekseiPupyshev/RIDE4DAPPS-MVPS/ Description: https://medium.com/@alexpupyshev/how-to-waves-dapps-dao-example-using-ride-language-for-smart-contracts-3b0ca55e48a8?sk=17c38edaf3698255013f0afe391d8061 Grant value: 1,000 WAVES
Blockchain allows secure and immutable storage of personal data, making the technology eminently suitable for identity management and verification.
Identification of users by their phone numbers or email addresses has long been used in online banking. We suggested that a similar system be implemented on the blockchain.
Under this use case, we wanted a versatile tool that would facilitate tying a user’s email address to their Waves account to facilitate secure transfer of tokens to that email address.
In response to this task, we received several high-quality solutions that complement rather than duplicate each other. We therefore decided to pronounce several solutions as winners, releasing 1,000 WAVES grants to all of them.
Developer: Kirill Madorin
Solution: A console application on node.js for identifying email addresses and sending WAVES over email.
The app is powered by a smart contract that stores pairs of email addresses and corresponding account addresses and facilitates invoking a function for transferring WAVES to the account address linked to the email address.
The algorithm for tying an email address to an account address on the Waves blockchain works in the following way. At every verification request, the oracle sends a confirmation code to the email address and records to its own address the email address and the hashed verification code. The email verification function checks the verification code and email address against those recorded by the oracle and, in the case of a match, the email address and account address pair will be written to the contract’s state.
Demo: https://asciinema.org/a/GQceMMJyefZlUykd6xTcAdoal Source code on GitHub: https://github.com/kmadorin/ride-identity-console Description (in Russian): https://medium.com/@kirillmadorin/делаем-digital-identity-сервис-на-смарт-контрактах-waves-часть-1-консольное-приложение-на-node-js-6e510078356d Grant value: 1,000 WAVES
Developer: Artem Badrtdinov
Solution: A web app for identification of email addresses and sending tokens over email. The app facilitates transfer of any tokens issued on the Waves platform to any verified email address.
The app’s functionality includes:
- Request verification of a user’s email address. The oracle sends an email with a verification code and stores a hashed (SHA-256) verification code on the blockchain.
- Verify a user’s email address by calling the contract with the email address and the verification code. The smart contract will check the code and, in the case of a match, will save the email address pair.
- Send tokens to an email address by calling the contract with the email address and an attached payment.
Demo: https://bodrych.xyz/ Source code on GitHub: https://github.com/bodrych/waves-identity Description: https://forum.wavesplatform.com/t/identity-management/13643 Grant value: 1,000 WAVES
Developer: Igor Shadurin
Solution: A web app for identification of email addresses and sending tokens over email.
Ihar’s solution, Waves Identity, facilitates checking the user’s email address from any smart contract. This is done by calling the InvokeScript function with the oracle address and sending the user’s email address to it.
The server part of the oracle reads requests for checking email addresses every minute. When a new request is received, the oracle creates a unique code for the email and sends it in an encrypted form to the email and to the blockchain.
Upon receiving the message, the owner of the email address can enter the received code and send it to the oracle. The oracle’s smart contract checks the code and, if it is correct, writes a confirmation to the blockchain.
Subsequently, the confirmed email data could be used for various purposes like, for instance, sending WAVES to email addresses.
Demo: https://testeron.pro/waves-identity Source code on GitHub:https://github.com/IgorShadurin/waves-identity Description: https://firstname.lastname@example.org/waves-identity-3ed03c0c96ba Grant value: 1,000 WAVES
As participants in an auction need to be sure that any manipulation is ruled out, transparency is a vital condition for successfully running one. Transparency can be achieved by using blockchain, which facilitates immutability of data for all bids and the time at which they were made.
Under this use case, we expected a solution facilitating creation of auctions for token issuance on the Waves platform and setting various parameters, such as duration, minimum bid price etc. A solution satisfying all these requirements came from Igor Shadurin.
Once an auction has been created, the lot appears on the website’s main page and users can start making bids and eventually redeem the lot at the highest price. Once the auction is completed, the winner can pick up their tokens by paying their bid.
Waves smart contracts facilitate absolutely transparent buy/sell orders. The seller can be assured that their tokens won’t disappear before the auction is over, and the buyer can be assured that they will collect the lot.
Demo: https://testeron.pro/waves-auction/ Source code on GitHub: https://github.com/IgorShadurin/waves-auction Description: https://email@example.com/waves-auction-c90599894a79?sk=1c6e321d7d70ce3c15539694efdd2bb2 Grant value: 1,000 WAVES
Prediction markets are created for trading the outcome of various events, with market prices indicating the probability of the event in question.
The concept applies to a binary event: where something either will or will not happen. For instance, in the finance world, participants trade with contracts where the payoff will vary depending on the outcome of a future event. Prediction markets make the result of this future event tradable.
Essentially, prediction markets are about placing bets on the probability of the outcome of an event, such as elections, sales of a company, price fluctuations of commodities, even weather changes.
Similar to auctions, in the prediction markets segment, blockchain facilitates transparency, making prediction markets a promising use case for the technology.
For this use case, we wanted developers to come up with a decentralised app that facilitates creation of new events and trading in open prediction markets, also ensuring a transparent mechanism for determining a win distribution of awards.
Aleksei Pupyshev implemented a solution fitting the description. He developed a simple Prediction Market dApp (along the lines of Augur or Gnosis), which allows any user to create new markets, trade shares and win if the prediction is correct.
Demo: https://waves-prediction-market-demo.herokuapp.com/ Source code on GitHub: https://github.com/AlekseiPupyshev/Waves-Augur Description: https://medium.com/@alexpupyshev/how-to-waves-dapps-prediction-markets-example-with-ride-language-part-1-27b642f2fd0d Grant value: 1,000 WAVES
We would once again like to thank all the applicants for Waves Grants. We are currently working on the next round of the main grant program, and we will announce the recipients shortly.
Recently, we launched Waves Incubator, a strategic long-term initiative designed to support the development of Waves-based solutions and specifically focused on dApps built in the RIDE language. You can learn more here.