Welcome to the website of the “Blockchain Technologies” course, to be held in the context of the
Subsidiary Formative Activities [Attività Formative Complementari (AFC)] of the Master of Science in Computer Science at the Sapienza University of Rome.
This is the old edition of the course. For the 2021-22 edition, please visit: https://sites.google.com/uniroma1.it/blockchain-tech-afc
Course start: 2021, October the 7th
Course schedule: Weekly on Wednesday, 5 to 7 pm (CEST) during the Winter Semester
Course location: Room G50 (Building RM115, 3rd floor, Viale Regina Elena 295, 00161 Rome, Italy)
Course material: Google Classroom (registration required: course code xhmkxq3)
Course forum: Google Groups (registration required; ask to join with your institutional Google account @studenti.uniroma1.it: afc--blockchain-technologies--2021-22)
Live broadcast: via Zoom (see the instructions on the Course Forum)
Instructor: Claudio Di Ciccio, assistant professor at the Department of Computer Science of Sapienza University of Rome, Italy
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. Through a combination of peer-to-peer networks, consensus-making, cryptography, and market mechanisms, blockchains ensure data integrity and transparency. First-generation blockchains such as Bitcoin mainly focus on the exchange of electronic cash. Second-generation blockchains such as Ethereum and Algorand 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 paradigm led to an array of blockchain-based platform services catering for processes in the financial sector, in the management of identities, energy distribution and supply chains among others.
In the course of the programme, students will learn the basics of blockchain technology and the interplay of the underlying techniques that lead to the immutability, persistency and eventual consistency of the blockchain platforms. Furthermore, they will learn how to encode smart contracts and, thereupon, create full-stack Decentralised Applications (DApps). The course will primarily focus on Ethereum and Algorand as platforms of choice.
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. The evaluation will be based on homework, teamwork and an oral discussion.
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 will consist of the following classes:
Course objectives and definitions
Introduction to blockchains
Preliminary notions
A historic view on blockchains
The transaction, the ledger, the block
Blockchain consensus
Block validation and forking
Cryptocurrency, cryptoassets, cryptofuel
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)
Decentralised Applications part 4 (deployment on private and test nets)
DAOs, the DAO and other uh-oh moments
Oracles
Guest lecture
Teamwork showdown
[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
[NIST] Yaga, D., Mell, P., Roby, N., Scarfone, K. Blockchain Technology Overview. NISTIR 8202. https://doi.org/10.6028/NIST.IR.8202
[ABA] Xiwei Xu, Ingo Weber, Mark Staples: Architecture for Blockchain Applications. Springer 2019, ISBN 978-3-030-03034-6, pp. 1-307
[IES] Dannen, C. Introducing Ethereum and Solidity. Foundations of Cryptocurrency and Blockchain Programming for Beginners. Apress. ISBN: 978-1-4842-2535-6
[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