Bien que l’on ait tendance à évoquer le bitcoin comme une révolution purement financière et monétaire, il ne faut pas oublier qu’il est aussi ( et surtout) une résolution d’un problème dans le domaine informatique des plus ardus. Nous parlons du problème des « généraux Byzantins ». Ne vous méprenez pas sur une expression qui semble relater un petit cours d’histoire. Nous parlons d’un problème qui traite de la difficulté pour un système décentralisés de parvenir à un consensus fiable, alors même que des éléments puissent transmettre une information fausse.
Sans que Satoshi Nakamoto ne mentionne directement le problème des généraux Byzantins dans le livre blanc du bitcoin, sa proposition y apporte une solution.
Comment Bitcoin a-t-il résolu ce problème complexe? Découvrons-le dans cet article qui vous expliquera en terme simple ce que signifie ce problème et la manière dont il est résolu avec Bitcoin.
Comprendre le problème des généraux Byzantins
Le problème des généraux byzantins est une métaphore utilisée dans le domaine mathématique qui décrit une situation où les participants à un réseau décentralisé doivent parvenir à un consensus malgré la présence de participants malveillants ou défectueux. Ainsi, la métaphore permet de représenter les généraux par les nœuds d’un réseau, et la ville qu’ils assiègent renvoie au fameux consensus à atteindre.
def byzantine_generals_problem():
# Les généraux sont les nœuds du réseau
generals = ["A", "B", "C", "D", "E"]
# La ville est le consensus à atteindre
city = "Consensus"
Le principal défi de ce problème est que certains généraux peuvent s’avérer être des (sales) traîtres qui envoient des informations contradictoires et fausses pour semer la confusion et empêcher l’atteinte du consensus. La grande question du « problème » donc consiste à se demander comment faire pour empêcher la fausse information de circuler et de mettre à mal le consensus.
Il est important de noter que seuls les systèmes décentralisés sont sensibles au problème des généraux byzantins, car ils n’ont pas de source d’information fiable et n’ont aucun moyen de confirmer l’information qu’ils reçoivent des autres utilisateurs du réseau. Le problème ne se pose pas dans un système centralisé puisque précisément l’information peut-être validée et contrôlée par l’entité centrale.
👩🏫 Un peu d’histoire : « Byzance » fait référence à l’Empire byzantin, que l’on appelle aussi l’Empire romain d’Orient. C’était un empire qui a émergé après la division de l’Empire romain en 395 et a duré jusqu’à la chute de Constantinople en 1453. L’Empire byzantin avait pour centre la ville de Byzance, qui a été renommée Constantinople (et qui est actuellement Istanbul, en Turquie) par l’empereur romain Constantin Ier au IVe siècle.
L’importance du problème des généraux Byzantins
Ce problème a été traité de façon détaillée pour la première fois dans l’article « The Byzantine Generals Problem » qui a été publié en 1982. Étant donné le contexte, c’était alors un problème de taille, qui est devenu plus important avec l’émergence des réseaux informatique connectés. Il était alors nécessaire de trouver des solutions pour réaliser des transmissions fiables au sein d’un réseau.
En effet, si le problème des généraux byzantins est essentiel à résoudre, c’est parce qu’il affecte tous les types de systèmes informatiques, et pas seulement ceux qui sont exploitées dans des services sensibles, comme les applications militaires par exemple.
Si un groupe distribué de nœuds a besoin d’avoir une communication fiable entre tous les membres, il faut alors résoudre le problème des généraux byzantins. C’est indispensable.
Sans avoir de résolution formelle au problème des généraux byzantins, des alternatives ou des semi-réponses ont été apportés avec les systèmes qui sont dit « tolérants » aux pannes byzantines (BFT).
La tolérance aux pannes byzantines (BFT)
La tolérance aux pannes byzantines (BFT) est la capacité d’un système à résister à ces conditions. Les réseaux qui peuvent supporter plus de pannes byzantines ont une plus grande tolérance, ce qui signifie qu’ils sont plus sécurisés que ceux qui ne le peuvent pas.
Comment Bitcoin résout-il le problème des généraux Byzantins ?
Cela pourrait en surprendre plus d’un de savoir que le problème des généraux Byzantins à été résolu de manière indirecte. Effectivement, selon toute vraisemblance, le Bitcoin n’a pas été spécifiquement conçu pour résoudre le problème des généraux byzantins. Cependant, il propose une solution élégante mais solide à un problème connexe appelé le « problème de la double-dépense » dans un réseau décentralisé.
Le problème de la double-dépense est en fait une variante du problème des généraux byzantins dans le contexte précis des systèmes de paiement électronique. C’est un problème qui a fait surface dès les premières tentatives de créer une monnaie numérique décentralisée comme ce fût le cas avec l’e-gold ou encore le B-money de Wei Dai par exemple.
Bitcoin est parvenu à résoudre le problème de la double-dépense en introduisant un consensus distribué à travers un mécanisme appelé preuve de travail (Proof-of-Work). Dans le réseau Bitcoin, les nœuds (mineurs) doivent résoudre des problèmes mathématiques complexes afin d’ajouter un nouveau bloc à la Timechain. Cela demande du temps et des ressources énergétique, ce qui devient alors extrêmement difficile pour un acteur malveillant de falsifier tout l’historique des transactions.
En reliant les blocs les uns aux autres de manière séquentielle et chronologique, et en faisant en sorte que chaque bloc contienne une référence au bloc précédent, la blockchain de Bitcoin crée un consensus distribué. Si un nœud malveillant essaie de modifier une transaction dans un bloc passé, il devrait également modifier tous les blocs suivants, ce qui devient de plus en plus difficile à mesure que de nouveaux blocs sont ajoutés. C’est alors mathématiquement possible mais dans la réalité, infaisable.
C’est comme cela que le bitcoin résolve, de manière indirecte, le problème des généraux Byzantins.
Le problème des généraux byzantins dans le contexte financier
En ce qui concerne le domaine financier, le Bitcoin a été la première solution apportée au problème des généraux byzantins. En réalité, l’argent est un exemple idéale pour comprendre le problème des généraux byzantins. Comment une société peut-elle créer une monnaie en laquelle tous les membres peuvent avoir confiance sans qu’il y ait une autorité centrale qui décide de sa fiabilité? C’était tout là l’enjeu de la création du Bitcoin. Et c’était encore énigmatique avant la mise en place du mécanisme de proof-of-work qui nous donne donc une faisabilité empirique de ce problème.
Ainsi, la blockchain (ou plus exactement la « timechain ») offre aux personnes un moyen d’échanger en toute sécurité en étant sûre de la fiabilité des infirmations transmises.
Conclusion
Comme nous l’avons vu, le Bitcoin n’aborde pas directement le problème des généraux byzantins dans son ensemble. Pourtant, il apporte une solution subtile à une énigme que l’on pensait jusque là insurmontable. Ainsi, Satoshi Nakamoto a réussi à créer une monnaie dans un système décentralisé tout en garantissant la fiabilité des informations. C’est une prouesse mathématique, c’est quelque part un génie dans le procédé.
C’est ce qui explique d’ailleurs que de nombreux bitcoins sont convaincus que l’inventeur du Bitcoin pourrait mériter prix Nobel. Oui, et ce se ne serait là qu’une petite reconnaissance de ce qu’il a permis d’apporter au monde.
*Je m’excuse pour le ton dithyrambique de cet article, mais il m’a été difficile de minimiser cet aspect là du Bitcoin.
Pour aller plus loin :