Table of contents
Blockchain technology is now a buzz word on a global scale, where most say and less do the actual work. To combat this, Blockgame, (blockgames.gg) launched her first cohort of the blockchain internship , the application was open to any one willing to learn more about blockchain. With a series of classes and materials to help you get started. You can sign-up for the next cohort here (blockgames.gg).
During the second stage of the internship, we were divided into groups of seven. And each group will be competing with other groups for their submission, say a physical COD, where your armor is your prior programming experience and zeal to learn more.
My Team Member
In my team, Team Nebula,( Feel free to check out the project on github, link here ) we have,
- Seun Emmanuel (@prïmal.eth) | Team Leader
- Joseph Achonu (@josephachonu)
- Augustine (@legally_6lack)
- Temitope Osifalujo (@iam_topwhiz)
- Sana Udoekong (@_snowalmond)
- Eyimofe (@Tedtecch)
- Lukmon Abdulsalam (@litmus13lukman)
The challenge
It was a shocker when I saw this industry standard problem statement, which goes thus,
" Nestcoin is a film house that would like to further engage with their audience.
They would like to create a "currency", which would be used to reward loyal customers. The currency could later be traded for backstage passes and other perks. Interestingly they began accepting crypto-based payments a year earlier and would like to harness the power of Web3 to implement their solution.
You and your team have been tasked with developing a solution. You will also be required to develop a system that allows them to batch transactions together so they can distribute their "currency" as quickly and efficiently as possible.
You can assume the largest batch of addresses to distribute to would be no greater than 200."
Our Approach
On seeing this, I came up with a flow, which shows the high level design of Nestcoin Film house.
But the duration for the project was 4 days. We had to prioritize the features we want to add for the presentation and then update later after the program.
We agreed to work on the following Create the ERC 20 Token (Nestcoin) with an unlimited supply. Mint the token(Admin) Transfer the tokens in batches and from a csv file (Admin) Admin Access to one owner, who can later add new admins Event for distribution of tokens. adding new admins
Then later added this features for usability sake Search users and the amount of Token they own A system health feature, that will trigger Self destruct the contract in case of any hack.
Some of the major trade-offs we made were, making the supply of token unlimited,
We agreed on this because, We scoped Nestcoin Film house to operate only in Nigeria at the moment, and about 80% of the customers of any film house love traveling, if let's say this 80% own at least 90% of the tokens supply and are not willing to visit Nestcoin in a year. Would the Nestcoin administrator stop giving out tokens to new customers because they are almost out of token?
Assigning Tasks I and Seun, decided to work on the frontend, while Augustine, Joseph and Temitope decided to work on the Smart contract, and Eyimofe and Sana worked on Testing the contracts.
Client Side To move fast,I quickly created a simple UI for the Admin, and for development, we agreed to work with Google material UI. Where Seun pulled some stunts with his frontend skill, The whole process was exciting as we had to create a uniform look for the application.
Smart Contracts The ERC20 token was created using the OpenZeppelin library and it was named, NCF. Also for the access control, the open zeppelin access control library was used. We also added an extra functionality of self destruct, to prevent hacking.
Outcome and Lesson
The final project can be access here, (nebula-1.surge.sh) With All the features highlighted above present on the deployed version.
Though there need to be some improvements in the user interface, but we ensure that we upheld the Function over form principle.
After the presentation, We all agreed we didn't do well as expected, because seeing other teams present their project was breath-taking, and if we were the judges, it will be an 100%.😹 😹 But to my surprise, when the result was announced, by the coordinator, we came first out of approximately 20 teams,
Some of the lessons I personally learnt during the project are:
- Team progress is equivalent to individuals progress if you are an active member of the team.
- Virtually anything can be built on the blockchain, you just need the right set of information at the right time while working with the right people.
- Dynamic skillset thrive better in blockchain development
- And lastly, all you need to get started with blockchain development is not reading alone , but building.