(English version below)


Ce cours comporte deux parties, l’une avec Daniel Augot sur la
cryptographie et blockchains, l’une avec Bernadette Charron-Bost sur
les fondamentaux de l'algorithmique distributée et du problème du
consensus.


Pour les TPs, vous aurez à  les faire sur votre ordinateur personnel. Ils se feront en ligne de commance.


Installez  Docker  https://docs.docker.com/install et docker-compose https://docs.docker.com/compose/install/. Ces instructions sont plutôt bien faites.


Assurez vous d'avoir une connexion réseau, par exemple eduroam.


Le cours de Daniel Augot est un cours sur la cryptographie utilisée
dans blockchains. Il donnera un aperçu de plusieurs thèmes abordés
dans le monde des blockchains, après rappel de la cryptographie de
base (cryptage, intégrité, signature). Les sujets suivants seront
examinés: cryptage, intégrité, signature; les nombreuses utilisations
des fonctions de hachage cryptographique; Ethereum, «smart contrats»;
lightning, zero-knowledge, zk-snarks; blockchains «permissionnées»,
etc.


Il y aura des travuax pratiques, qui consisteront en la manipulation de
divers environnements logiciels. Nous utiliserons beaucoup docker, et
la ligne de commande.



Le cours de Bernadette Charron-Bost posera les fondamentaux du
problème du consensus (pas de travaux pratiques). Dans le problème du
consensus, chaque agent d’un système en réseau a une valeur d’entrée
et décide une valeur de sortie; il est nécessaire que tous les agents
finalement se décident sur la même valeur et que cette valeur commune
soit une (ou une fonction) des valeurs d'entrée. Les problèmes de
consensus se posent dans un certain nombre d'applications, y compris
la cohérence dans les bases de données répliquées, les agents
autonomes ou, plus récemment, dans la technologie de la blockchain.


Le problème du consensus (exact) est un problème fondamental d’accord
où chaque agent est conscient qu'un accord a été conclu, par
opposition au problème de consensus stabilisant où les agents sont
juste tenus de se stabiliser éventuellement sur la même valeur
d'entrée. Le consensus blockchain, également appelé le consensus de
Nakamoto, correspond à un type intermédiaire d'accord.


Le but de ce cours est d’explorer la solvabilité et les complexité de
ces différents problèmes d’accord dans différents contextes, en
fonction du modèle de synchronicité, du modèle de défaillance et
d’autres propriétés telles que le fait que le système soit ouvert ou
fermé 9systèmes «sans permissions» ou «avec permissions».


-----------------------------------------------------------------


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 can do them on your own laptop.

If so, install Docker  https://docs.docker.com/install and docker-compose https://docs.docker.com/compose/install/
.

Make sure you have eduroam

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).