Des calculs complexes et stupides par milliards


Réaliser un travail complexe et stupide de calcul a-t-il de la valeur, et permet-il de gagner de l'argent ?

La réponse semble évidente : non.

Si je m'amuse à faire de très grandes multiplications entre nombres tirés au hasard, cela n'a aucun intérêt, et personne ne sera prêt à me payer pour cela.

Il existe pourtant une situation où faire des calculs stupides très complexes permet de gagner de l'argent. Il s'agit du «minage des Bitcoins».

Le Bitcoin est une monnaie virtuelle électronique dont la principale caractéristique est d'être décentralisée. Nous ne reviendrons pas sur le détail de son fonctionnement (voir ici), mais nous allons nous intéresser à l'une de ses caractéristiques les plus étonnantes et qui apparaît d'une sidérante absurdité.

Pour assurer que personne ne triche (par exemple en créant des Bitcoins non prévus par le protocole d'émission parfaitement défini et fixé une fois pour toutes), les internautes sont invités à consacrer une part de la puissance de calcul dont il dispose à la validation les transactions et à leur enregistrement. Il faut que de nombreux internautes fassent ce travail, sinon la monnaie ne fonctionne pas. Le protocole général de la monnaie Bitcoin prévoit donc que ceux qui contribuent à la surveillance des échanges et à la gestion générale de la monnaie —qui n'est aux mains d'aucune banque ou État— sont récompensés par une somme de 25 Bitcoins (qui valent plus de 7000 euros en septembre 2014) toutes les 10 minutes. Une sorte de tirage au sort se déroule qui désigne un gagnant. Cette loterie distribue plus d'un million d'euros par jour.

Un assez grand nombre de personnes sont intéressées par cette activité appelée «minage des Bitcoins».

Le travail du mineur

Les règles du jeu sont les suivantes :

- Plus vous consacrez de puissance de calcul (en plus du travail de gestion des comptes de la monnaie Bitcoin) à mener certaines opérations plus vous avez de chances d'être le gagnant lors de la distribution des prochaines 10 minutes.

- Pour gagner, il faut calculer des valeurs f(x) un très grand nombre de fois, où f est une fonction bien définie et fixée une fois pour toutes (la fonction hachage SHA256).

- Le gagnant est celui qui trouve un x tel que f(x) possède une certaine propriété rare.

- La fonction f=SHA256 est considérée par les spécialistes de cryptographie comme produisant des valeurs imprévisibles et semblables à ce que produit le hasard. Il en résulte (sauf si on réussissait à casser la fonction de hachage ce qui est jugé très improbable, car nombreuses ont déjà été les tentatives pour cela) que calculer des valeurs f(x) est équivalent à opérer un tirage au sort. Réussir à trouver un x tel que f(x) possède la propriété gagnante est donc, en pratique, équivalent à gagner à un jeu de loterie.

- De tout cela, il résulte que pour augmenter ses chances de gagner, il faut multiplier les calculs de f(x) pour des x différents et qu'on ne peut rien faire de mieux. Plus vous êtes capable de calculer vite des f(x), plus vos chances de gagner les prochains 25 Bitcoins sont grandes. Une contrainte imposée aux mineurs sur les x qu'ils peuvent essayer a pour effet qu'il leur est impossible de mener des calculs à l'avance.

- Le nombre moyen de fois qu'il faut effectuer un calcul du type f(x) pour gagner est régulièrement et automatiquement ajusté pour que gagner exige environ 10 minutes à l'ensemble de ceux qui essaient. Si le temps moyen pour que quelqu'un gagne diminue, la difficulté pour gagner est modifiée : on exige une propriété plus rare pour f(x) ; gagner demandera à nouveau 10 minutes environ à la communauté des mineurs de Bitcoins.

La conséquence de ce système est qu'aujourd'hui dans le monde une somme considérable de moyens est consacrée à calculer des f(x) qui ne servent à rien. La somme dépensée, D, à ces calculs est en gros équivalente à celle à gagner, G. En effet, quand D < G de nouveaux joueurs arrivent, car il y a de l'argent facile à gagner, et quand D > G il n'est plus rentable de miner et donc certains mineurs renoncent. On dépense donc plus d'un million d'euros en moyenne par jour pour calculer des f(x) en grand nombre dont tout le monde se moque et que personne d'ailleurs ne mémorise. Aujourd'hui, on évalue la fonction f=SHA256 plus de 240 millions de milliards de fois par seconde (voir le « taux de hash » ici) .

Des informations sur le minage des Bitcoins et son évolution se trouvent en  a ou b ou c

Que la logique du protocole Bitcoin soit parfaite et que ce système de récompense —et donc les dépenses formidables engagées pour calculer des f(x)— soit d'une rationalité imparable (il faut qu'il y ait des volontaires pour mener les opérations de gestion de la monnaie ; il faut donc une incitation, etc.) ne fait pas de doute. On peut remarquer d'ailleurs que toutes les monnaies ont aussi des coûts de fonctionnement importants : coffres, conception et impression des billets, transports, etc. Il n'en reste pas moins que les centaines de millions d'euros qui ont été dépensés pour calculer des f(x) n'ont pas servi directement à la gestion de la monnaie Bitcoin, mais seulement à la désignation des gagnants toutes les 10 minutes parmi ceux qui participent à la gestion de la monnaie. Ce n'est pas pareil, et cela conduit à se poser la question :

- N'y aurait-il pas une méthode pour inciter les internautes à gérer la monnaie Bitcoin, et un système de désignation des gagnants qui n'entraînent pas cette absurde course aux calculs des f(x) ?

La chose n'est pas si facile. Si par exemple on tirait au hasard (avec un système décentralisé) un gagnant toutes les 10 minutes, cela se ferait sur la base d'une déclaration de participation qui ne pourrait pas être la puissance de calcul engagée (car comment vérifier ce que déclareraient les candidats ?). On risquerait alors qu'un même participant se présente plusieurs fois, voir des milliers ou des millions de fois. Comment empêcher cela ?

Plusieurs solutions pour remédier à l'absurdité gravissime du minage des Bitcoins ont été envisagées et certaines ont été mises en place. Mentionnons quatre idées.

A Mener des calculs utiles

Plutôt que de multiplier le calcul de f(x) (pour la fonction SHA256) ce qui ne sert à rien, ne peut-on pas envisager un autre calcul qui serait utile ?

C'est l'idée à la base des Primecoin. Le calcul de f est remplacé par des calculs qui permettent de trouver des chaînes de nombres premiers qui intéressent certains mathématiciens. Voir ici plus de précision dans l'article suivant qui explique l'idée générale des preuves de travail : exiger pour mesurer l'engagement d'un système informatique qu'il prouve qu'il y consacre des ressources de calculs.

Le défaut de cette méthode est que ces chaînes de nombres premiers ne sont pas très utiles, et que les mathématiciens intéressés sont un nombre infime. Grâce à ce minage particulier, la découverte de nouvelles chaînes s'est produite ce qui est un succès de Primecoin. Malheureusement, l'impact mathématique de ces découvertes est très faible.

Il faudrait donc trouver autre chose : que les calculs faits soient utiles pour résoudre des problèmes biologiques coûteux en calcul, comme l'alignement des séquences génétiques ou le repliement des protéines. Des équipes travaillent à cela, comme celle du projet Curecoin.

La difficulté est que les calculs faits doivent permettre de manière sûre de choisir équitablement et sans tricherie possible un gagnant sur la base de la puissance de calcul qu'il engage. C'est l'idée des preuves de travail et n'importe quel calcul ne peut pas entrer dans un tel système. Pour les chaînes de nombres premiers on a pu s'en sortir, mais il n'est pas clair de savoir quels sont les calculs permettant la même chose ? En existe-t-il qui soient véritablement d'une utilité générale ?

B Plutôt que d'engager du calcul, engager de la mémoire.

Le choix du gagnant doit se faire sur la preuve qu'il s'engage et il doit gagner —si possible— proportionnellement à son engagement, car sur le réseau, on ne peut pas envisager de le faire équitablement par individu (comme pour une élection : une personne = une voix). Il faut que l'engagement soit infalsifiable et indubitable et comporte un réel coût pour limiter la part qu'un seul joueur peut capter. Personne ne doit pouvoir s'emparer du pouvoir sur la monnaie.

L'idée des Permacoins est de s'engager non pas en prouvant qu'on calcule beaucoup, mais en prouvant qu'on met à la disposition d'un réseau qui l'utilisera utilement des ressources mémoire importantes. Les chances de gain ne sont plus proportionnelles à votre capacité à faire quelque chose de stupide, mais proportionnelles à la mémoire que vous prêtez, ce qui est utile pour tous (par exemple pour faire des archives, ou des copies de sécurité, etc.). L'idée semble bonne. Voir a et b et c.

C Faire gagner ceux qui sont déjà détenteurs.

Éviter que les mineurs vendent leurs Bitcoins aussitôt qu'ils en ont gagnés, est un problème. En effet, si trop de Bitcoins sont mis en circulation et que la demande est réduite, alors le cours du Bitcoin baisse. Pour la stabilité d'une monnaie cryptographique, il semble utile de créer une incitation à la conservation des unités monétaires.

Distribuer de nouvelles unités monétaires à ceux qui surveillent et font fonctionner une monnaie cryptographique de type Bitcoin avec une probabilité de gain proportionnelle à ce que chacun possède semble répondre au problème. On dit qu'on remplace « les preuves de travail » par des  « preuves de détention » (proof of stake). Cela éviterait le gâchis du système Bitcoin. Cependant, c'est aussi une idée assez déplaisante, car elle favorise trop les premiers entrants. L'idée de systèmes mixtes comportant une dose de « preuve de travail » (ou de  « preuve d'engagement mémoire ») en même temps qu'une  dose de « preuve de détention » permettrait de corriger en partie les défauts du Bitcoin. Certains l'envisagent. Voir ici.

D Limiter l'absurdité du minage en le changeant un peu

Admettons qu'il est utile de distribuer une récompense toutes les dix minutes avec des probabilités de gagner en proportion des puissances engagées. Plutôt que de mener la compétition pendant les dix minutes séparant la création de nouveaux Bitcoin, organisons toutes les dix minutes un concours de 10 secondes, permettant de déterminer le gagnant. Ne faisons aucune compétition dans l'espace de temps entre deux concours de 10 secondes. Ajustons le reste du protocole à cette idée. Le gain que fournirait une telle méthode diviserait la consommation d'électricité par 60. Cette économie ne concernerait pas les investissements en matériel qui même s'ils ne servent que dix secondes toutes les dix minutes seraient soumis à la même course à la puissance qu'aujourd'hui. Cette idée mérite d'être explorée en détail pour être certain qu'elle tient (et peut vraiment se substituer à l'idée initiale). Bien sûr, on peut aussi modifier les paramètres et remplacer par exemple « 10 secondes » par « 1 seconde » (augmentant encore le gain énergétique).

 

Notre monde est de plus en plus informationnel et computationnel (excusez-moi de l'usage de ces affreux mots), et cela a comme conséquence de très étranges phénomènes qui sont parfaitement rationnels vus du côté des concepteurs de protocoles, mais qui sont aussi parfaitement et gravement absurdes si on considère la dépense de moyens et d'énergie qu'ils entraînent. C'est le cas de cette course bien réelle aujourd'hui — qu'on désigne par « industrie du minage » —, où on calcule des f(x) par milliards, en dépensant des millions d'euros pour fabriquer des dispositifs spécialisés et pour payer l'électricité consommée dans des opérations qui n'ont aucun intérêt direct et dont on efface aussitôt les résultats.

Curieuse complexité, non ?

 

 

 

 

 


4 commentaires pour “Des calculs complexes et stupides par milliards”

  1. Alex Répondre | Permalink

    Bonjour Jean-Paul Delahaye,

    Votre réflexion n'est pas bête et d'ailleurs c'est un sujet de discutions dans la communauté un peu partout dans le monde. Malheureusement vous n’approfondissez pas votre thèse en oubliant de comparer Bitcoin, et plus généralement les crypto-monnaies avec quoi ils sont concurrence: c'est à dire les protocoles propriétaires comme Visa / Mastercard, mais comme ce sont des technologies décentralisées, ont peut aussi y compter le coût du système bancaire mondiale.

    Le coût des bâtiments (1,2 milliards pour le nouveau bâtiment de la BCE), du personnels, des électricités, du chauffage, du pétrole+véhicules (transfert de fond), la R&D pour sécuriser un bout d'papier, du marketing/press, de la sécurité qui ne sécurise pas grand chose, de la démagogie/corruption, et etc... cela commence à faire beaucoup.

    Surtout que réaliser un "travail complexe et stupide de calcul" sert essentiellement (au seins du protocole Bitcoin) à sécuriser le réseau par le PoW.

    Alors malheureusement je n'ai ni de chiffres, ni d'études entre mes mains pour démontrer mon argument, mais si quelqu'un à un début de piste, je serais très intéressé.

    Cordialement.

Publier un commentaire