Peer-to-Peer Systems and Blockchain

Year:
1st year
Semester:
S2
Programme main editor:
I2CAT
Onsite in:
UBB
Remote:
CNAM
ECTS range:
5-7 ECTS

Professors

img
Professors
Laura Ricci
UNIPI

Prerequisites:

Computer Networks.

At least one programming language.

Algorithmics.

Pedagogical objectives:

The student will acquire knowledge relative to the development of distributed systems, in particular of blockchain-based systems.

At the end of the course, the student

  • will be able to develop a distributed application.
  • will be able to develop a smart contract.
  • will be able to understand consensus mechanisms.

Evaluation modalities:

At the end of the course, the student must submit the final project to be evaluated.

Description:

The course covers the following topics:

  • Peer-to-peer Systems: general concepts, unstructured overlays: Flooding, Random Walks, Epidemic Diffusion, structured overlays: Distributed Hash Tables (DHT), Routing on a DHT, IPFS.
  • Blockchains: basic concepts, basic cryptographic tools (digital signatures, cryptographic hash, Zero-Knowledge,..), data structures: Merkle trees, Merkle Patricia tries.
  • Bitcoin: transaction and block structure.  Mining : Proof of Work, rewards. Bitcoin: attacks, 51%, double spending. Bitcoin: tracciabilità e mixing. Structure of the P2P network.
  • Bizantine Fault-Tolerance (BFT) Consensus and BFT-based blockchains.
  • Ethereum: smart contract, gas. Consensus: from PoW to PoS. Ethereum: Solidity, smart contracts programming. Smart contract security and attacks.
  • Distributed Ledgers Applications: tokens (fungible and non-fungible), Self Sovereign Identity, Supply-chains.
  • Scalability enhancement: Zero Knowledge rollup e optimistic roll-up, side chain, inter-chain protocols, channel networks (Lightning network).

complementary content:

  • Peer to peer system: applications BitTorrent, a Content Distribution Network, implementation of the Kademlia  DHT.

Required teaching material

Slides and didactic content published on the web site of the course.

Teaching volume:
lessons:
18-48 hours
Exercices:
Supervised lab:
0-14 hours
Project:
0-2 hours

Devices:

  • Laboratory-Based Course Structure
  • Open-Source Software Requirements