Challenge Task 2022
This semester's Challenge Task (CT) is to implement a Decentralized Application (DApp) deployed on the blockchain. The choice of use case to be implemented depends on the group's choice, which can range from gambling systems, NFT marketplaces, or any decentralized system. The groups shall inform the teaching assistants on the topic and discuss the feasibility of the proposal. Each group must hand in their proposal until March 10, 2022 via e-mail. One can check past CTs (e.g., Challenge Task 2017, Challenge Task 2018, and Challenge Task 2019) to have an idea about examples of applications.
Even though the groups are free to choose the application to be implemented as a DApp, all groups must ensure that all requirements are met and follow the defined deadlines. The necessary information to fully accomplish the CT, assumptions, libraries, tools, and impact on the grade are detailed in the next sections.
Requirements
Each CT group is free to decide on the design of the DApp, for example, how the communication with the on the use-case and how to interact with the system. However, for each CT group, the following key requirements need to be met:
- The core functionality must be implemented and executed entirely within Smart Contracts (SC).
- The prototype must validate the proposed use case.
- The user must interact with the DApp via a Graphical User Interface (GUI), for example, a Web-based one.
- The group must deliver a self-contained report documenting the SC, its operation, and the source code.
Further suggestions include:
- The solution may use existing libraries and code, but those must be allowed to be published under APL or another comparable open software license.
- The final report shall document the application, and its operation, mainly with all the details needed to understand the solution to be shown at the presentation and demo time slot. The report should contain approximately 5-10 pages, and be written in a technical manner.
- The source code must be well documented and contain installation guidelines.
Assumptions
The following facts may be assumed:
- The Smart Contract can be deployed in a private testnet or in one of the Ethereum testnets.
- You can use just one node (Ganache, Parity or Geth client) with multiple addresses.
Note: Further assumptions, which are not restricting these assumptions above, can be made according to each group's approach.
Libraries and Tools
The items below represent supporting libraries, tools, or references that are recommended to be taken into consideration.
- Ethereum is the most popular public blockchain for SC. Supervisors are familiar with geth. Also, Ganache (https://truffleframework.com/ganache) can be used to simulate a private Ethereum blockchain.
- A tutorial to start developing in Solidity, some examples of SCs, as well as instruction to set up a private testnet and previous CTs can be found at https://gitlab.ifi.uzh.ch/scheid/bcoln
- The Solidity documentation can be found at https://solidity.readthedocs.io/en/develop/
- To interact with the Geth client using JavaScript, one can use the web3.js library
- The documentation for the Web3 JavaScript API can found at https://web3js.readthedocs.io/en/v1.2.9/
- A compilation of material and information about Ethereum and Solidity can be found at https://github.com/willitscale/learning-solidity
Organization
- The groups shall be balanced in expertise and work-wise. Every group shall have at least one development expert. During the CT, the group may meet every week during exercise hours to work on the task and discuss the next steps.
- The groups shall utilize their homework times to work on the CT, besides the exercise time slots assigned on Thursdays.
- The groups shall determine and set-up an internal project plan with the overall milestones, responsibilities, and timings provided therein.
- Distribute the workload so that each group member gets a fair load of work.
- Do not miss the opportunity of discussing details with the Teaching Assistants; he/she might give you useful hints.
- A midterm report to the supervisors is expected from the group in order to update them with the development of the application.
Groups and Support
During the challenge task each group will be able to ask questions and get support from their supervisors:
The groups that not discussed or sent their topics to the teaching assistants are encouraged to contact them as soon as possible.
# | Group Name | Participants | Presentation day | Midterm Report | Final Report |
---|---|---|---|---|---|
1 | Apollo |
Oliver Kamer, Tom Pichler, Simon Giesch, Simon Moser, Flurin Knellwolf, Elias Schuhmacher |
19.05.2022 | ✔️ | |
2 | Zeus |
Luis Torrejon, Alexander Lerch, Paul Luley, Qian Miao, Shilpa Kaplesh, Manyi Wang |
19.05.2022 | ✔️ | ✔️ |
3 | Hera |
Turki Alahmadi, Euxane Vaz Pinto, Artem Vasilev, Daniel Jones, David Lebrec, Davide Busolin |
19.05.2022 | ✔️ | ✔️ |
4 | Nike |
Reto Odoni, Dean Heizmann, Dimitr Degkwitz, Sike Chen, Shuyue Wang, Yiwen Wang |
19.05.2022 | ✔️ | ✔️ |
5 | Iris |
Yiming Hu. Guanda Zhao, Zhishan Yan, Minghao Li, Yuanhao Zhu |
19.05.2022 | ✔️ | ✔️ |
6 | Hades |
Louis Bienz, Joel Watter, Janik Lüchinger, Dace Dreimane, Moritz Jenny, Raffael Botschen |
02.06.2022 | ✔️ | ✔️ |
7 | Nemesis |
Zhengyuan Pan, Guanyu Chen, Liu Yuhang, Zhang Mo, Diana Dragos |
02.06.2022 | ✔️ | |
8 | Athena |
Janosch Baltensperger, Zehra Turgut, Domenic Luca Fürer, Lennart Lou Jung, Gabriele Brunini |
02.06.2022 | ✔️ | ✔️ |
9 | Poseidon |
Dave Basler, Dario Gagulic, Jason Browne, Lynn Zumtaugwald, Ben Murphy |
02.06.2022 | ✔️ | ✔️ |
10 | Demeter |
Jiaming Tong, Ying Fan, Yuhan Lin, Zishan Wei, Qianhui Wang |
02.06.2022 | ✔️ | ✔️ |
11 | Tyche |
Mithat Samet Kaskara, Andrina Vincenz, Jiaqi Zhang, Chuqiao Yan, Charlotte Eder |
02.06.2022 | ✔️ | ✔️ |
12 | Artemis | Denys Trieskunov, Daniil Ratarov | 19.05.2022 | ✔️ | ✔️ |
Presentation and Evaluation
Challenge Task (CT) presentations and demonstrations will take place on Thursday 19.05.2022 and Thursday 02.06.2022 from 14:00 to 15:45 hours. On these dates, the groups will present and demonstrate their results. Presentations and demos on these two dates will take place in room BIN 2.A.10
- Each group will have ~15 minutes for presenting their design and to demonstrate the working application (including presentation and demo). The presentation shall include slides. For the demonstration, the group must run one (or more) use-cases of your application, showing that it meets the defined requirements and successfully implements the proposal. Note that it is expected that everybody contribute towards the presentation and demo in a organized fashion.
- Remember that the audience will not only be interested in seeing whether or not your Smart Contract works, but more specifically, how the designed mechanisms (e.g., SC communication, random number generation, betting, and so on) for your DApp work behind the scenes.
- After the presentations, each group will be evaluated. The following criteria will be taken into consideration to rank the groups: software design and implementation (overall design, and usability), teamwork, presentation, and demonstration of the solution. The winning group (i.e., the one who sums more points) will receive a prize and the "BCOLN Challenge Champion 2022" award.
- Each group shall hand-in by e-mail (killer@ifi.uzh.ch, vonderassen@ifi.uzh.ch) the report and source-code of the Smart Contracts until 18.05.2022 - 23:58
CT Grading Impact
The CT grade will impact in the final written exam grade in the following manner:
|
|
Result
Fulfilment of the Requirements
Requirement / Group |
Apollo | Zeus | Hera | Nike | Iris | Hades | Nemesis | Athena | Poseidon | Demeter | Tyche | Artmeis |
---|---|---|---|---|---|---|---|---|---|---|---|---|
RQ 1 |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
RQ 2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
RQ 3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
RQ 4 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
✅ = Fulfilled ❎ = Not Fulfilled
🏆 Winner CSG-award: Group 8 (Athena) 🏆
Reports and Source Code
Please find the report and source code of each group for download at https://gitlab.ifi.uzh.ch/scheid/bcoln/tree/master/FS20. Source code is licensed under open source license. In case of questions, please contact the respective supervisor.