Blockchain and Distributed Ledger Technologies
Master of Science in Computer Science
Master of Science in Cybersecurity
Sapienza University of Rome
Academic year 2023-24
Welcome to the website of “Blockchain and Distributed Ledger Technologies”, a course of the MSc programmes in
Computer Science and Cybersecurity at the Sapienza University of Rome.
Course information at a glance
📆 Course start: Thursday 26 September 2023
📇 Course schedule: Weekly on Tuesday, from 4 pm to 7 pm, and Wednesday, from 5 to 7 pm (CEST) during the Winter Semester of a.y. 2023-24
🏛️ Course location: Viale Regina Elena 295, 00161 Rome, Italy, Aula Magna (Building C, RM111)
📖 Course log, material and exercises: Google Classroom (registration required with your institutional Google account @studenti.uniroma1.it: course code xib55hn)
🎥 Live broadcast: via Meet (available only for subscribers to the Google Classroom at https://meet.google.com/xtq-vvbs-von)
👨 Instructor: Claudio Di Ciccio (contact details), associate professor at the Department of Computer Science of Sapienza University of Rome, Italy
Course description
Introduction
Blockchains emerged as a novel, game-changing paradigm for the distributed management of transactional systems. A blockchain is a protocol for the decentralised storage of a tamper-proof sequence of transactions (ledger), maintained and verified by the nodes participating in the network. The sequence of transactions corresponds to the actions that modify the status of the blockchain. A combination of peer-to-peer networks, consensus-making, cryptography, and market mechanisms is at the core of blockchains, which thereby ensure data integrity and transparency and propel a new paradigm known as cryptoeconomics. First-generation blockchains such as Bitcoin mainly focus on the exchange of electronic cash through cryptocurrencies. Second-generation blockchains such as Ethereum support so-called smart contracts, that is, executable code expressing how business is to be conducted among contracting parties (e.g., transfer digital assets after a condition is fulfilled). The number of advantages brought by this new capability led to an array of blockchain-based platform services catering for processes in the financial sector, the management of identities, energy distribution and supply chains, among others. The design of a secure, verifiable and efficient blockchain-based application requires the capability of properly architecting the behavioural structures among the involved parties.
Objectives
Students will learn the basics of blockchain technologies and the interplay of the underlying techniques that lead to the immutability, persistency, security and eventual consistency of the blockchain platforms. Furthermore, they will learn how to encode smart contracts and, thereupon, create full-stack Decentralised Applications (DApps). To properly design DApps and the token systems they rely upon, learners will apply the principles of process behaviour modelling and execution. To that end, an overview of cybersecurity challenges will also be provided. Furthermore, the learners will look at the covered topics from a legislative standpoint in order to consider normative challenges, including compliance with users’ privacy.
Teaching methods
The course will combine alternative ways to deliver the topics to students. On the one hand, a classical frontal-lecture style approach will be adopted to present the fundamental notions and case studies; on the other hand, students will have to solve hands-on exercises in class and as homework. At the end of the course, students will present the outcome of their teamwork in which a DApp is devised, designed and implemented.
Evaluation
The evaluation will be based on:
individual classwork with open-ended and closed-ended questions for self-assesment;
the consignment of a project showing an implemented distributed application, with a written report illustrating the motivation, rationale and architectural design choices;
an intermediate presentation of the project to be held at the end of the course;
a written test on general blockchain and distributed ledger technology core concepts.
Prerequisites
Basic knowledge of mathematics, algebra and computer science acquired during the Bachelor of Science in Computer Science or Applied Computer Science and Artificial Intelligence are necessary. In particular, the students should be knowledgeable in the concepts of:
Programming
Algorithms
Software engineering
Computer Architectures
Data Management and Analysis
Course contents
The course will consist of three main parts: 1) fundamentals of blockchains and their underlying technologies; 2) smart contracts programming; 3) development of a full-stack blockchain-based application. More in detail, the course content will be based on the following subjects, although the specific contents could be subject to modifications:
Course objectives and definitions
Introduction to blockchains
Preliminary notions
A historical view of blockchains
The transaction, the ledger, the block
Blockchain consensus
Block validation and forking
Cryptoeconomics
Hashing
Smart contracts part 1 (definition, essentials)
Smart contracts part 2 (basics of smart contract programming)
Smart contracts part 3 (data types, logging)
Smart contracts part 4 (inheritance, exceptions)
Decentralised Applications part 1 (software architecture, introduction to Web3)
Decentralised Applications part 2 (token engineering)
Decentralised Applications part 3 (interfacing smart contracts to the web)
DAOs, the DAO and other uh-oh moments
Other topics will be discussed during the course are:
Oracles
Designing multi-party processes for the blockchain
Implementing processes on the blockchain
Smart contract security: vulnerabilities and exploits
Security best practices for smart contracts
Decentralised finance
GDPR and the blockchain
References
[NIST] Yaga, D., Mell, P., Roby, N., Scarfone, K. Blockchain Technology Overview. NISTIR 8202. https://doi.org/10.6028/NIST.IR.8202
[ABA] Xu, X., Weber, I., Staples, M.: Architecture for Blockchain Applications. Springer 2019, ISBN: 978-3-030-03034-6
[MB] Antonopoulos, A. M. Mastering Bitcoin: Programming the open blockchain. O'Reilly 2017. ISBN: 978-1-491-95438-6
[IES] Dannen, C. Introducing Ethereum and Solidity. Foundations of Cryptocurrency and Blockchain Programming for Beginners. Apress. ISBN: 978-1-4842-2535-6
[BDLT] Di Ciccio, C. Blockchain and Distributed Ledger Technologies. In: Leo, S., Panetta, I.C., The Role of Distributed Ledger Technology in Banking. Cambridge (in print)
Suggested readings
[BTC] Nakamoto, S. Bitcoin: A Peer-to-Peer Electronic Cash System. https://bitcoin.org/bitcoin.pdf
[WP] Buterin, V. A Next-Generation Smart Contract and Decentralized Application Platform. https://github.com/ethereum/wiki/wiki/White-Paper
[YP] Wood, G. Ethereum: A secure decentralised generalised transaction ledger. https://ethereum.github.io/yellowpaper/paper.pdf
[A] Jing Chen, Silvio Micali: Algorand: A secure and efficient distributed ledger. Theor. Comput. Sci. 777: 155-183 (2019)
[E] Diedrich, H. Ethereum: Blockchains, Digital Assets, Smart Contracts, Decentralized Autonomous Organizations. Wildfire Publishing. ISBN: 978-1523930470
[VVSC] Daniele Magazzeni, Peter McBurney, William Nash: Validation and Verification of Smart Contracts: A Research Agenda. IEEE Computer 50(9): 50-57 (2017)
[10BC] Pedersen, A. B., Risius, M., Beck, R. A Ten-Step Decision Path to Determine When to Use Blockchain Technologies. MIS Quarterly Executive, 2019, 18, 99-115
[ESEC] Zeli Wang, Hai Jin, Weiqi Dai, Kim-Kwang Raymond Choo, Deqing Zou: Ethereum smart contract security research: survey and future research opportunities. Frontiers Comput. Sci. 15(2): 152802 (2021)
[SoK] Nicola Atzei, Massimo Bartoletti, Tiziana Cimoli: A Survey of Attacks on Ethereum Smart Contracts (SoK). POST 2017: 164-186
[BM] Matthias Kunze, Mathias Weske: Behavioural Models - From Modelling Finite Automata to Analysing Business Processes. Springer 2016, ISBN 978-3-319-44958-6