Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Limites de la blockchain et alternatives

Après cette leçon: Je peux dire quand une blockchain est le mauvais outil et proposer une autre solution.

Leçon de 55 min2 commandesLab blockchain : une chaîne jouet en Python à lire, casser, miner et signer

Quand la blockchain est-elle le mauvais outil ?

Une blockchain est un registre partagé, copié chez tous ses participants. Elle est le mauvais outil dès qu’une base de données ordinaire fait le même travail, ce qui arrive presque toujours.

Vous allez voir ce qu’elle coûte en énergie, en vitesse et en confidentialité, puis choisir l’outil qui convient à un besoin.

À la fin de cette leçon

Remarque

Je peux dire quand une blockchain est le mauvais outil et proposer une autre solution.

Mots-clés

MotCe que ça veut dire
Base de donnéesun registre tenu par un responsable qui décide de ce qui y entre
Tiers de confianceune personne ou un organisme que tous les participants acceptent
Débitle nombre de transactions traitées par seconde
Effacementle droit de faire retirer des données personnelles
Journal en ajout seulun registre où l’on ajoute des lignes sans jamais en retirer

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La preuve de travail consomme de l’énergie

Chaque essai de minage est un calcul. Le travail est volontairement inutile : sa seule valeur est d’être cher à refaire. Chaque zéro de plus multiplie les essais par 16.

Le script mine.py écrit des mots anglais, comme « tries » pour essais. Il affiche 15, 835, 7992 et 109028 essais pour les difficultés 1 à 4. Le second calcul donne la moyenne pour huit zéros.

Revoir le coût de quatre difficultés

Commande
docker exec jupyter python3 steps/mine.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Les essais moyens de la difficulté 8

Commande
docker exec jupyter python3 -c "print(16 ** 8)"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un registre partagé est plus lent

Pour accepter un bloc, tous les participants doivent le vérifier et s’accorder, comme dans la leçon sur le consensus. Cela prend du temps.

Une base de données gérée par un responsable accepte une ligne en un instant. Le débit, le nombre de transactions par seconde, est bien plus faible pour une chaîne.

Une copie chez tous : rien ne se retire

Chaque participant garde le registre entier. Une donnée écrite dans un bloc est donc copiée partout, et la changer demande de refaire la chaîne.

C’est un problème pour des données personnelles : une personne a le droit de demander leur effacement. On n’y écrit donc jamais une donnée secrète, au plus son empreinte.

Les alternatives à une blockchain

BesoinSolution plus simpleCe qu’elle garantit
Un seul responsable tient le registreUne base de données avec des droits d’accèsLe responsable décide qui écrit
On veut voir si une ligne a été changéeUn journal en ajout seul avec des empreintes en chaîneToute modification se voit, sans minage
Plusieurs sites gardent la même copieUne base de données répliquéeChaque site a la même donnée, vite
Des rivaux écrivent sans arbitre communUne blockchain peut convenirPersonne n’est obligé de croire quelqu’un d’autre

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Exemple travaillé : choisir l’outil pour trois situations

SituationPlusieurs écrivains ?Arbitre de confiance ?Données secrètes ?Choix
Stock de la cantine d’un lycéeNonOui, le lycéeNonBase de données
Cinq transporteurs rivaux qui notent leurs livraisonsOuiNonNon, peu de lignesUne blockchain peut convenir
Dossiers de patients d’un hôpitalOuiOui, l’hôpitalOuiBase de données avec droits d’accès

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Erreur fréquente

Attention

On croit qu’une blockchain est toujours plus sûre qu’une base de données. Elle rend les modifications visibles, rien de plus. Elle ne vérifie pas que ce qu’on y écrit est vrai. Si un responsable de confiance existe, elle coûte plus cher pour un service pire.

Les essais moyens selon la difficulté

Code: python
for difficulte in range(1, 9):
    essais = 16 ** difficulte
    print("difficulté", difficulte, ":", essais, "essais en moyenne")

Les essais montent très vite avec les zéros

Le programme affiche huit lignes, de 16 essais pour un zéro jusqu’à 4294967296 pour huit zéros. Chaque ligne vaut seize fois la précédente.

C’est pour cela qu’un réseau réglé sur une grande difficulté consomme tant d’énergie.

À propos de ce labo et de sa source: Lab blockchain : une chaîne jouet en Python à lire, casser, miner et signer

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.