This course has two parts, one with Daniel Augot on cryptography and
blockchains, one with Bernadette Charron-Bost on the fundamental
consensus problem.

For the lab, you will have to do them on your own laptop. Make sure you have an Internet connection (say Eduroam)

The labs require, please install Docker before the lab https://docs.docker.com/install and docker-compose https://docs.docker.com/compose/install/
.

Daniel Augot's course is a course about the cryptography used in
blockchains. It will give an overview of several themes discussed in the
blockchain space, after recalling basic cryptography (encryption,
integrity, signature). The following topics will be surveyed:
encryption, integrity, signature;   the many uses of cryptographic  hash
functions; ethereum, smart contracts;  lightning, zero-knowledge,
zk-snarks; permissionned blockchains, etc.

There will be labs, which will consist in manipulation of various
software environments in the blockchain area. We will rely heavily on
docker, and on the command line.


Bernadette Charron-Bost's course is  as follows (no labs). In agreement
problems, each agent of a networked system has an input value and
outputs a series of values;  it is required that all the agents
eventually output the same value and that this common value is one (or a
function) of the input values. Agreement problems arise in a number of
applications including consistency in replicated databases, motion of
autonomous agents or, more recently, in the blockchain technology.

The (exact) consensus problem is a fundamental agreement problem where
each agent is aware that agreement has been reached, as opposed to the
stabilizing consensus problem where agents are just required to
eventually stabilize on the same input value. The blockchain consensus,
also called the Nakamoto consensus, corresponds to an intermediate type
of agreement.

The  goal of this course is to explore the solvability and the
complexity of these different agreement problems in various contexts, 
depending on the synchrony model, the failure model, and on other
features like the fact that the system is open or closed (permissioned
vs. permissionless systems).