The course gives insight into different technologies and models for blockchain systems.
The first part, mostly inspired by bitcoin, covers blockchain fundamentals such as data structures, transaction validation and proof of work consensus. This part also considers possible attacks on bitcoin. Proposed improvements, as well as alternative consensus mechanisms are discussed.
The second part of the course covers voting consensus and byzantine fault tolerant systems, and their application in permissioned, membership based blockchains. A variety of systems with different failure models and assumptions will be presented, including systems that tolerate malicious and selfish peers.
In the third part, we focus on smart-contract programming, security of smart contracts and applications.
In addition to the lectures, students will have to read and discuss related research papers. In the accompanying lab project students will mine blocks for a simulated proof-of-work blockchain and implement a secure application using smart contracts.
Know about different models for blockchains with both open and closed membership.
Know about different consensus mechanisms used in blockchain and their probabilistic guarantees.
Know about smart contracts and different execution models for smart contracts.
Know about cryptographic primitives used in blockchains.
Be able to develop applications for execution on a blockchain.
Be able to reason about systems and applications involving blockchain technology.
Know how and when to apply blockchain technologies.
Required prerequisite knowledge
DAT510 Security and Vulnerability in Networks, DAT520 Distributed Systems
Some of the assignements in this course use Go.
Project work with oral presentastion and oral exam
Form of assessment
Project work with oral presnetation
The project is evaluated through a report and an oral hearing. Both parts must be done before final grade for the project is given. The project work will be done in groups, and all group members have to participate in the oral hearing.If a student fails the projectwork, she/he has to take this part again next time the subject is lectured.Both exam units must be passed in order to receive a final grade in the course.
Five mandatory individual lab exercises (programming exercises). Pass/Fail. All programming exercises must be passed within the specified deadlines to take the written exam. Approval takes place through the delivery of code online, followed by in-lab approval.
Completion of mandatory assignments are to be made at the times that are assigned. Absence due to illness or for other reasons must be communicated as soon as possible to the laboratory personnel. One cannot expect that provisions for completion of the lab assignments at other times are made unless prior arrangements with the laboratory personnel have been agreed upon.
There must be an early dialogue between the course coordinator, the student representative and the students. The purpose is feedback from the students for changes and adjustments in the course for the current semester.In addition, a digital course evaluation must be carried out at least every three years. Its purpose is to gather the students experiences with the course.