SAN Seminar 2018/2019 (2IMN00)
THE UPDATED COURSE MATERIAL IS ON CANVAS
The goal of a seminar course is to give you an impression of what kind of work is conducted at a particular group at our Computer Science department. This year the seminar of our SAN (System Architecture and Networking) group is on blockchains and smart contracts. After the course you should be able to:
- critically study popular and scientific publications on blockchains to identify the problem that is addressed, how it is solved, and whether the claims are true,
- develop basic smart contracts for a decentralized application.
The course consists of two parts: a research part and a practical part.
Research
For the research part you will study existing literature to answer one of several research questions that will be provided. The results will be reported in a 2-4 page paper.
Examples of research questions:
- Which are the common bugs/errors in smart contracts and how can they be avoided?
- Which solutions to the Byzantine agreement problem are there and how do they compare?
- How can the scalability of the Ethereum blockchain be improved?
- How can the scalability of the Proof-of-Work concensus mechanism be improved?
- How does the Litecoin improve on the Bitcoin?
- How does verifying only the block headers (e.g. in Ethereum light nodes) contribute to the validation of the blockchain?
- How can the privcy of data that is stored on a blockchain be protected?
- How does IPFS store large amounts of data and how does it compare to Storej?
- How does the transaction processing protocol of Hyperledger compare to the one of Ethereum?
- How does the consensus protocol used by FileCoin compare to the one used by Bitcoin?
- How does Elixxir protect privacy and how does it compare to Zcash?
- How can the Internet of Things benefit from blockchains?
Note that the list is not complete yet and may change before the course starts.
Practical
For the practical part you will design and implement an Ethereum smart contract that will serve as a backend for a web application: a market place for sharing home cooked food.
You will develop a basic app and an extended app. The basic app should satisfy the following requirements:
- Support users who only cook, only eat and those who do both.
- Cooks can advertise a meal, including the dishes, date, time, location, price and capacity.
- Cooks can edit meals they have advertised before.
- Eaters can browse upcoming meals.
- Eaters can make a reservation for a meal (the eater is charged when making the reservation).
- Work in the Brave browser.
For the extended app you will design and implement one of the following extensions:
- Protect eaters from misbehaving cooks and at the same time cooks from misbehaving eaters. Note that the basic requirements favor the cooks: the eater is charged for a meal when making the reservation. What if the cook does not deliver?
- Allow cooks to attach a picture to a meal advertisement.
- Add user profiles, with the possibiity to add a profile picture.
Screenshots of the front end.
The front end (implemented in HTML + CSS + Javascript + Riot.js and deployed on an Express.js webserver) will be provided to you. Your task will be to implement the backend on the Ethereum blockchain and interface with it. You will work with the following programming languages/tools:
- Solidity for implementing your smart contract,
- Truffle for testing and deploying your smart contract,
- Ganache for deploying a local blockchain on your computer during development,
- MetaMask Ethereum wallet for interacting with the smart contract via the browser (included in the Brave browser),
- Javascript for integrating your smart contract with the front end.
The decentralised application.
The deliverables will be the source code and a poster (that you will also present).
The aim is to select the best app and launch it after the course!
Organization
A seminar is not a regular course where you get lectures on a particular topic. You will be provided with some pointers and will be expected to work independently. We will have weekly meetings where you will report your status and have the opportunity to ask questions. You are required to attend these meetings.
Week |
Day |
Lesson |
Deadline (at 23:59) |
|
1 (12.11) |
Wednesday |
intro |
|
|
Friday |
standup |
|
2 (19.11) |
Wednesday |
|
|
|
Friday |
standup |
|
3 (26.11) |
Wednesday |
|
|
|
Friday |
standup |
|
4 (03.12) |
Wednesday |
|
|
|
Friday |
standup |
paper |
|
5 (10.12) |
Wednesday |
|
|
|
Friday |
standup |
paper peer review |
|
6 (17.12) |
Wednesday |
|
paper (final) |
|
Friday |
standup |
|
(24.12) |
Wednesday |
Christmas break |
|
|
Friday |
|
|
(31.12) |
Wednesday |
Christmas break |
|
|
Friday |
|
|
7 (07.01) |
Wednesday |
|
poster |
|
Friday |
standup |
poster peer review, code |
8 (14.01) |
Wednesday |
poster presentations |
poster (final) |
|
Friday |
|
Prerequisites
As preparation you are encouraged to look at Ethereum (read the white paper and the documentation on how to program Ethereum smart contracts in solidity) and blockchains in general. There are no prerequisite subjects, but you should know about distributed systems (e.g. 2IMN10 on Architecture of Distributed Systems). The Information Security Basics (2AC10) and Networks and security (3USU0) provide an introduction to the standard cryptoraphic promitives and their application in the Bitcoin blockchain.
This year the Networks and security (3USU0) course will cover the Bitcoin on November 26 at 08:45 - 10:30, December 26 at 08:45 - 10:30, and December 6 at 14:30 - 16:15 (the location t.b.a.). You are encouraged to attend these lectures.
References
- Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System, 2008 (Bitcoin White Paper)
- Vitalik Buterin, A Next Generation Smart Contract & Decentralized Application Platform, 2013 (a maintained version on GitHub) (Ethereum White Paper)
- Leslie Lamport, Robert Shostak, Marshall Pease, The Byzantine Generals Problem, 1982
- M. Fischer, N. Lynch, M. Paterson, Impossibility of distributed consensus with one faulty process, 1985
- Gavin Wood, Ethereum: A Secure Decentralised Generalised Transaction Ledger Byzantium Version, 2014 (Ethereum Yellow Paper)
- Vitalik Buterin, Ethereum 2.0 Mauve Paper, 2016
- Gavin Wood, Polkadot: Vision For A Heterogeneous Multi-chain Framework, 2016
- Boris Skoric, A short introduction to Bitcoin (Reader for 3USU0), 2018
- Elixxir, Elixxir Technical Brief, 2018
- Juan Benet, IPFS - Content Addressed, Versioned, P2P File System (DRAFT 3), 2015
- Tara Vancil, How Merkle Trees Enable the Decentralized Web, 2018
Contact
If you have any questions, don't hesitate to email Mike Holenderski.