• Aucun résultat trouvé

TITRE I – CONTRATS INTELLIGENTS : APPROCHE TECHNOLOGIQUE

Chapitre 1 – L’histoire et la technologie des contrats intelligents

1.1. Aperçu des aspects techniques de la chaîne de blocs

1.1.2. Caractéristiques des chaînes de blocs

1.1.2.3. Consensus

En plus de favoriser le système distribué par la participation de plusieurs nœuds, le consensus est l’outil qui permet de régler les transactions dans la chaîne de blocs, en validant ou non son inscription sur le réseau.

Habituellement, la preuve de travail (proof of work, en anglais) est la première méthode de consensus connue de ceux qui commencent à étudier le thème parce que c’est le mécanisme utilisé par le réseau Bitcoin (l’application qui a inauguré la mise en œuvre des chaînes de blocs). Dans cette méthode de validation des transactions se trouve le rôle des mineurs (miners). Ces sont les personnes qui, en validant les transactions, recevront une récompense puisqu’elles auront investi leur temps et la puissance de calcul de leur ordinateur afin de trouver la solution du problème mathématique nécessaire à l’inscription de la transaction sur le bloc et du bloc sur la chaîne. Seul le premier à trouver la solution est récompensé par des cryptomonnaies ou tokens.

57 David TERUZZI, Combien ça coûterait une attaque 51% ?, 11 février 2016, en ligne :

26

Toutefois, il existe d’autres méthodes de consensus58, comme le Paxos59, la délégation

de preuve de possession60, le Raft61, le Tangaroa62 et la « preuve d’enjeu » ou « preuve de

participation » (proof of stake, en anglais). Cette dernière est de plus en plus prise en considération. Dans le cas de la preuve de participation, le pouvoir des nœuds afin de valider et d’ajouter des blocs à la chaîne se mesure en raison de la quantité de cryptomonnaies qu’ils possèdent.

Indépendamment des différences entre ces formes de consensus, ce qu’il faut garder à l’esprit c’est qu’ils ont tous la même finalité : ils visent à apporter une solution à une question informatique présentée pour la première fois en 1982, « le problème des généraux byzantins »63.

Ce problème, en somme, pèse sur la coordination de la confiance entre les interlocuteurs dans un réseau. La métaphore fait allusion à l’organisation des généraux en mission d’attaque, qui ont besoin d’échanger de l’information de façon fiable sans l’interférence d’autres généraux considérés comme traîtres. Ainsi, la manière d’éviter l’échec du plan est d’arriver à un consensus en empêchant la réussite d’actions non voulus par les traîtres. Dans ce but, il faut trouver un

58 « Nous croyons que les mécanismes de consensus vont évoluer pour atteindre des besoins spécifiques, qu’il

s’agisse d’une application particulière, de possibilités techniques ou d’un environnement réglementaire. » Sigrid SEIBOLD et George SAMMAN, Consensus. Immutable Agreement for the Internet of Value, juin 2016, p. 9, (PDF)

en ligne : <https://assets.kpmg.com/content/dam/kpmg/pdf/2016/06/kpmg-blockchain-consensus- mechanism.pdf> dans S. LOIGNON, préc., note 25, p. 59.

59 Cf. MARKCC. Paxos, a really beautiful protocol for distributed consensus, 30 janv. 2015, en ligne :

<http://www.goodmath.org/blog/2015/01/30/paxos-a-really-beautiful-protocol-for-distributed-consensus/> (consulté le 2 nov. 2018)

60 Cf. BITSHARES. Delegated Proof of Stake, en ligne : <http://docs.bitshares.org/bitshares/dpos.html> (consulté le

2 nov. 2018)

61Cf. GITHUB, The Raft Consensus Algorithm, en ligne : <https://raft.github.io/> (consulté le 2 nov. 2018) 62 Cf. Christopher COPELAND et Hongxia ZHONG, Tangaroa: a Byzantine Fault Tolerant Raft, 2014, (PDF) en ligne :

<http://www.scs.stanford.edu/14au-cs244b/labs/projects/copeland_zhong.pdf> (consulté le 03 nov. 2018)

27

code (algorithme) capable d’assurer que les bons généraux approuvent une décision au moyen des messages partagés entre tous les membres impliqués, formant le consensus entre eux64.

Il est simple de transposer ce problème à la situation des chaînes de blocs : il s’agit d’éviter que certains nœuds soient capables de guider la validation des transactions et d’ajouter des blocs à la chaîne de façon malveillante. En réalité, « les désaccords sont réglés par consensus d’une majorité des membres du réseau. »65, ce qui pourrait nous amener au cas des attaques à

51% déjà mentionnées.

Au-delà du problème des généraux byzantins, le problème technique connu comme « double dépense »66, ce qui était considérée une des principales difficultés à la mise en œuvre

des monnaies électroniques décentralisées67, est également lié au consensus. Avant la

cryptomonnaie Bitcoin, il n’y avait pas de « contrôle » fiable sur les dépenses dans le cas des monnaies décentralisées, c’est-à-dire qu’un même montant pouvait servir à plusieurs transactions sans la mise à jour des valeurs effectivement disponibles.

Ainsi, la même valeur X pourrait servir à plus d’un versement. Les monnaies fiat ou électroniques centralisées ne connaissent pas ces problèmes, car une tierce partie de confiance surveille leurs transactions, et s’assure de la mise à jour des valeurs qui peuvent être dépensées, ce qui évite la duplicité d’utilisation d’un montant. Par conséquent, le consensus s’est imposé comme la manière d’éviter la double dépense des monnaies électroniques décentralisées.

64 L. LELOUP, préc., note 26, p. 46-48. 65 S. LOIGNON, préc., note 25, p. 45.

66 « Double-spending and fraud are not illegal in Bitcoin ; in other words, they are just ‘taxed’ to such degree that

it’s prohibitively expensive. » M. J. CASEY et P. VIGNA, préc., note 24, p. 68.

67 Grahame JOHNSON et Lukasz POMORSKI, « Exposé sur les monnaies électroniques », Banque du Canada, 2 avril

2014, Ottawa, (PDF) en ligne : <https://www.banqueducanada.ca/wp-content/uploads/2014/04/discours_senat.pdf>

28

Finalement, étant donné qu’une transaction ne pourra pas être modifiée ou effacée, il faut bien reconnaître l’authenticité de l’opération avant de la valider et l’inscrire dans le réseau. Ainsi, l’importance du consensus est évidente puisqu’elle renforce le fondement d’immutabilité des informations mises sur la chaîne de blocs.