TU Wien:Cryptocurrencies VU (Maffei)

Aus VoWi
Wechseln zu: Navigation, Suche



Basiswissen wie eine Cryptocurrency aufgebaut ist (+cryptographic primitives). Viel Theorie über Anonymität. Nachdem Altcoins besprochen wurden, wurde noch genauer auf Ethereum (+smart contracts) und Ripple eingegangen. Letzte VO über off-chain payment channels (z.B. Lightning Network).


WS 2018/19[Bearbeiten]

  • Weekly lectures
  • Two written exams (midterm and final)

WS 2017/18[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


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)


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 which are done in groups of up to three students. Assignment 1 was equal to WS 2017/18.

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]

WS17 - 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).


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.


Princeton: lecture book and videos


  • don't start too late, with the first assignment was my main challenge figuringe out the basic structure and what refers to what and not even the sql writing. There is normaly 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.

Verbesserungsvorschläge / Kritik[Bearbeiten]

noch offen