HS20
Challenge Task Winner Advanced Distributed Systems & Blockchain HS 2020
The winning group is: Florian Bitterlin, Andreas Baumgartner, Pascal Schürmann
Florian, Andreas, and Pascal implemented a donation platform and used the blockchain to keep track of donations. They used Spring Boot with a PostgreSQL database and for the frontend React/Redux that connects via MetaMask to the Ethereum network. (Announcement)
The price is sponsored by Axelra, a tech venture builder that accelerates digital business models.
- Lecture dates 14.09.2020 - 18.12.2020
Due to COVID-19, this course will be remote. The lecture will be recorded and uploaded to this page, the exercise will be via MS Teams. Please join MS Teams with the following code: iz0y31j
Advanced Distributed Systems & Blockchain (ADSB)
Nr | Date Lecture | Preliminary Topics | Who |
---|---|---|---|
01 | 16.09.2020 | Admin, Challenge Task, Repetition VSS | Thomas Bocek |
02 | 23.09.2020 | Repetition VSS | Thomas Bocek |
03 | 30.09.2020 | WebRTC | Thomas Bocek |
04 | 07.10.2020 | P2P and DHTs | Thomas Bocek |
05 | 14.10.2020 | Ethereum and Solidity | Thomas Bocek |
06 | 21.10.2020 | Tezos and more Solidity | Thomas Bocek |
07 | 28.10.2020 | Blockchain and Tezos | John Newby and Alessandro De Carli |
08 | 04.11.2020 | Mining, Algorithms for Distributed Systems | Nello Tolino, Thomas Bocek |
09 | 11.11.2020 | Bitcoin Layer 2 Scaling | Christian Decker |
10 | 18.11.2020 | Virtualization Details | Thomas Bocek |
11 | 25.11.2020 | Exam Preparation | Thomas Bocek |
12 | 02.12.2020 | HTLCs, Payment Channels, Cross-chain Atomic Swaps; Challenge Task Presentations | Students, Thomas Bocek |
13 | 09.12.2020 | Ethereum 2.0; Challenge Task Presentations | Students, Thomas Bocek |
14 | 16.12.2020 | Fragestunde und Q-Feedback, live-lecture (no exercises) via Microsoft Teams | Thomas Bocek |
15 | 06/13.01.2021 | Beratungswoche, live-lecture (no exercises) via Microsoft Teams | Thomas Bocek |
The lectures and slides are only via OST VPN accessible.
Lecture 1
The admin part gives an overview over this lecture and presents the challenge task for this course (Slides: ADSB-HS20-01-Admin_v1.pdf). In the second video, I briefly present myself (Slides: ADSB-HS20-01-About-me_v1.pdf). The third video is the segment "distributed systems in the news", where I present the recent 51% attack on Ethereum Classic and an article about front-running (Slides: ADSB-HS20-01-News_v1.pdf). The fourth video starts with the VSS repetition (Slides: ADSB-HS20-01-VSS_v1.pdf). [86min]
Lecture 2
The admin part talks about the challenge task details and further steps (Slides: ADSB-HS20-02-Admin.pdf). In the news part, I highlight a new record in the Ethereum blockchain, over 1.4 million transactions in one day (Slides: ADSB-HS20-02-News.pdf). The third part finished the VSS repetition (Slides: ADSB-HS20-02-VSS.pdf). [102min]
Lecture 3
The news part mentions GitHub Codespaces, talks about the high Ethereum fees and presets a git learning game. Slides: ADSB-HS20-03-News.pdf.
The admin part is about the challenge task groups (which is already outdated, since we now have 7 groups). Slides: ADSB-HS20-03-Admin.pdf.
The third part presents WebRTC and shows with a simple demo how it could be used. Last year, a couple of students used WebRTC in their challenge task (Slides: ADSB-HS20-03-WebRTC.pdf). [96min]
Lecture 4
The news part compares Docker with LXD and in a second article talks about CRDTs (conflict free replicated data type). Slides: ADSB-HS20-04-News.pdf.
The admin part is about the challenge task groups (which is again already outdated, as we may have 6 groups only). Slides: ADSB-HS20-04-Admin.pdf.
The third part presents an Introduction into fully decentralized P2P systems. This was the first lecture, but since last year, a couple of students used WebRTC in their challenge task, I decided to present WebRTC before this lecture (Slides: ADSB-HS20-04-P2P-Intro.pdf). [80min]
Lecture 5
The news part talks about an interview with the DNS creator and mentions DoH and DoT. DoH and DoT debates are still ongoing: opinion1, opinion2. Furthermore, Chrome enables HTTP/3 support. Slides: ADSB-HS20-05-News.pdf.
The admin part briefly shows the groups with its topics. Slides: ADSB-HS20-05-Admin.pdf.
The third part goes into details with Ethereum and Solidity. Some students mentioned that they have started to look into this in their challenge task, so I focused in this lecture on Solidity contracts and I will continue next week with more Ethereum topics, such as random numbers or dividend payments (Slides: ADSB-HS20-05-Blockchain-ETH.pdf). [96min]
Lecture 6
The news part reminds you to use multi stage builds with docker and talks about TCP latency. Slides: ADSB-HS20-06-News.pdf.
The admin part briefly mentions the Q-Feedback that will be coming on the 30.11.2020. Slides: ADSB-HS20-06-Admin.pdf.
The third part goes even more into details with Solidity. This lecture discusses dividend payments, since one group is implementing dividend payments. (Slides: ADSB-HS20-06-ETH-Smart-Contracts.pdf). The fourth part introduces Tezos, for those groups that have not decided on a blockchain yet and want to be environment friendly. (Slides: ADSB-HS20-06-Tezos.pdf). [98min]
Lecture 7
The news part discusses various topics, Kubernetes Ingress controllers, TCP issue, a local CDN, HTTP/3, AWS with their 100 million IPv4 addresses, Ethereum surpassing Bitcoin, Swisscom with 1Gbit/s in the train, and finally something about timezones.
The second part are interviews with Alessandro De Carli from papers.ch and John Newby from Tz Connect. During the interview we mentioned some sites, here are the links: Dapp explorer, Developer portal, Kraken stakes more than Binance, Connect dApps with Wallets, Beacon Proposal, AirGap, and Minimising transaction costs. [97min]
Lecture 8
The news part discusses various topics, such as Kafka optimizations and the birthday of the Bitcoin whitepaper. It also provides links to the MIT distributed systems lectures. (Slides: ADSB-HS20-08-News.pdf).
The admin part is a reminder for the deadline on the 04.11.2020 23:59. Please send me your link to your repo before that. (Slides: ADSB-HS20-08-Admin.pdf).
The third part details some algorithms that are often used in distributed systems, such as Bloom filters, Merkle trees. It also introduces algorithms that can be used on top of a key/value storage systems. (Slides: ADSB-HS20-08-P2P-Algo.pdf).
The fourth part is the interview with Nello Tolino, who mines cryptocurrencies (besides working @OST). [118min]
Lecture 9
The news part discusses a PoS article (which I don't always agree with) from Vitalik Buterin. (Slides: ADSB-HS20-09-News.pdf).
The admin part explains what a group needs to do when they want to hand in. (Slides: ADSB-HS20-09-Admin.pdf).
The third part is the interview with Christian Decker, who works on making Bitcoins scalable. [86min]
Lecture 10
The news part discusses various outages (Infura, Youtube, Jira) and why you don't need a blockchain solution for your next project. (Slides: ADSB-HS20-10-News.pdf).
The admin part is a reminder for the hand-in of the challenge task on the 02.12.2020 23:59. (Slides: ADSB-HS20-10-Admin.pdf).
The third part is goes into virtualization details, and shows OverlayFS, Cgroups, and network namespaces. (Slides: ADSB-HS20-10-Virtualization.pdf). [81min]
Lecture 11
The news part discusses WireGuard vs OpenVPN, docker vs. podman, the issue with TLS and internal addresses, and points to a $20m heist of a DeFi project. (Slides: ADSB-HS20-11-News.pdf).
The exam preparation discusses the exam from HS 2019. (Slides: ADSB-HS20-11-Exam.pdf). [95min]
Lecture 12
The news part mentions a Bitcoin article from Digitec and presents an article about the state of TCP congestion control. (Slides: ADSB-HS20-12-News.pdf).
The admin part is a reminder for the hand-in of the challenge task on the 02.12.2020 23:59. Send me for the hand-in, your presentation slides and the source code in a zip file via email. Please also fill out the Q-Feedback (Slides: ADSB-HS20-12-Admin.pdf).
The third part is goes into the details of HTLCs, payment channels, and cross-chain atomic swaps. (Slides: ADSB-HS20-12-Payment-Channels.pdf).
The fourth and fifth parts are the CT group presentations. [110min]
Lecture 13
The news part talks about partitioned browser caching, a live database migration, about vulnerable docker images, and PKCE. (Slides: ADSB-HS20-13-News.pdf).
The admin part is a reminder to fill out the Q-Feedback (Slides: ADSB-HS20-13-Admin.pdf).
The third part gives on overview over Ethereum 2.0. (Slides: ADSB-HS20-13-ETH2.pdf).
The fourth and fifth parts are the CT group presentations. [96min]
Lecture 14
The news part is a reminder that distributed systems may fail. (Slides: ADSB-HS20-14-News.pdf).
The fourth and fifth parts are the CT group presentations. [54min]
The feedback lecture will be live, using MS Teams. Please join MS Teams with the following code: iz0y31j on the 16.12.2020 at 10:10 - 11:50. (Slides: ADSB-HS20-14-Admin.pdf
Challenge Task HS 2020
This semester's challenge task (CT) is the design and implementation of a decentralized financial application.
The system consists of two parts:
- The financial application needs to support business processes that deal with money
- The financial application use-case needs to include crypto currencies
Requirements
All requirements below must be met in order to pass the challenge task.
- Full decentralization and P2P mechanisms for the financial product (e.g., WebRTC, TomP2P, libp2p) or use scalable mechanisms ready to be deployed on the cloud
- Graphical (GUI/Web-based) frontend (can be simple)
- Public blockchain based (e.g., Bitcoin/Ethereum)
Further requirements are:
- The solution may use existing libraries and code, but those must be allowed to be published under an open software license.
- The final presentation shall outline the application and architecture.
If one requirement is missing, you cannot write the exam.
Libraries and Tools
The items below represent supporting libraries, tools, or references that could to be taken into consideration.
- You are allowed to use any language or framework. However, the supervisors are familiar with those: Java, Golang, and JavaScript.
- We recommend to use WebRTC or TomP2P. The golang version of TomP2P is currently work in progress. TomP2P is an open-source implementation of the Kademlia DHT. More information can be found at http://tomp2p.net/ with a quick introduction to the TomP2P library.
- For the cloud-ready version, please refer to the DS1/VSS in FS20.
- Ethereum is the most popular public blockchain for smart contracts. You can also use a Testnet such as Ropsten or Rinkeby.
- Use Remix as Web IDE to develop your smart contract with Solidity.
Organization
- The groups shall be equally balanced, each containing 2-3 team members.
- During the challenge task, the group shall meet every week online 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 Wednesday.
- You do not have be present at the exercises. The supervisors will be available online via MS Teams. Please join MS Teams with the following code: iz0y31j
- The groups shall determine and set-up an internal project plan with the overall milestones timings provided here.
- Distribute the workload so that each group member gets a fair load of work (P2P load balancing, no free riding!) and make sure activities can run in parallel (non-blocking).
- Do not miss the opportunity of discussing details with your supervisor, he might give you good hints.
Milestones
There will be one milestone during the CT. The milestone shall include an initial setup of your application, preferably including basic functionality.
Please send your source code to your supervisors until 04.11.2020 23:59. Make sure that your submission includes setup instructions. If the supervisors are not able to run your application using the instructions given, you will be given a second chance to submit your source code a week later in order to still pass the attestation. If you fail the second chance, you won't be able to attend the examination.
Presentation and Evaluation
Challenge task submission deadline is 02.12.2020 23:59 and presentations and demonstrations will take place on 02.12.2020 and 09.12.2020. On these dates, the groups will present and demonstrate their results, which will be evaluated by a jury. Presentations and demos on dates will be announced.
- Each group will have exactly 20 minutes for presenting their design and to demonstrate the working application (roughly 15 min presenting and 5 min demo).
- Make sure that everything will work for your demo! Test everything beforehand with given conditions, especially the network. If a group fails to present within its time window, it will be disqualified.
- Remember that the audience will not only be interested in seeing whether or not your application works, but more specifically how the designed mechanisms work behind the scenes. So it must be visible what these instances are doing.
- After the demonstration, each group will be evaluated by the jury. The following criteria will be taken into consideration: software design and implementation (fulfillment of requirements, overall design, trade-offs considered, scalability, usability, reliability), team work, presentation and demonstration of the solution. The results of the votes will be collected and disclosed after the last presentation.
- The winning group will have to present the application to their fellow students in the last lecture on 16.12.2020. Furthermore, they will receive a prize (in Ether or Bitcoin) and the "OST Advanced Distributed Systems & Blockchain Challenge Task HS2020 Award".
Note: The participation of the CT is mandatory for the permission to attend the exam. There will be no grade and you can only pass or fail the CT. However, keep in mind that participation will greatly reduce the effort you have to spend studying for the exam.
Groups
Nr | Names | Project | Milestone | CT Abgabe | CT passed | Files |
---|---|---|---|---|---|---|
01 | Yannick V., Robin E. | Kudos Token | ✓ | ✓ | ✓ | group1.pdf, group1.zip, group1.mp4 |
02 | Marc S., Yves B., Fabian G. | Shares | ✓ | ✓ | ✓ | group2.pdf, group2.zip, group2.mp4 |
03 | Daniel S., Marco C. | Images | ✓ | ✓ | ✓ | group3.pdf, group3.zip, group3.mp4 |
04 | Raphael J., Gino C., Sven H. | ✓ | ✓ | ✓ | group4.pdf, group4.zip, group4.mp4 | |
05 | Benjamin P., Yanick R., Etienne B. | Donation | ✓ | ✓ | ✓ | group5.pdf, group5.zip, group5.mp4 |
06 | Florian B., Pascal S., Andreas B. | Donation | ✓ | ✓ | ✓ | group6.pdf, group6.zip, group6.mp4 |