TU Wien:Cryptocurrencies VU (Maffei)

Aus VoWi
Wechseln zu: Navigation, Suche

Daten[Bearbeiten]

Vortragende Matteo Maffei, Clara Schneidewind, Pedro Moreno Sanchez
ECTS 6
Abteilung Forschungsbereich Security and Privacy
Wann Wintersemester
Sprache English
Links TISS
Zuordnungen
M. Logic and Computation Wahlmodul Logic, Mathematics, and Theoretical Computer Science
M. Software Engineering & Internet Computing Wahlmodul Advanced Security
M. Technische Informatik Wahlmodul Mathematics and Theoretical Computer Science


Mattermost: Channel "cryptocurrencies" Team invite & account creation link Mattermost-Infos

Inhalt[Bearbeiten]

Basic knowledge about cryptocurrencies, including cryptographic primitives like hashing and digital signatures. Further, material about altcoins, Ethereum, Smart Contracts, off-chain payments, routing.

Ablauf[Bearbeiten]

WS 2018/19 (6 ECTS)[Bearbeiten]

  • 13 weekly lectures
  • Two written exams (midterm and final)

WS 2017/18 (3 ECTS)[Bearbeiten]

  • 11 weekly lectures
  • Two assignments
  • Written exam at the end of the semester

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten]

  • no real requirements
  • basic SQL is helpful but a cheatsheet gets provided for that assignment
  • interest in the technology and also theory and not just riding the hypetrain

Vortrag[Bearbeiten]

The lecture is quite difficult to follow: The slides aren't really good and it's hard to understand Prof Maffei. (Better read the book)

Übungen[Bearbeiten]

  • WS 2017/18: There are two exercises to be done by each student. Collaboration or better said discussion is allowed and has to be disclosed in the submission paper.
  • WS 2018/19: Two assignments, the first one is done in groups of up to three students. Assignment 1 was equal to WS 2017/18. Assignment 2 consisted of exploiting 4 smart contracts.

Assignment 1:[Bearbeiten]

There are three parts to be done, all of them on a subset of the blockchain.

Part one has to be performed on the first 100.000 entries of the bitcoin blockchain. There are invalid blocks which would not pass the bitcoin validation algorithm. Goal is to find the invalid blocks and present them. All of this is one in sql, you get a basic representation of the blockchain as an sql file which has to be loaded into postgresql. There are only three tables which reference each other and several queries have to be made to find all the invalid blocks.

Part two is on an even smaller part of the blockchain which also gets provided by an initialization sql script. The goal here is to find unspent transactions which is fairly simple.

Part three is a de-anonymization attempt based on a clustering function which gets provided. Before using the provided function one has to insert in a given table all potential transactions based on joint control and serial control. After that it is possible to use the given function and finish the task with some basic queries based on the output.

Assignment 2:[Bearbeiten]

You are provided access to a private ethereum blockchain where a DAO contract ( decentralized autonomous organization) is hosted. Each student has his/her own contract and has to exploit a known bug on this contract. For this example you need to install geth and the solidity compiler and write some simple solidity code. The exploit and the respective code are presented to you in a paper that gets linked in the exercise instructions, so it is not that hard. Goal is to exploit the DAO and steal all the coins on your personal part of the ethereum blockchain.

Prüfung, Benotung[Bearbeiten]

WS 2018/19: Two exams which should not be underestimated. The first exam covers about 2/3 of the material of the whole LVA (about 9 slide sets + 2 tutorials), the final exam covers the rest (about 4 slide sets + 2 tutorials). The tutorials cover important topics, especially the first tutorial covers a lot of important cryptographic concepts which were very relevant for the test. The final exam covered only 4 slide sets and was probably underestimated by some people. However, a deep understanding of the topics was required to be able to answer the questions which the slides did not really bring across.

It was possible to retake one or both exams about three weeks after the final exam (mid/end of February). The early date for the retake led to student complaints which were ignored.

WS 2017/18: Relativ grundlegendes Wissen abgefragt, nichts über Ripple oder LN (siehe auch Prüfung).

Dauer der Zeugnisausstellung[Bearbeiten]

WS17: Prüfung 02.02. - Zeugnis am 26.03. (7 Wochen; Übungspunkte wurden auch erst am 02.03. bzw. 09.03. eingetragen, die LVA-Leitung hat nicht mit so vielen LVA-Teilnehmern gerechnet und daher (zu) wenig Kapazitäten eingeplant, war auch die 1. Abhaltung der LVA).

WS 2018/19: About two weeks between the exam and the publishing of the results: Midterm exam on 30.11., results online on 17.12. Final exam on 24.1., results online on 8.2.

Zeitaufwand[Bearbeiten]

WS 2018/19[Bearbeiten]

The first assignment is a group project and takes about one to two days per person if done carefully. The second assignment consisted of exploiting 4 contracts which took me about 3 days. I studied about 40 hours for the first exam and about 30 hours for the second exam, the assignments took me about 40 hours as well. All in all I would say that I didn't need the full 150 hours (6 ECTS).

WS 2017/18[Bearbeiten]

For the assignments one or two days should be enough.

Other opinion: One or two days is not enough. The first assignment needs some reading and understanding, the second can take more time depending on the network. We executed the right commands with no success until one day before end they told us we need to sync it..
Other opinion: If you are familiar with the respective tools and know what you are doing, the first assignment takes ~4-8 hours and the second one ~1-2 hours plus time for writing the report. I agree that not knowing the tools/techniques and needed theory knowledge can add at least 1-2 working days per assignment.

Unterlagen[Bearbeiten]

Princeton: lecture book and videos

Tipps[Bearbeiten]

  • Don't start too late, with the first assignment was my main challenge figuring out the basic structure and what refers to what and not even the SQL writing. There is normally an easy way for the SQL queries.
  • I would suggest looking for the Princeton book "Bitcoin and Cryptocurrency Technologies" online (there is a free PDF) and just read it. They explain everything very good. There are also some videos online. The book covers everything (the lecture is basically the book) so you will be fine with only reading it.
    • Note: The book covers a lot of the material for the exam and it helps to read it, it doesn't cover the lecture material in full anymore as of WS 2018/19.
  • The course is not too bad, requires not too much effort but it if one doesn't know much about the Cryptocurrencies it's probably also not the best way to get into this topic. I would rather recommend attending Smart Contracts VU and Seminar aus Security (Kryptowährungen) SE first (which give a much better introduction to the the topic) and then attend this lecture.

Verbesserungsvorschläge / Kritik[Bearbeiten]

  • The quality of the slides should be improved. Mathematical formulas are typeset in running text which makes them hard to comprehend. The slides could be a bit more formal in terms of definitions etc. because the tests ask for a deeper understanding as well.
  • The retake exams where scheduled for mid February (18.02.) and the points of the final exam were only announced about a week before the exam which lead to a lot of protests from students.