Creating a Decentralised Bidding Platform with Reach
Earlier this year, I was on a developer community channel on slack looking for random opportunity for developers. I stumbled upon a post talking about a certain bounty hack. I was curious about what it entails. At the time, I just started learning about block-chain development. I was able to write very basic contract in solidity. I thought to myself, "may be this is an opportunity to get a proper understanding of this blockchain thing". That is, learning by building actual project.
The Team
After registration, all participants were paired into teams of at least two developers. Unfortunately my team member was indisposed and I had to work solo on the project. It was challenging as I had to design, wire-up the frontend and also work on the contracts. It was however a rewarding experience.
Deadline
We had about 8 weeks to hack. I wrote down all my deliverables and set milestones for every week. I had weekly check-ins with my mentor and this kept me motivated. I met the deadline and completed the project on time.
The Project
I opted for "Timed Auction: Highest Bidder Wins" amongst other available projects. It is a bidding platform that allows users to create Auctions and participants are allowed to place bid on items they love and the highest bidder wins after a specified time has elapsed. Technically speaking, when an auction is created, a contract is deployed and participant connects to this contracts with their wallets in order to place bid.
View the project demo on youtube
Reach
The project was built with Reach and deployed on Algorand Network. I picked up the Reach language in little to no time.
Reach is a high level web3 language that is built from the ground up. Syntactically exactly like javascript so full-stack developers feel right at home.
Rather than pausing life for a year to learn a low level language, full-stack developers are able to learn reach in six weeks or less, and then build their own fully functioning DAPP.
A feature of reach that surprised me is the ability to deploy to several blockchain network e.g Ethereum, Algorand etc from a single code-base. This eliminates the need of learning several languages.
My Experience
At the beginning of the hack, I had my doubts. "I might not meet the deadline ๐", "where do I start from? ๐ค", "can I do this alone?". These were some of the thoughts that were going through my head. I summoned courage and went straight to work.
I sketched the user flow and drew some wire-frame for the Dapp UI. I went ahead and converted the Low-fi designs into high-fi prototypes. I worked on screen conversions afterwards. When the UI was completed, it was time to start working on the contracts.
While writing the contracts, I made reference to reach's comprehensive documentation several times. I had few challenges while writing the contracts but the discord community was a life saver. The first time I asked the community for help was when I had a compilation error. There was a version mismatch between my reach compiler and the frontend library.
When the contract was ready, I compiled and built it and then wired it up with the frontend. I carried out several tests and fixed all issues that I encountered.
If given the chance to enhance/expand upon the features/functions of this app, I would improve on the UI design. I will also expand the scope of the auction items by categorising the bid items.
Conclusion
Developing with Reach made my life so easy. With the powerful verification engine made available by reach, most of the challenges that comes with building DApps were taken care of.
Formal verification is baked into reach's compiler so that every compile authenticates that funds won't be locked in a contract and validates whether participants and frontends are honest or not.
Subscribe to my newsletter
Read articles from Jafar Kamar directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Jafar Kamar
Jafar Kamar
A result-oriented software engineer, offering a strong attention to detail, excellent problem-solving skills, and the ability to work in fast-paced team environments. I have experience working on scalable architectures, micro services, cloud infrastructures and blockchain technology applications. I bring enthusiasm, heart with a love of shipping code and fixing bugs to my work.