Informazioni in aggiornamento fino al 30/06/2026 CODICE 108872 ANNO ACCADEMICO 2026/2027 CFU 6 cfu anno 2 COMPUTER SCIENCE 11964 (LM-18) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Inglese SEDE GENOVA PERIODO 1° Semestre PRESENTAZIONE Questo corso esplorerà i fondamenti delle blockchain, i loro principi crittografici, gli smart contract e alcuni framework introdotti per aiutare gli sviluppatori nella realizzazione di applicazioni decentralizzate nell’ecosistema Web3. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Apprendere le tecniche e le problematiche relative ai sistemi basati su blockchain permissioned e permissionless, e ai sistemi decentralizzati in generale, esaminando con particolare attenzione gli aspetti legati alla sicurezza. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO La frequenza regolare e la partecipazione attiva alle attività didattiche proposte, insieme allo studio individuale, permetteranno agli studenti/alle studentesse di comprendere le sfide legate alla progettazione dei sistemi decentralizzati. In particolare, gli studenti/le studentesse saranno in grado di: discutere gli algoritmi di consenso decentralizzato e il loro utilizzo nelle reti peer-to-peer; spiegare come le tecniche crittografiche garantiscano la sicurezza dei ledger distribuiti; analizzare i principali problemi di scalabilità nelle architetture blockchain, incluse alcune soluzioni proposte in letteratura; discutere alcuni problemi di sicurezza e privacy nelle architetture blockchain e le relative contromisure; implementare smart contract di base pubblicabili su blockchain programmabili (ad esempio, Ethereum, Solana); utilizzare strumenti e librerie open-source per interagire con gli smart contract pubblicati; comprendere i problemi economici, etici e ambientali legati alle piattaforme blockchain. PREREQUISITI Per avere successo in questo corso, gli studenti/le studentesse dovrebbero possedere conoscenze di base su: Reti di comunicazione Sistemi distribuiti Programmazione (JavaScript, Python) MODALITA' DIDATTICHE Lezioni frontali e attività pratiche, propedeutiche allo svolgimento degli assignment che saranno discussi durante l’esame orale. PROGRAMMA/CONTENUTO Come costruire uno stato condiviso senza autorità centrali Algoritmi per raggiungere il consenso in un sistema decentralizzato e adversariale (ad es. Byzantine, PoW, PoS, ...) Tecniche crittografiche Protocolli di rete peer-to-peer Blockchain programmabili e applicazioni decentralizzate Linguaggi e framework per smart contract e applicazioni client File system peer-to-peer Utilizzo di reti di test Scrittura di codice sicuro ed efficiente Problemi di scalabilità e relative soluzioni Reti Layer 2 (off-chain) Problemi di sicurezza e privacy Anonimizzazione e deanomizzazione di utenti e transazioni Attacchi e difese per smart contract TESTI/BIBLIOGRAFIA La bibliografia consigliata, composta principalmente da risorse online liberamente accessibili, sarà indicata e discussa durante le lezioni e resa disponibile sulla pagina AulaWeb del corso. DOCENTI E COMMISSIONI MARINA RIBAUDO Ricevimento: Gli studenti/le studentesse possono contattare la docente via e-mail. MATTEO DELL'AMICO Ricevimento: Su appuntamento (in presenza o online) definito per email (matteo.dellamico@unige.it). LEZIONI INIZIO LEZIONI In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica: https://corsi.unige.it/corsi/10852/studenti-orario Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L’esame si compone delle seguenti parti: (i) una prova scritta e (ii) una presentazione orale durante la quale gli studenti/le studentesse discuteranno i propri assignment. Indicazioni per studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali sono disponibili a partire da https://corsi.unige.it/corsi/10852/studenti-disabilita-dsa MODALITA' DI ACCERTAMENTO La prova scritta, che costituisce requisito di ammissione alla discussione degli assignment, consiste in domande relative agli argomenti trattati a lezione e permette di valutare le conoscenze teoriche acquisite dallo studente/dalla studentessa durante il corso. Per la parte orale, la valutazione si baserà sulla qualità del codice prodotto e sulla completezza delle relazioni. La prova scritta e la discussione degli assignment si svolgono nella stessa sessione. ALTRE INFORMAZIONI Per ulteriori informazioni, consultare il modulo Aulaweb dell'insegnamento o contattare i docenti.