Oggetto:

Blockchain, sistemi distribuiti e decentralizzati

Oggetto:

Blockchain, distributed and decentralised systems

Oggetto:

Anno accademico 2025/2026

Codice attività didattica
INF0422
Docenti
Andrea Bracciali (Docente)
Claudio Schifanella (Docente)
Corso di studio
[008707] Laurea in Informatica
Anno
3° anno
Periodo
Secondo semestre
Tipologia
A scelta dello studente
Crediti/Valenza
6 CFU - Numero di ore - Number of hours: 32 (in aula) + 20 (in laboratorio)
SSD attività didattica
INFO-01/A - Informatica
Erogazione
Tradizionale
Lingua
Inglese
Frequenza
Facoltativa
Tipologia esame
Orale
Tipologia unità didattica
corso
Oggetto:

Sommario insegnamento

Oggetto:

Avvisi

Regole di comportamento durante gli esami Informazioni per studenti con DSA o Disabilità: servizi di Ateneo e supporto per sostenere gli esami
Oggetto:

Obiettivi formativi

 

The main objective of the course is to develop a solid understanding of blockchain technologies in the context of distributed systems.

The blockchain has recently introduced a new decentralized computing model that is based on ideas from different disciplines, such as cryptography, economics, computer science, ... The understanding of this model requires advanced skills that this self-contained course aims to provide the student, with both a theoretical and practical approach, with a substantial laboratory on cutting-edge technologies.

The aim is to contribute to the training of experts who can both participate in the development of technology, for example with research paths, and access the job market, selective and currently expanding both locally and on an international scale.

Starting from the theory of distributed systems, decentralized computing and its motivations is introduced, and the relevant problem of distributed consensus and its applications.

Bitcoin, which allowed the development of the technology, is analysed in detail as a paradigmatic case, providing the student with the tools for a critical analysis of innovation and limitations of the technology.

Subsequently, smart contracts and decentralized programming are studied, on Bitcoin and Ethereum, a mainstream blockchain for this type of application. The student thus acquires both the ability to develop decentralized applications, analyse their operation and design correct solutions.

To achieve its educational objectives, the course integrates theory and practice through a learning by doing approach, supported by a substantial number of laboratory hours, which will allow students to learn how to design and implement decentralized software applications.

 

Il principale obiettivo del corso è sviluppare una solida comprensione delle tecnologie blockchain nel contesto dei sistemi distribuiti.

La blockchain ha recentemente introdotto un nuovo modello di calcolo decentralizzato che si basa su idee provenienti da differenti discipline, quali crittografia, economia, informatica, … La comprensione di questo modello richiede competenze avanzate che questo corso autocontenuto si propone di fornire allo studente, con un approccio sia teorico che pratico, con una consistente parte di laboratorio su tecnologie cutting-edge.

L'obbiettivo è contribuire alla formazione di esperti che possano sia partecipare allo sviluppo della tecnologia, per esempio con percorsi di ricerca, sia trovare spazio nel relativo mercato del lavoro, selettivo e attualmente in espasione, localmente e su scala internazionale. 

Partendo dalla teoria dei sistemi distribuiti, viene introdotta la computazione decentralizzata e le sue motivazioni, e il rilevante problema del consenso distribuito e sue applicazioni.

Bitcoin, che ha permesso lo sviluppo della tecnologia, viene analizzato in dettaglio come caso paradigmatico, fornendo allo studente gli strumenti per un’analisi critica su innovazione e limitazioni della tecnologia. 

In seguito, viengono studiati gli smart contracts e la programmazione decentralizzata, su Bitcoin e su Ethereum, una blockchain mainstream per questo tipo di applicazioni. Lo studente così acquisisce sia la capacità di sviluppare applicazioni decentralizzate, che di analizzare il loro funzionamento e progettare soluzioni corrette.

Per il conseguimento dei propri obiettivi formativi, il corso integra teoria e pratica tramite un approccio learning by doing, supportato da un sostanziale numero di ore di laboratorio, che permetterà agli studenti di imparare a progettare e implementare applicazioni software decentralizzate.

Oggetto:

Risultati dell'apprendimento attesi

 

At the end of this course, students will be able to:

  1. Know and evaluate the main characteristics and properties of decentralized architectures and the general principles of their design
  2. Understand the role and characteristics of different consensus algorithms
  3. Understand how the Bitcoin network works and its scripting language
  4. Know the characteristics of blockchain platforms based on smart contracts, with particular reference to the Ethereum platform
  5. Design and implement decentralized applications

 

Alla fine di questo insegnamento, le/gli studentesse/studenti saranno in grado di:

  • Conoscere e valutare le principali caratteristiche e le proprietà delle architetture decentralizzate e  i principi generali della loro progettazione
  • Comprendere il ruolo e le caratteristiche dei differenti algoritmi di consenso
  • Comprendere il funzionamento della rete bitcoin e del suo linguaggio di scripting
  • Conoscere le caratteristiche delle piattaforme blockchain basate su smart contract, con particolare riferimento alla piattaforma Ethereum 
  • Progettare e implementare applicazioni decentralizzate
Oggetto:

Programma

  • Introduction to distributed systems and their features
    • Distributed programming, execution model over the Internet
    • Distributed algorithms, examples
  • Decentralised technologies
    • Use case: microblogging (Twitter, Mastodon, Nostr)
    • Use case: internet money 
    • Defining decentralisation and its motivations 
  • Cryptography: a recap
    • Main primitives (for blockchain) 
    • Attacks and complexity notions
  • The Blockchain decentralised consensus
    • Brief history of consensus 
    • Bitcoin’s Proof-of-Work
    • Incentives and tokenomics
    • Transactions and key management
    • The SCRIPT verification language
    • Transaction types and SCRIPT smart contracts
    • BIPs and some further developments (Inscriptions, Taproot…, covenants)
  • LAB: Bitcoin
    • Interaction with the Bitcoin testnet
    • Verifying transactions
    • Writing and executing a simple smart contract (Alice at the pub)
  • The Ethereum blockchain
  • Smart contracts on Ethereum
    • Definitions and decentralised execution model
    • Introduction to Ethereum’s EVM: accounts, smart contracts and gas 
    • Programming smart contracts: the Solidity language
    • ERC standards and libraries, tokenization, non-fungible tokens
  • LAB: Ethereum smart contracts
    • Development tools, and execution environments
    • Programming  a dApp: frontend and interaction with smart contracts
    • Decentralized storage: IPFS
    • Decentralised games, auctions, lotteries, tokens and NFTs …
    • Structure and development of a Decentralized Application (dAPP)
    • Development of simple smart programs
  • Tokenomics and business models: which sustainaiblity?
  • Group project

 

 

Oggetto:

Modalità di insegnamento

 

The course is divided into a theory part and a laboratory part.

The theory part includes 32 hours of lectures.

For the laboratory part, 20 hours of laboratory activities are planned in which you practice with blockchain implementations and development environments and carry out programming exercises of decentralized applications based on smart contracts. Attendance is optional, strongly recommended, and the final exam will be the same for attending and non-attending students.

Participation in at least one project presentation session is expected.

 

L’insegnamento è diviso in una parte di teoria e una di laboratorio.

La parte di teoria prevede 32 ore di lezioni frontali.

Per la parte di laboratorio sono previste 20 ore di attività in laboratorio in cui si fa pratica con implementazioni di blockchain e ambienti di sviluppo e si svolgono esercizi di programmazione di applicazioni decentralizzate basate su smart contract. La frequenza è facoltativa, fortemente consigliata, e la prova finale sarà uguale per frequentanti e non-frequentanti.

La partecipazione ad almeno una sessione di presentazione dei progetti è attesa.

Oggetto:

Modalità di verifica dell'apprendimento


Sudent's assessment is based on


(i) a guided practical project to be agreed with the lecturers,

(ii) an oral presentation of the project carried out with discussion on the project and on the theoretical part of the course.

All components of the evaluation must be passed and contribute to determining the final grade according to a predetermined proportion.

The delivery of the project is a necessary condition for access to the oral exams.

 

 

 

La valutazione dello studente si basa su

(i) un progetto pratico guidato da concordare con il docente,

(ii) una presentazione orale del progetto svolto con discussione sul progetto e sulla parte teorica del corso.

Tutte le componenti della valutazione devono essere superate e contribuiscono a determinare il voto finale secondo una proporzione predeterminata. La consegna del progetto è condizione necessaria per accedere agli esami orali.

Oggetto:

Attività di supporto

The supporting teaching material (e.g., slides, links, exercise code) is available on-line (typically Moodle) and constitutes a substantial part of the course teaching material.

 

Il materiale didattico di supporto (e.g., lucidi, link, codice degli esercizi) è disponibile presso il supporto on-line (tipicamente Moodle) e costituisce parte sostanziale del materiale didattico del corso.

 

Testi consigliati e bibliografia



Oggetto:
Libro
Titolo:  
Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction
Anno pubblicazione:  
2016
Editore:  
Princeton Press
Autore:  
Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, and Steven Goldfeder
Obbligatorio:  
No


Oggetto:
Altro
Titolo:  
Ethereum developer resources
URL:  
Obbligatorio:  
No


Oggetto:
Altro
Titolo:  
Learn Ethereum
URL:  
Obbligatorio:  
No
Oggetto:

Further suggested references and/or textbooks will be discussed during the course

 

Altre indicazioni bibliografiche e suggerimenti per testi di riferimento e/o di consultazione verranno discussi durante il corso



Oggetto:
Ultimo aggiornamento: 15/05/2025 21:08
Location: https://laurea.informatica.unito.it/robots.html
Non cliccare qui!