Memoire
Memoire
po sy
prends par Teams
P peiner par Sy
Teens
Jeu du minage, et sécurité du protocole Bitcoin
par Cyril Grunspan
26 janvier 2022
Résumé
Dans ce mémoire, nous considérons la sécurité et la stabilité de Bitcoin. Nous donnons un
algorithme simple donnant le seuil minimal en terme de puissance de hachage relative au-
delà duquel un mineur n'est plus incité à se comporter de manière honnête. Nous donnons
une stratégie simple expliquant cette anomalie due à une faille dans la formule d'ajustement
du paramètre de diculté de minage dans le protocole Bitcoin. Nous donnons aussi une
reformulation en terme de variation du jeu classique de pile ou face. Nous démontrons qu'une
légère modication de Bitcoin qui prendrait en compte la production de blocs orphelins
l'immuniserait contre d'éventuelles attaques de rétention de blocs. De telles analyses sont
nécessaires si un assureur souhaite prendre part à l'économie des cryptomonnaies comme
par exemple, couvrir les risques inhérents au fonctionnement d'une plateforme d'achat et de
vente. Nous proposons plusieurs pistes à un assureur qui souhaiterait se positionner dans
cet univers. Le nouveau monde de la nance décentralisée et l'incertitude naturelle liée aux
contrats automatiques pas toujours exempts de bugs informatiques semblent un territoire
plein d'opportunités. Enn, nous expliquons le principe des log-contrats discrets avancés par
Tadge Dryja. Il pourrait à l'avenir donner vie à une autre nance décentralisée sur Bitcoin
en étendant les possibilités du Lightning Network , une surcouche du réseau Bitcoin avec
des performances inégalées en terme de vitesse et de débit des transactions. Les assurances
paramétriques pourraient naturellement y trouver une place.
Mots-clefs: Bitcoin, Blockchain, Preuve de travail, Processus de décision markovien, Jeu de
Pile ou Face, Consensus distribué
Abstract
In this paper, we consider the security and stability of Bitcoin. We give a simple algorithm
giving the minimum threshold in terms of relative hash power beyond which a miner has no
incentive to behave honestly. We give a simple strategy explaining this anomaly due to a
aw in the mining diculty parameter adjustment formula in the Bitcoin protocol. We also
give a reformulation in terms of a variation of the classical coin ip game. We show that a
slight modication of Bitcoin that takes into account the production of orphan blocks would
make it immune to possible block withholding attacks. Such analyses are necessary if an
insurer wishes to take part in the cryptocurrency economy, such as covering risks inherent
to the operation of an exchange platform. We propose several avenues for an insurer who
would like to position itself in this universe. The new world of decentralized nance and the
natural uncertainty linked to automatic contracts that are not always computer bug free
seem to be a territory full of opportunities. Finally, we explain the principle of discrete log-
contracts advanced by Tadge Dryja. In the future, it could give life to another decentralized
nance on Bitcoin by extending the possibilities of the "Lightning Network", an overlay of the
Bitcoin network with outstanding performance in terms of speed and transaction throughput.
Parametric insurance could naturally nd a place in this.
Keywords: Bitcoin, Blockchain, Proof of Work, Markov Decision Process, Coin tossing,
Distributed Consensus
1
2 Section 1
part certains beugues mineurs inévitables corrigés pour certains avec l'aide d'Hal Finney, un célèbre
cryptographe américain, le code de Bitcoin ait été opérationnel assez rapidement. Sur le fond, la
plupart des techniques existaient déjà avant lui. Les preuves de travail remontent aux travaux de
Cynthia Dwork et Moni Naor en 1992. L'idée de contrat automatique ( smart contract ) remonte
aux écrits de Nick Szabo en 1994 et celle de blockchain (on parlait alors de Timestamp server )
remonte aux travaux de Stuart Haber et W. Scott Stornetta en 1995. Mais la plupart du temps, ces
idées n'étaient que des projets ou des brillants articles de recherche, rarement mis en pratique. Le
génie de Satoshi Nakamoto a été de mettre toutes ces idées ensemble et de donner vie concrètement
à une cryptomonnaie (j'utilise ce terme même si le G20 s'y refuse et préfère parler de crypto-
actif ). Le créateur du Bitcoin est avant tout un informaticien professionnel de grand talent. A
cela, il faut ajouter une idée vraiment nouvelle : un algorithme de consensus (généralement appelé
aujourd'hui consensus de Nakamoto) dans un univers dit permissionless où personne n'a besoin
de demander d'autorisation à personne pour rentrer dans le réseau. Cette algorithme basé sur
l'utilisation répétée de preuves de travail est la pierre fondatrice du Bitcoin. Elle permet la création
d'une monnaie vraiment décentralisée. Plusieurs cryptomonnaies existaient avant bitcoin mais
aucune n'était vraiment décentralisés et pour cette raison étaient vulnérables. Il est remarquable
que toutes les tentatives de cryptomonnaies décentralisées avaient échoué avant bitcoin, ce qui a
pu expliquer du reste le scepticisme au début de certains cryptographes sur Metzdowd.
Mais rapidement, Bitcoin a gagné en popularité. Hal Finney a vite été rejoint par plusieurs
informaticiens de talent comme Gavin Andresen, Mike Hearn ou Peter Todd devenus chacun
développeurs de Bitcoin Core - certains ont bien sûr quitté Bitcoin Core depuis. Les passionnés
se retrouvaient sur bitcointalk un forum crée par Satoshi Nakamoto dès 2009. Là ont commencé à
s'échanger réellement les premiers bitcoins qui étaient même parfois oerts au début ! C'est aussi
là que certains utilisateurs ont commencé à s'interroger sur la sécurité réelle du protocole Bitcoin,
voire à en proposer d'autres. En 2010, Bitcoin étaient déjà connu du grand public. En France, le
premier article du journal Le Monde remonte semble-t-il à 2011. Puis, des premières plateforme
d'échange de cryptomonnaies sont apparues. Bitcoin-Central, l'ancêtre de Paymium a par exemple
été crée en 2011. Coinbase qui a aujourd'hui une taille comparable à celles des GAFAM a été crée
un an après en 2012. Il est faux de croire que les Français soient passés à côté de l'avénement du
Bitcoin et des cryptomonnaies. Certains étaient des pionniers mais faute de soutien, ou plutôt à
cause de batons dans les roues, ils n'ont pas pu prospérer comme d'autres acteurs américains. En
2013, une plateforme, Mt Gox a fait faillite. En 2015, Vitalik Buterin, un passionné de bitcoin et
l'un des premiers journalistes du magazine en ligne Bitcoin-Magazine a crée Ethereum, une autre
cryptomonnaie s'appuyant sur une légère variation du consensus de Nakamoto. Les premiers ethers
ont été préminés et proposés à l'achat. Aujourd'hui, la capitalisation de toutes les cryptomonnaies
est supérieur à 2 000 milliards de dollars (en hausse) avec une prédominance de bitcoin d'environ
40%.
Dans un contexte où les taux directeurs sont toujours bas, certains assureurs imaginent investir
dans les cryptomonnaies pour diversier leur portefeuille.
Que reste-t-il de tous ces projets ? Peu de choses. Blythe Masters ne dirige plus l'entreprise
qu'elle a crée ; Goldmann Sachs, Santander et JP Morgan ont quitté R3-CEV et IBM a cessé de
développer Hyperledger mettant son équipe blockchain au chomage. Conformément au célèbre
graphe du changement et des innovations, après l'immense attente de la révolution blockchain
est venue immanquablement la terrible désillusion.
Certes, certains jusqu'au-boutistes soutiennent encore le point de vue blockchain oui, Bitcoin
non et songent même parfois à des bases de données plus générales fonctionnant grâce à des
preuves de travail comme Bitcoin ou Ethereum. Dicile de leur donner tort sur le papier puisque
même Stuart Haber et Scott Stornetta, les créateurs du concept de blockchain privée, l'avaient
imaginé [7]. L'expérience récente a montré cependant que la plupart de ces projets n'ont pas tenu
la route.
Et du reste, si l'on copie réellement Bitcoin, on ne comprend pas pourquoi des mineurs devraient
dépenser de l'énergie pour sécuriser et enrichir une base de données s'ils ne sont pas rémunérés
pour ce travail. Ce mécanisme semble mieux adapté à la gestion d'un registre de comptes distribué
comme une cryptomonnaie. Par ailleurs, des systèmes distribués existent déjà depuis longtemps
et existeront encore sans l'utilisation des preuves de travail. Internet notamment n'a pas attendu
Bitcoin pour fonctionner.
plus autour du pot. Pour ne donner qu'un exemple, Tesla a déclaré avoir acquis l'équivalent de
1.5 milliards de dollars en bitcoins... Les fonds d'investissement, toujours à l'aut de possibles
opportunités de gain et sous la pression de certains épargnants n'hésitent pas non plus à prendre
des positions sur le marché des cryptomonnaies. C'est à conrmer mais il semblerait que Blackrock,
le plus gros gestionnaire d'actifs au monde ait aussi pris une position en futures sur Bitcoin pour
plusieurs centaines de millions de dollars en bitcoin. Ce n'est rien à l'échelle de ce géant mais la
prise de position est signicative de cette nouvelle tendance. Même JP Morgan autrefois si négative
envers Bitcoin souhaite pouvoir proposer un accès à ce nouveau marché pour ses clients. Dans le
même sens, Goldman Sachs vient également de déposer une demande de création d'ETF à la SEC.
Il semblerait d'ailleurs qu'il existe déjà trois ETF Bitcoin au Canada. Les banques d'investissement
ne sont pas loin de créer des desks de trading de cryptomonnaies...
Il nous parait donc que les assureurs auraient intérêt à revoir leur position sur la blockchain .
L'échec de l'assureur Fizzy qui promettait d'assurer des billets d'avion contre des retards de vol et
de verser des dédommagements sur une blockchain peut nous éclairer. L'idée était certainement
bonne mais malheureusement trop peu de clients a souscrit à un tel contrat.
L'avenir de l'assurance semble davantage prendre corps dans la nance décentralisée et les
cryptomonnaies plutôt que dans des applications blockchains inexistantes.
6 Section 3
Au fond, les deux mondes de l'assurance et des cryptomonnaies ne sont pas si diérents l'un de
l'autre. D'un point de vue technique, le problème du minage de cryptomonnaies peut du reste se
voir comme un problème dual de la ruine en assurance. Au lieu de modéliser le ux positif d'arrivée
de nouveaux contrats par un paramètre constant comme c'est souvent fait et les annonces négatives
de nouveaux sinistres par un processus de Poisson, on peut modéliser les annonces positives de
créations de nouveaux blocs par un processus de Poisson et le coût de minage par un paramètre
constant. C'est ce point de vue que nous allons développer maintenant.
2 Assurer ?
Il semble que l'univers des cryptomonnaies soit plein d'opportunités pour les assureurs. Néanmoins,
le milieu est-il vraiment sain ? Assurer des vendeurs qui vendent de la camelote à des clients n'a
pas de sens, en plus d'être illégal. Fondamentalement, on doit savoir si on peut faire conance à
Bitcoin et aux autres cryptomonnaies. Il s'agit ici d'étudier la sécurité des protocoles décentralisés.
Si un assureur doit assurer une plateforme d'échange qui vend des bitcoins ou une cryptomonnaie
lambda, il doit au moins chercher à savoir si bitcoin ou lambda est de près ou de loin un actif ayant
les propriétés d'une monnaie ou bien s'il ne s'agit que d'une arnaque, une bulle . L'assureur est
ainsi amené à regarder de plus près la sécurité du protocole bitcoin ou lambda, à comprendre en
profondeur le fonctionnement des cryptomonnaies.
La principale attaque sur un réseau de cryptomonnaies est l'attaque à la double dépense. Un
utilisateur fut-il un mineur ne doit pas être en mesure de dépenser deux fois une même somme.
L'analyse sur Bitcoin a été faite par Satoshi lui-même dans son papier fondateur. Il ressort qu'en
prenant des précautions élémentaires, une transaction bitcoin est sure ou quasiment sure : on ne
peut revenir en arrière ; ce qui a été ordonné ne peut être eacé. Plus exactement, la probabilité
de réussite peut être rendu très faible. De plus, à moins de répéter sans arrêt des escroqueries sur
des sommes gigantesques, un mineur n'a pas intérêt à se lancer dans une telle activité déviante.
Il lui faudrait mobiliser énormément d'argent, ce qui est impossible en pratique. La résolution du
problème de la double dépense par l'utilisation des preuves de travail est la principale prouesse de
Bitcoin.
Mais il faut aussi savoir si le protocole est stable, c'est-à-dire si le registre des transactions (la
blockchain) progresse régulièrement d'un bloc toutes les dix minutes en moyenne pour Bitcoin
avec des acteurs qui vont tous dans la même direction et cherchent à valider des blocs le plus
rapidement possible et à les publier. Est-ce vraiment une conséquence des règles du protocole ?
Pour un acteur quelconque, suivre celui-ci représente-t-il toujours la meilleure chose à faire ?
Parmi les noeuds du réseau, il en existe des lourds qui mènent en plus une activité de minage.
Un mineur est un noeud particulier qui cherche en plus à constituer un bloc. Par dénition, un
bloc B est un ensemble de données dont la taille est d'environ 2 Méga Bytes (pour Bitcoin). Il est
formé d'une référence à un ancien bloc, d'un ensemble de transactions piochées dans la mempool
du mineur, d'une date de création t, de la diculté de minage et d'un paramètre appelé nonce.
Dans les présentations du Bitcoin, on raconte souvent que le nonce est là pour créer de l'aléa an
que la relation suivante soit vériée :
1
h(B) < (1)
où h est la fonction de hachage SHA256 SHA256 (SHA256 est une fonction de hachage ou fonction
dite à sens unique recommandée par l'Agence Nationale de Sécurité Américaine (NSA). La relation
(1) est le critère adopté par tous les noeuds du réseau qui permet d'armer que le bloc B est
valide. Vu la diculté du problème, l'existence de B est en soi une preuve de travail . Avant de
trouver B, le mineur a du eectivement dépenser beaucoup de temps et d'énergie à tester des tas
de solutions possibles.
Ce qui est écrit ci-dessus n'est pas faux mais en vérité, le nonce qui avait peut-être un intérêt au
début du Bitcoin ne sert plus à rien. Il est trop petit (4 octets seulement) et on peut susamment
créer de l'aléa autrement, par exemple en permutant toutes les transactions rangées dans les feuilles
d'un arbre de Merkle ou bien en faisant varier un extra-nonce caché dans la syntaxe du script
associé à une transaction particulière dénomée coinbase et qui représente une création monétaire
accordée au mineur pour avoir réussi à découvrir un nouveau bloc.
La diculté est ajustée tous les 2016 blocs (pour Bitcoin) de sorte qu'en moyenne, le réseau
mette 10 minutes pour valider un bloc. A chaque ajustement de diculté, le réseau calcule le temps
T mis pour valider la dernière série de 2016 blocs grâce à l'horodatage des blocs. D'où l'intérêt
(c'est le seul) d'inscrire la date de création d'un bloc dans son en-tête (le paramètre t évoqué plus
haut). Si ce temps T est supérieur à 14 jours = 2016 10 minutes, la diculté diminue. Dans le
cas contraire, elle augmente. Concrètement, le nouveau paramètre de diculté 0 est :
2016 10
0 = (2)
T
où T est ici calculé en minutes (voir ci-dessous pour plus d'explications sur l'impact de cette
formule).
La suite des blocs forme une chaîne de blocs ou blockchain suivant le terme employé la
première fois par Hal Finney, un crytographe américain connu notamment pour avoir été le pre-
mier bénéciaire d'une transaction Bitcoin. De manière technique, il s'agit d'une chaîne listée de
pointeurs de hashs.
Lorsqu'il a trouvé un nouveau bloc, le mineur transmet sa découverte aux noeuds avec qui il
est connecté an qu'ils le propagent. Un bloc met souvent plus d'une minute pour atteindre 90%
du réseau.
Un noeud qui reçoit un bloc vérie qu'il est légal (il vérie notamment que la relation (1)
est vérié. Le cas échéant, il met à jour sa base de données des UTXO et vide une partie de sa
mempool.
Enn, et non le moindre,P un noeud qui reçoit deux chaînes de blocs distinctes considérera comme
ocielle celle qui maximise i, autrement dit, la blockchain la plus solide, celle qui a été la plus
compliquée à construire. La blockchain ayant cette particularité est appelée la blockchain ocielle.
En pratique, il s'agit de la blockchain la plus longue car la suite des diculté (i) est localement
constante. En outre, entre deux blocs de même hauteur (la hauteur d'un bloc B est le nombre de
blocs qui sépare B du bloc initial), un noeud priviligiera toujours le premier bloc reçu.
Tel est plus ou moins le protocole Bitcoin décrit dans le papier fondateur de Satoshi Nakamoto
[8].
Dans la dernière section de cet article, on trouve une preuve mathématique du fait que la
probabilité de réussite d'une double-dépense est très faible pouvu qu'on prenne des précautions
élémentaires. Ce résultat est spectaculaire. Jamais avant Satoshi on n'avait réussi à surmonter
le problème de la double-dépense dans un réseau distribué décentralisé et ouvert (en libre accès
i.e., permissionless ). Au lieu de trouver un réseau qui assure a priori qu'il n'y a pas de double
dépense possible, Satoshi fonde la sécurité du réseau sur la théorie des probabilités.
8 Section 4
Autre prouesse réalisée par Bitcoin : l'avénement des contrats automatiques ou smart-
contracts qui avaient été imaginés par le cryptographe américain Nick Szabo [12]. Dans l'uni-
vers Bitcoin, un exemple de smart-contract est une simple transaction bitcoin. Pour comprendre,
on dénit un output (TXO) comme la donnée d'un montant (en bitcoin) et d'une condition pour
pouvoir dépenser cet argent. De manière classique, cela peut-être : prouver qu'on possède la
clé secrète dont le hash de la clé publique (appelé aussi adresse bitcoin) est connu. C'est de
cette façon que l'on peut prétendre possséder des bitcoins. Un output a deux états possibles :
dépensé ou non-dépensé. Un input est au contraire une référence à un output et la preuve que
la condition associée est satisfaite. L'input est formé d'un script libérateur (il permet de libérer
de l'argent bloqué). L'output a au contraire la forme d'un script bloquant (il donne les condi-
tions pour qu'une certaine somme d'argent puisse être dépensée). Une transaction est formellement
un ensemble d'inputs et d'outputs avec la condition que l'argent dépensé (la somme des mon-
tants des inputs) est supérieur à l'argent envoyé (la somme des outputs). La diérence entre
les deux ira au mineur qui inscrira cette transaction dans un bloc de la blockchain ocielle.
Les inputs et outputs ont la forme de code informatique. Le langage de programmation Bit-
coin est volontairement sommaire. C'est un langage dit à pile. La partie output remplit la
pile (les bitcoins qui vont être envoyés). Plus la transaction est compliquée, plus la pile est haute.
Au contraire, la partie output mise à côté, vide la pile. L'oeil exercé peut parfois deviner la
nature d'une transaction Bitcoin en examinant le code informatique. En particulier, le langage
de programmation utilisé n'est pas Turing-complet (il ne permet pas de réaliser des boucles),
ce qui apporte une grande sécurité au réseau monétaire : bien que toujours possible, les bugs sont
souvent facilement détectables. Signalons les mises à jour récentes du Bitcoin qui apportent plus
d'anonymat aux transactions en rendant indiscernables des contrats compliqués (nécessitant plu-
sieurs signatures) par rapport aux simples transactions (qui ne recquierent qu'une seule signature).
Note 1. Le fonctionnement d'Ethereum est assez semblable à celui de Bitcoin : il s'appuie sur
l'utilisation répétée de preuves de travail. Il y a néanmoins plusieurs diérences notables. Ethereum
impose un temps de minage interblocs très réduits de l'ordre de 10-15 secondes, ce qui conduit
inévitablement à des problèmes de synchronisation et des mineurs qui risquent de miner des blocs
ignorés par la majorité (de tels blocs sont dits orphelins). Pour contrer ce risque et inciter tous les
mineurs à prendre quand même part au réseau, Ethereum rémunère même les créateurs de blocs
orphelins (sous certaines conditions facilement vériées en pratique et dans une moindre proportion
que s'il s'agissait d'un bloc normal). La blockchain ocielle elle-même se dénit en tenant compte
de tous ces éventuels blocs orphelins. Autre diérence : le langage de programmation des smart-
contracts (Solidity) est un langage moderne permettant de réaliser des boucles qui fonctionne
grâce à un compilateur. Dans ce cas, auditer un smart-contract sur Ethereum est potentiellement
beaucoup plus compliqué que sur Bitcoin. Les smart-contracts sur Ethereum permettent de créer
l'univers de la De (nance décentralisée) sur Ethereum mais expliquent aussi la présence
persitante de beugues découverts chaque semaine.
déjà préminé 6 ou 7 blocs d'avance sur la blockchain ocielle. La réussite de son attaque serait alors
certaine. Un tel scénario est en principe possible. En eet, s'il ne publie pas ses blocs découverts,
l'avance éventuelle que peut posséder un mineur sur la blockchain ocielle peut se modéliser par
une chaîne de Markov simple sur N . L'état fng du mineur (n 2 N) correspond à une avance de n
1
blocs sur la blockchain ocielle et la probabilité d'augmenter cette avance est q < 2 . La chaîne de
Markov est naturellement absorbante en 0. Son avance ne peut être négative ; s'il a du retard,
le mineur revient miner sur le dernier bloc de la blockchain ocielle. Cette chaîne de Markov est
irréductible : chaque état est atteignable à partir d'un autre. Il apparaît donc clairement que la
possibilité d'atteindre un niveau n quelconque est certain. Tôt ou tard, le mineur parviendra à
une avance de 6 ou 7 blocs et, s'il commence son attaque à ce moment-là, celle-ci sera toujours
réussie. Donc, en théorie, en attendant susamment longtemps, l'attaquant pourra toujours réussir
une attaque à la double-dépense avec probabilité 1 ! Ainsi, la probabilité de réussite d'une double-
dépense calculée par Satoshi n'est qu'un élément parmi d'autre à prendre en compte pour évaluer la
sécurité du réseau Bitcoin. Il faut aussi considérer le rendement de l'attaque en considérant qu'elle
a lieu régulièrement. Si ce rendement est supérieur au rendement que le mineur pourrait gagner en
minant honnêtement, alors il y a un problème : le mineur n'est pas incité à être honnête. Concernant
l'attaque à la double dépense, on peut montrer que sous certaines hypothèses raisonnables, ce n'est
eectivement le cas : un mineur n'a pas d'intérêt à répéter des attaques à la double-dépense [6].
E[G]
qui converge vers E[ ] (en supposant E[ ] < 1). De la même façon, le coût par unité de temps du
E[C]
mineur sur le long terme est E[ ] où C est le coût par cycle de son activité de minage et le revenu
E[G] E[C]
net du mineur par unité de temps est E[ ] ¡ E[ ] . Or, le point est que le coût de son activité de
minage par unité de temps ne dépend par du fait que le mineur garde secret ou non des blocs sur
un ordinateur (il dépend du coût de l'électricité, du prix de son matériel, des salaires versés aux
employés, etc.). Qu'il rende ou non public des blocs n'a pas d'impact sur ce coût par unité de temps.
Par suite, entre deux stratégies de minage (ayant même coût de fonctionnement en moyenne par
unité de temps), un mineur rationnel choisira la stratégie qui maximise son revenu par unité de
E[G]
temps sur le long terme ¡ = E[ ] .
Mais on imagine ici que D désigne une fonction de diculté quelconque qui, comme la hauteur,
ne puisse qu'augmenter au cours du temps. On peut par exemple considérer que le réseau prenne
en compte la production de blocs orphelins et qu'entre deux événements sur le réseau, la fonction
de diculté progresse d'autant de blocs découverts détectés (blocs ociels ou blocs orphelins).
C'est pratiquement déjà le cas sur Ethereum qui, en réalité, ne prend pas en compte tous les blocs
orphelins détectés mais seulement la production de blocs appelés oncle qui ont un parent direct
dans la blockchain ocielle. Avec cette nouvelle formule, le temps de minage d'un cycle devient
maintenant proportionnel à la progression de la fonction diculté.
Le même raisonnement que précédemment montre que pour Bitcoin modié, le revenu par unité
E[G]
de temps sur le long terme devient ¡ = E[D] où D désigne la progression de la fonction diculté
E[G]
au cours d'un cycle d'attaque (au lieu de ¡ = E[H] ).
Supposons que le réseau soit composé d'un attaquant noté Alice et d'un ensemble de mineurs
honnêtes qui suivent les règles édictées par Satoshi Nakamoto. L'attaque est dénie de la façon
suivante. Alice commence à miner. Si les honnêtes mineurs trouvent un bloc avant Alice, l'attaque
prend n. Si par contre Alice réussit à miner un bloc B avant les honnêtes mineurs, alors Alice garde
secret B et continue à miner secrètement par dessus ce bloc. Ensuite, quelle que soit l'identité des
mineurs ayant validé les blocs suivants, dès que deux blocs ont été découverts après la découverte de
B, l'attaque prend n. Si elle a l'avantange, c'est-à-dire si elle a miné plus de blocs que les honnêtes
mineurs, Alice révèle ses blocs secrets et impose son fork (sa suite de blocs) à la blockchain
ocielle qui procède alors à une petite réorganisation. Si ce n'est pas le cas, inutile pour elle de
diuser quoique ce soit puisqu'aucun de ses blocs ne deviendra ociel. En notant par A un bloc
découvert par Alice et par B un bloc découvert par les honnêtes mineurs, l'attaque a donc la forme
d'un mot formé avec les lettres A et B. La stratégie 1+2 est précisément cette attaque répétée
un grand nombre de fois. Le 1 dans le nom de la stratégie s'explique par le fait qu'on attend de
découvrir un bloc. Puis, lorsque c'est le cas, on attend ensuite que deux blocs soient découverts.
D'où le +2 .
Exemple 3. Alice mine un bloc. Puis les honnêtes mineurs en mine un aussi et enn Alice en
mine un autre. La suite de blocs associée est ABA. Dans ce cas, Alice a réussi son attaque et
propage ses deux blocs gardés secrets (les deux A ). La blockchain ocielle procède à une légère
réorganisation : son désormais avant-dernier bloc (le bloc B ) a été remplacé (il est désormais
orphelin) et la hauteur de la blockchain a progressé d'un bloc au moment où Alice publie ses deux
blocs. Au nal, Alice gagne la récompense contenue dans deux blocs.
L'univers de tous les résultats possibles à l'issue d'un cycle d'attaque est :
= fB ; AAA; AAB; ABA; ABBg
Notons q la puissance de hachage relative d'Alice. C'est la probabilité qu'elle a de découvrir un
bloc avant les honnêtes mineurs. De même, on note p = 1 ¡ q la puissance de hachage relative des
honnêtes mineurs. Notons par G le nombre de blocs validés par Alice durant son attaque et qui
nissent par rejoindre la blockchain ocielle. C'est le revenu d'Alice suite à son attaque. Soit H le
nombre de blocs ociels ajoutés à la blockchain ocielle à la suite de l'attaque. C'est la progression
de la hauteur de la blockchain ocielle entre le début et la n de l'attaque. On a
P[B] = p; P[AAA] = q 3; P[AAB] = P[ABA] = p q 2; P[ABB] = p2 q
avec
G(B) = G(ABB) = 0; G(AAA) = 3; G(AAB) = G(ABA) = 2
et
H(B) = 1; H(ABB) = H(AAB) = H(ABA) = 2; H(AAA) = 3
Donc,
E[G] = p 0 + q 3 3 + p q 2 2 + p q 2 2 + p2 q 0
= 3q 3 + 4 p q 2
= q 2 (3q + 4p)
= q 2 (3 + p)
= q 2 (4 ¡ q)
et de même,
E[H] = p 1 + q 3 3 + p q 2 2 + p q 2 2 + p2 q 2
= p + 3q 3 + 4 p q 2 + 2p2 q
= p + q (3q 2 + 4p q + 2p2)
= p + q (q 2 + 2 (p + q)2)
= p + q (q 2 + 2)
= p + q + q + q3
= 1 + q + q3
Un algorithme pour calculer le taux de rendement maximal d'un mineur dans le réseau Bitcoin 13
q2 (4 ¡ q)
Donc, le rendement de la stratégie 1+2 est 1 + q + q3 .
Par suite, la stratégie 1+2 est plus rentable que la stratégie honnête si et seulement si
q 2 (4 ¡ q)
1 + q + q3
> q. Après calcul, cette relation équivaut à
p
q > 2 ¡1 (5)
Ainsi, si un mineur dispose d'un peu plus de 41% de puissance de hachage, il n'a pas intérêt à
suivre le protocole. On peut du reste montrer que cette stratégie est la meilleure possible si l'on
impose que le cycle d'attaque du mineur prend n au plus immédiatement après la découverte de
trois blocs (voir Section 6.3).
On voit donc avec cette stratégie déviante très simple que les régles du protocole peuvent aller
à l'encontre des intérêts des mineurs. Il y a un seuil en terme de puissance de hachage au-delà
duquel
p le mineur n'a pas intérêt à suivre le protocole. On vient de voir que ce seuil est inférieur à
2 ¡ 1 41; 4%.
Le fait que la production de blocs orphelins ne soit pas pris en compte dans la formule d'ajuste-
ment de diculté de Bitcoin - et donc que le taux de hachage réel de tout le réseau soit de fait sous-
estimé - entraîne naturellement un ajustement à la baisse de la diculté de minage. En présence
d'un attaquant disposant de susamment de puissance de hachage relative que l'on notera q dans
toute la suite (sa connectivité est généralement notée ), cette baisse peut-être signicative. Il
peut carrément se retirer du réseau et miner ailleurs (par exemple sur Bitcoin Cash). Il peut aussi
se lancer dans une attaque dite de rétention de blocs qui, à terme, et dans certains cas, peut
devenir plus rentable que la stratégie de minage dite honnête consistant à toujours miner sur le
dernier bloc découvert par le réseau. Suivant q et , le taux de hachage apparent sur le long terme
de la stratégie déviante (dénie comme étant la proportion de blocs validés par l'attaquant dans la
blockchain ocielle) peut devenir supérieure à q qui représente le taux de hachage apparent normal
de la stratégie honnête . Le but de cette section est d'établir un algorithme ecace permettant
de calculer le taux de hachage apparent - long terme - maximal dans le cas où = 0.
Autrement dit, l'état du système évolue de manière aléatoire suivant une loi de probabilité qui
dépend du choix du mineur. Par exemple, s'il abandonne (avec a 6 h) alors la probabilité de se
retrouver dans l'état (0; 0) est 1. S'il décide de miner secrètement, alors l'état du système évolue
suivant le résultat d'une pièce de monnaie truquée (p en faveur des honnêtes mineurs et q en faveur
de l'attaquant). Notons que si l'attaquant a l'avantage, on considère qu'il n'a pas la possibilité
d'abandonner On écarte a priori les comportements suicidaires qui ne sont pas optimaux.
Si le choix du mineur ne se base que sur l'état du système au moment considéré (cas markovien),
alors un choix d'actions s'identie à une simple fonction a: N2 ¡! f0; 1g avec a(a; h) = 0 si le
système est dans l'état (a; h) et que le mineur décide d'abandonner (possible si a 6 h) ou de rendre
public h + 1 blocs (possible si a > h). Le cas a(a; h) = 1 correspond au cas où le mineur décide de
miner secrètement. Au départ, le mineur cherche à miner un bloc au dessus du dernier bloc de la
blockchain ocielle. Donc, on a toujours a(0; 0) = 1.
Dénition 5. Une stratégie est un choix d'actions markovien a: N2 ¡! f0; 1g tel que a(0;
0) = 1.
Dénition 7. Soit A l'ensemble des stratégies telles que (N2; Pa) soit irréductible, récurrente et
transitive.
Donc, si a 2 A, alors E[a] < +1. La durée a correspond au nombre de transitions sur la chaîne
de Markov durant un cycle d'attaque. Le mineur ne fait que répéter des cycles d'attaque.
Chaque transition a une durée aléatoire. Par exemple, si le mineur est dans l'état (a; h) et décide
d'écraser les h derniers blocs de la blockchain (possible si a > h) ou bien d'abandonner (possible
si a 6 h), alors la transition est immédiate. Si par contre, il décide de miner secrètement, alors la
transition met une durée t où t suit une loi exponentielle de paramètre 0 avec 0 = 10 minutes ou
1 = d0 où d est un facteur d'ajustement de diculté après validation de 2016 blocs (ociels).
Pa
Le temps mis pour revenir à l'état (0; 0) est alors a = n=1 tn 1a(Xn)=1. D'après la formule
de Wald, ce temps d'arrêt est intégrable : E[a] < +1. Par ailleurs, le mineur cherche au moins
à miner un bloc au début de son attaque car a(0; 0) = 1. Donc, 0 < E[a] et à la n d'un cycle
d'attaque, lorsque la chaîne de Markov revient en (0; 0), la blockchain ocielle a toujours progressé
d'au moins un bloc. Le temps d'arrêt a représente un cycle d'attaque à l'issue duquel l'attaquant
revient dans son état initial et reconnait l'ensemble de la blockchain ocielle comme un mineur
normal. Ce cycle d'attaque est répété indéniment.
Démonstration. Un cycle d'attaque prend toujours n au moment où un bloc ociel est révélé.
En moyenne après ajustement de diculté, le temps d'attente entre deux blocs ociels est 0 = 10
minutes. Donc, en moyenne, la durée d'un cycle d'attaque est E[a] = E[H(a)] 0.
E[R(a)]
Corollaire 9. La fonction objectif est E[H(a)]
.
La stratégie honnête correspond à a(a; h) = 0 pour tout (a; h) = (0; 0). Dans ce cas, le cycle
prend n dès qu'un bloc est découvert et il y a une probabilité q que ce soit un bloc découvert par
E[R( )]
le mineur. Donc, dans ce cas, E[H(a )] = q. D'où la dénition suivante.
a
Dénition 10. On dit qu'une stratégie a est gagnante si son rendement est plus rentable que la
E[R( )]
stratégie honnête, autrement dit si E[H(a )] > q.
a
Notons que dans les cas des stratégies de minage égoïste, on a H( ) = N ( ) _ N 0( ) (en notant
le temps d'arrêt mettant n au cycle d'attaque) [3] où N (t) (resp. N 0(t)) est le processus de
Poisson comptant les découvertes de blocs par les honnêtes mineurs (resp. l'attaquant). Mais dans
le cas général, cette égalité n'est pas nécessairement vraie car l'attaquant a la possibilité de réaliser
des publications partielles sans mettre n au cycle d'attaque de la stratégie.
E[R(a)]
Le but est d'identier la meilleure stratégie a maximisant la fonction objectif E[H(a)]
et de
trouver le seuil minimal en terme de puissance de hachage relative q au-delà duquel cette stratégie
n'est pas la stratégie honnête.
avec R~ = Ra ¡ q (Ra + Rh). Cette quantité peut s'interpréter comme un revenu net que gagne le
a
mineur à chaque transition. Le second facteur q (Ra + Rh) s'interprète comme un coût de minage ;
celui-ci est proportionnel aux nombres de blocs ociels minés et le facteur de proportionnalité est
q. L'existence d'une stratégie gagnante revient à résoudre un problème de décision markovienne
:
on recherche une stratégie a telle que la chaîne de Markov associée maximise la quantité E R ~
a
~
où Ra est une récompense (positive ou négative) accordée au mineur à chaque transition. Si pour
la stratégie optimale, on a E R ~ > 0, alors il existe une stratégie gagnante. Pour le calcul du
a
rendement eectif, on est conduit à étudier le même problème mais avec une récompense de la
~ > 0 pour
forme Ra ¡ (Ra + Rh) pour 2 R+. La plus grande valeur de telle que l'on ait E R a
au moins une stratégie a correspond au taux de hachage eectif. En pratique, la solution s'obtient
en utilisant un solveur de décision Markovienne. C'est la voie choisie dans [11]. Mais a priori, le
nombre d'états de la chaîne de Markov est inni alors que les solveurs connus ne traitent que des
cas où le nombre d'états est ni, ce qui conduit à des dicultés techniques. Nous proposons ci-
dessous (Section 5.4) une autre méthode qui permet d'éviter ce problème.
16 Section 5
Note 11. Concrètement, dans le cas général où la connectivité est non-nulle, le problème a été
traité et résolu numériquement dans [11]. Dans cet article, les auteurs, modélisent le problème
formellement à l'aide d'une démarche du type machine à états semblable à celle exposée ici mais
avec un paramètre supplémentaire tenant compte de la connectivité [11]. L'état du système est
représenté par un triplet (a; h; f) où f 2 fi; r; ag représente la possibilité de provoquer un fork de
la blockchain ocielle en présentant un certain nombre de blocs en compétition avec ceux minés
par les honnêtes mineurs. Ceci n'est possible que si les trois conditions suivantes sont réunies : (1)
a > h, (2) les honnêtes mineurs viennent juste de découvrir un nouveau bloc et (3) la connectivité de
l'attaquant est susante pour pouvoir convaincre une fraction = 0 des honnêtes mineurs de miner
sur le fork (de même hauteur que la blockchain ocielle) crée par l'attaquant et rendu public. Le
paramètre f = i (pour irrelevant ) signie que ces conditions ne sont pas toutes remplies, f = r
(pour relevant ) signie qu'au contraire, cela est possible et f = a (pour active ) signie qu'un
fork est en cours de traitement par le réseau. A chaque état du système, le mineur a la possibilité
de réaliser l'une des actions suivantes : abandonner et revenir sur la blockchain ocielle, attendre et
miner secrètement sur son fork, eacer les derniers blocs de la blockchain ocielle en rendant public
h + 1 blocs (dans le cas où a > h) ou provoquer un fork en rendant public h blocs (lorsque f = r).
5.4 Un algorithme
5.4.1 Notations
Les processus représentant les découvertes des blocs du réseau et de l'attaquant sont représentés
par deux processus de Poisson indépendants N et N 0 de conditions initiales N (0) = N 0(0) = 0. Pour
n 2 N, on pose S~n = Inf ft 2 R+ /N (t) + N 0(t) > ng. C'est l'instant où un n-ème bloc est découvert,
par les honnêtes mineurs ou par l'attaquant.
Par convention, le bloc ociel numéroté 0 est le dernier bloc reconnu à la fois par l'attaquant
et les honnêtes mineurs.
La position du mineur à l'instant t 2 R est noté X(t) = (a; h) 2 N2. Le premier (resp. second)
indice a (resp. h) de X(t) représente le nombre de blocs tenus secrets minés par l'attaquant (resp.
le nombre de blocs minés par le reste du réseau et non-reconnus par l'attaquant). Remarquons que
d'après la dénition de a, on a exclu la possibilité que le mineur abandonne sans rien publier alors
qu'il a de l'avance par rapport à la blockchain ocielle ; on a toujours : E[H( )jX(0) = (0; 0)] > 0
Dénition 12. On note T i; j l'ensemble des temps d'arrêt = a 2 L1 avec a 2 A tels que
E[H( )jX(0) = (i; j)] > 0 et on pose T = T 0;0.
Dénition 13. On note R(t) le nombre de blocs minés par l'attaquant entre 0 et t et présents
dans la blockchain ocielle en t et H(t) la hauteur de la blockchain ocielle en t.
Note 14. Etant donné que les processus R(t) et H(t) sont discontinus, on considère toujours que
R(t) et H(t) représentent en réalité R(t+) et H(t+).
et se traduit en disant que le revenu net du mineur est positif à l'issue de en considérant que le
coût du minage est proportionnel au nombre de blocs découverts durant le cycle d'attaque avec
un coecient de proportionnalité q.
On peut renforcer la condition initiale. Le mineur part de l'état (0; 0) et revient à
l'état (0; 0). D'après le Théorème 8, le problème revient à rechercher le rendement optimal
E[R( )jX(0) = (0; 0)]
sup E[H( )jX(0) = (0; 0)]
. Celui-ci peut se linéariser de la façon suivante
2T
Démonstration. Soit un temps d'arrêt intégrable. Alors, N ( ) et N 0( ) sont intégrables (il
sut de considérer le temps d'arrêt ^ n avec n 2 N puis d'appliquer le théorème d'arrêt de Doob
et de faire tendre n vers l'inni. Voir la preuve de la Proposition 4.3 de [5]). On a R( ) 6 N 0( ) et
H( ) 6 N ( ) + N 0( ). Donc, R( ) et H( ) sont intégrables. Soit c 2 C. Alors, il existe un temps
d'arrêt intégrable tel que E[R( )jX(0) = (0; 0)] > c E[H( )jX(0) = (0; 0)]. Donc, nécessairement
E[H( )jX(0) = (0; 0)] > 0 car E[H( )jX(0) = (0; 0)] > E[R( )jX(0) = (0; 0)] > c E[H( )jX(0) = (0;
E[R( )jX(0) = (0; 0)] E[R( )jX(0) = (0; 0)]
0)] > 0 et par suite, E[H( )jX(0) = (0; 0)]
> c. Donc, sup E[H( ) jX(0) = (0; 0)]
> c. Ceci étant vrai pour
2T
E[R( )jX(0) = (0; 0)]
tout c 2 C. On en déduit que sup E[H( )jX(0) = (0; 0)]
> sup C.
2T
E[R( )jX(0) = (0; 0)]
Réciproquement, soit c < sup E[H( )jX(0) = (0; 0)]
. Alors, il existe un temps d'arrêt tel que
2T
E[R( )jX(0) = (0; 0)]
c< E[H( ) jX(0) = (0; 0)]
. Donc, E[R( ) ¡ c H( )jX(0) = (0; 0)] > 0. Donc, c 2 C. Donc, c 6 sup C.
E[R( )jX(0) = (0; 0)]
Ceci étant vrai pour tout c < sup E[H( ) jX(0) = (0; 0)]
, on en déduit que l'autre inégalité i.e.,
2T
E[R( )jX(0) = (0; 0)] E[R( )jX(0) = (0; 0)]
sup E[H( )jX(0) = (0; 0)]
6 sup C. Par suite, sup E[H( )jX(0) = (0; 0)] = sup C.
2T 2T
Le théorème permet d'en déduire en particulier que sup C 6 1 car R( ) 6 H( ) pour tout
temps d'arrêt . De plus, la stratégie honnête correspondant au temps d'arrêt = S~1 vérie
E[R( )jX(0) = (0; 0)]
E[H( )jX(0) = (0; 0)]
= q. Donc,
0 < q 6 sup C 6 1 (6)
E[R( )jX(0) = (i; j)]
La preuve du Théorème 16 s'adapte au cas où X(0) = (i; j) 2 N2 : sup E[H( )jX(0) = (i; j)]
= sup C i; j
2T i; j
E[R( )jX(0) = (i; j)]
0 6 sup = sup C i;j 6 1 (7)
2T i; j E[H( )jX(0) = (i; j)]
pour (i; j) 2 N2.
Une fois linéarisée, les auteurs de [11] font ensuite appel à un solveur de problème de décision
markovienne pour trouver sup C dans le cas général. La diculté à laquelle ils font face est due au
fait que ce solveur ne s'applique que lorsque le nombre d'états est ni. Nous ne rencontrons pas
ce problème si on le discrétise.
Théorème 19. On a sup E[R( ) ¡ c H( )jX(0) = (i; j)] = lim c(i; j ; n)
2T i;j n!1
pour tout n 2 N. De plus la suite n 7! c(i; j ; n) est clairement croissante. Donc, elle est convergente
dans R et
lim c(i; j ; n) 6 sup E[R( ) ¡ c H( )jX(0) = (i; j)] 6 +1 (9)
n!1 2T i; j
Réciproquement, soit l = sup E[R( ) ¡ c H( )jX(0) = (i; j)] et supposons que l 2 R. Pour tout
2T i;j
0 < " < l, il existe 2 L1 tel que
0 < l ¡ " < E[R( ) ¡ c H( )jX(0) = (i; j)] (10)
On a R( ) 6 N 0( ) et H( ) 6 N ( ) + N 0( ). Donc, R( ) et H( ) sont intégrables. De plus, pour
¡ ¡ ¡ ¡
tout n 2 N, on a R ^ S~n 6 R( ) et H ^ S~n 6 H( ). Donc, R ^ S~n et H ^ S~n sont
¡ ¡
intégrables et d'après le théorème de convergence dominée, R ^ S~n (resp. H ^ S~n ) converge
vers R( ) (resp. H( )) dans L1. Par suite, pour tout " > 0, il existe n 2 N tel que
¡ ¡
0 < l ¡ " < E R ^ S~n ¡ c H ^ S~n jX(0) = (i; j) (11)
L'inégalité entraîne l ¡ " < c(i; j ; n) 6 lim c(i; j ; n). En faisant tendre " ! 0, on en déduit que
n!1
Le théorème suivant donne une condition pour que le mineur soit incité à miner honnêtement
sur la blockchain ocielle.
E[R( )jX(0) = (0; 0)]
Théorème 21. On a sup E[H( )jX(0) = (0; 0)]
= q si et seulement si (0; 0; n) = 0 pour tout n 2 N.
2T
Corollaire 22. Un mineur n'est pas incité à être honnête si et seulement si il existe n 2 N tel que
(0; 0; n) > 0.
Un algorithme pour calculer le taux de rendement maximal d'un mineur dans le réseau Bitcoin 19
et si j 6 i, on a :
library(memoise)
Phi <- function(q,c,i,j,n){
if (n==0){
if(i<j){return((1-c)*j)}
else{return(-c*i)}}
else{
if (i<j){
return(max(Phi(q,c,0,j-i-1,n)+(1-c)*(i+1),(1-q)*Phi(q,c,i+1,j,n-1)+q*Phi(q,c,i,j+1,n-1)))}
else{return(max(-c*i,(1-q)*Phi(q,c,i+1,j,n-1)+q*Phi(q,c,i,j+1,n-1)))}}
}
Phi <- memoise(Phi)
Exemple 25. Par récurrence, en utilisant, le Théorème 23, on montre facilement les égalités
suivantes : (0; 0; 1) = (0; 0; 2) = 0 et (0; 0; 3) = p q (q 2 + 2q ¡ 1)+.
p
Le calcul précédent entraîne facilement l'équivalence (0; 0; 3) > 0 () q > 2 ¡ 1: Donc, en
vertu du Corollaire 22, il s'ensuit qu'un mineur quelconque
p n'est pas incité à être honnête dès que
sa puissance de hachage relative est supérieure à 2 ¡ 1. On retrouve le seuil obtenu en étudiant
la stratégie 1+2 . Nous pouvons maintenant améliorer ce résultat.
Théorème 26. Si q > 32; 94%, alors la stratégie honnête n'est pas optimale.
Démonstration. Avec q = 32; 94%, le calcul montre que (0; 0; 92) = 4 10¡7 > 0. Donc, d'après
le Théorème 21, on en déduit que la stratégie honnête n'est pas optimale pour q > 32; 94%.
Il nous est impossible d'améliorer ce nombre avec notre ordinateur. Le seuil semble être environ
de 32,94%.
On fait varier c à partir de c = q + " (avec " > 0 xé) puis n à partir de n = 0 et on s'arrête si on
trouve n tel que c(0; 0; n) > 0. Dans ce cas, c est remplacé par c + " et on recherche de nouveau
n tel que c(0; 0; n) > 0. S'il est impossible de trouver un entier n tel que c(0; 0; n) > 0 et n < N
(avec N xe), l'algorithme s'arrête et le rendement maximum recherché est c ¡ ".
6 Le Jeu du Minage
Nous proposons une autre formulation du problème de minage en terme de jeu simple où un
joueur joue contre une banque. On repart du critère E[G( ) ¡ q H( )] > 0 qui permet de savoir si
une stratégie de minage est plus performante que la stratégie honnête. On interprète la quantité
R(t) = G(t) ¡ H(t) comme un revenu net. Tout se passe comme si le mineur devait payer un
coût de minage constant par morceau au cours du temps et qui augmente de q (en prenant pour
unité, la valeur moyenne contenue dans un bloc de la blockchain ocielle, soit un peu plus qu'une
coinbase ) à chaque fois que la hauteur de la blockchain ocielle augmente de 1.
Abandon. La banque et le joueur perdent tous leurs jetons. Cette action ne coûte rien au
joueur.
Plus exactement, on note JM(i; j) le jeu décrit ci-dessus mais où le joueur part d'une situation où
il possède i jetons contre j pour la banque, (i; j) 2 N2.
Une pièce lancée par le croupier revient à la découverte d'un bloc par le mineur ou les
honnêtes mineurs.
L'action Lancer est équivalente pour le mineur au choix de miner secrètement et d'attendre
la découverte d'un bloc. Si le résultat est Face , alors la blockchain ocielle progresse d'un
bloc. La fonction hauteur augmente donc de 1. D'où un coût q versé par le joueur dans ce
cas. Si par contre, le résultat est Pile , le bloc découvert par le mineur est gardé secret.
La hauteur de la blockchain ocielle n'augmente donc pas. D'où un coût nul.
L'action Ecraser revient pour le mineur à remplacer les h derniers blocs de la blockchain
ocielle par les siens. Pour que cette action soit possible, il faut que le mineur révèle un
autre bloc en plus, ce qui fait progresser la hauteur de la blockchain ocielle de 1. Le mineur
gagne alors la récompense contenue dans h + 1 blocs et dans le même temps, la hauteur de
la blockchain ocielle augmente de 1. D'où un gain net de h + 1 ¡ q.
L'action Abandon revient pour le mineur à laisser tomber son fork tenu secret et à
revenir miner sur le dernier bloc de la blockchain ocielle. Il ne gagne rien ni ne perd rien
avec cette action car la hauteur de la blockchain ocielle est inchangée.
Il s'agit d'une variation du jeu élémentaire de Pile ou Face où normalement le joueur doit toujours
payer q € au croupier et gagne 1€ directement si le résultat est Pile . L'espérance de gain de ce
jeu est évidemment nulle. Une variation classique de ce jeu de pile ou face mais avec des jetons est
la suivante. A la demande d'un joueur qui doit pour cela payer q €, un croupier peut lancer une
pièce de monnaie. Quel que soit le résultat, le joueur doit payer q € s'il choisit cette action. Si l'on
obtient Pile , le joueur gagne un jeton. Sinon, c'est la banque qui gagne un jeton. La pièce de
1
monnaie est truquée en faveur de la banque : la probabilité d'obtenir Pile est q < 2 . Si, au cours du
jeu, le joueur a un nombre de jetons supérieur au nombre de jetons h de la banque, il peut décider
de faire perdre tous ses jetons à la banque. Cette action lui fait aussi perdre h + 1 jetons mais elle
lui rapporte (h + 1) €. A tout moment, le joueur peut abandonner et revenir au début du jeu. Là
encore, on peut montrer que l'espérance de gain du joueur est nulle.
On reconnait en JM(0; 0) une variation tordue du jeu de Pile ou Face où le joueur ne payerait
que les fois où le croupier obtient Face . On comprend donc que ce jeu peut être à l'avantage
du joueur même si l'équivalent pour le joueur de la stratégie honnête pour un mineur ore
une perspective de revenu nul. En eet, la stratégie dite honnête est celle qui force le joueur
à utiliser l'action Ecraser dès que a = 1 et h = 0 et à abandonner si a = 0 et h = 1. La stratégie
prend donc n après deux actions dont une action Lancer au début. A l'issue de cette stratégie, le
joueur gagne 1 ¡ q avec probabilité q et paye q avec probabilité 1 ¡ q. Donc, l'espérance de revenu
de cette stratégie est nulle.
Dénition 27. Soit un jeu où un joueur joue contre banque. On dit que le jeu est biaisé en faveur
du joueur s'il existe une stratégie prenant n à un instant aléatoire d'espérance nie telle que
E[R( )] > 0 où R( ) est le revenu net accumulé par le joueur entre 0 et .
Si tel est le cas, en choisissant par exemple l'action Abandon après (ou si possible une action
Ecraser), alors le joueur se retrouve dans le même état qu'au début du jeu. Il peut alors répéter
sa stratégie et obtient un gain potentiellement inni.
Dénition 28. On appelle cycle de jeu le premier instant hormis l'instant initial où le joueur se
retrouve sans aucun jeton ainsi que la banque.
22 Section 6
Numériquement, on observe que E(0; 0; 100) = 1; 47699 10¡6 > 0 pour q = 32; 94%. Par contre,
on est incapable de trouver n 2 N tel que E(0; 0; n) > 0 pour q 6 32; 93%. D'où le résultat.
Proposition 29. Avec une connectivité nulle, le seuil de tolérance en terme de puissance de
hachage relative au delà duquel un mineur n'a plus intérêt à rester honnête est environ 32; 94%.
p p
Le calcul montre alors que si q 6 2 ¡ 1, alors (0; 0; 3) = 0 et si q > 2 ¡ 1, alors
(0; 0; 3) = q (3q ¡ 1 ¡ q 2 ¡ q 3)
On obtient par exemple ce résultat en utilisant la commande
p
On retrouve le seuil de 2 ¡ 1 comme dans la stratégie 1+2 et on peut montrer qu'il s'agit
p bien
de la stratégie optimale sous la contrainte d'un cycle comportant au plus trois blocs et q > 2 ¡ 1.
On s'est amusé ci-dessous à considérer la valeur de (0; 0; 10) (en ordonnée) pour diérentes
1
valeurs de q (en abcisse), même pour q > 2 . Voici ce qui est observé.
Le fait que le graphe soit décroissant à partir d'une certaine valeur et devient carrément nul
si q = 1 s'interprète facilement : plus on contrôle le réseau, moins on a besoin de tricher pour
augmenter son prot. A la limite, si on contrôle tout le réseau, il sut de miner normalement. Par
contre, pour tricher (sans connectivité) il faut un minimum de puissance de hachage.
24 Section 7
Note 30. La sécurité d'Ethereum s'étudie de la même façon. Sa formule d'ajustement de diculté
prend en compte la production de blocs orphelins. Elle est donc beaucoup plus robuste que la
formule correspondante pour Bitcoin. Il s'ensuit que les seuils de sécurité sont comparables. Néan-
moins, les ajustements de diculté se font en continu sur Ethereum. Donc, un mineur malveillant
qui aurait plus de puissance de hachage que le seuil requis pourrait quasi-immédiatement tirer
prot d'une stratégie déviante. De ce point de vue, Ethereum est beaucoup plus vulnérable que
Bitcoin. Ajoutons par ailleurs qu'entre deux blocs reçus de même hauteur, un mineur honnête sur
Ethereum ne mine pas sur le dernier bloc reçu mais aléatoirement sur l'un des deux, ce qui entraîne
1
que la connectivité de l'attaquant est toujours d'au moins 2 .
8 Bitcoin modié
Imaginons un Bitcoin un peu diérent mais où les honnêtes mineurs signaleraient les blocs orphelins
et que leur existence serait ensuite enregistrée dans la blockchain ocielle. Il est tout à fait possible
d'inciter les mineurs à enregister ces existences de blocs orphelins en modiant légèrement la règle
qui dénit la blockchain ocielle. Ce serait la blockchain la plus solide (celle qui maximise la
diculté) i.e., en pratique la plus longue. Mais en cas d'égalité entre deux blockchains de même
hauteur, la blockchain ocielle serait celle qui signale le plus de blocs orphelins. Par ailleurs,
imaginons qu'à l'issue d'une période de validation de 2016 blocs ociels, il y ait comme aujourd'hui
un ajustement de diculté mais avec une formule d'ajustement légèrement modié qui serait
(2016 + n1) 10
0 =
T
où n1 désigne le nombre de blocs orphelins signalés durant la dernière période de minage (de
2016 blocs). Autrement dit, on aurait une fonction de diculté D qui ne serait pas exactement
la fonction hauteur de la blockchain mais une fonction qui augmenterait de 1 chaque fois qu'un
nouveau bloc est enregistré dans la blockchain ociel (que ce bloc soit un bloc ociel ou un bloc
orphelin détecté par le réseau). En raisonnant comme précédemment, s'il existe une stratégie plus
rentable que la stratégie honnête alors il existe une stratégie de durée telle que E[R( )] > 0 avec
R( ) = G( ) ¡ q D( ).
Notons que tout bloc orphelin détecté par le réseau est nécessairement un bloc miné par les
honnêtes mineurs et remplacé par un bloc de l'attaquant suite à une action Ecraser.
Ceci conduit à l'étude du jeu de minage modié noté JMM que nous décrivons ci-dessous.
Au cours de ce jeu, le joueur accumule régulièrement des jetons qu'il peut sous certaines
contraintes convertir en argent sonnant et trébuchant (en euros mettons). A chaque instant, le
joueur dispose d'au plus trois actions possibles :
Lancer. Un croupier lance une pièce de monnaie truquée en faveur de la banque. La probabilité
d'obtenir Pile est q.
Si le résultat est Pile , le joueur gagne un jeton et ne paye rien.
Si le résultat est Face , la banque gagne un jeton et le joueur verse q au croupier.
Ecraser. Cette action n'est possible que si le joueur (resp. la banque) possède a (resp. h) jetons
avec a > h. Dans ce cas, la banque perd h jetons, le joueur perd h + 1 jetons mais gagne
h + 1 € et donne aussi q (h + 1) € au croupier. Son résultat net est donc (h + 1) (1 ¡ q) €.
Abandon. La banque et le joueur perdent tous leurs jetons. Cette action ne coûte rien au
joueur.
On note JMM(i; j) le jeu décrit ci-dessus et où le joueur part d'une situation où il possède i
jetons contre j pour la banque, (i; j) 2 N2.
La seule diérence entre JM et JMM est la conséquence de l'action Ecraser. Pour JMM, le
joueur doit certes payer pour l'avancée de la blockchain ocielle (progression de 1) mais il doit
aussi payer pour la création de h blocs orphelins (les h blocs des honnêtes mineurs qui ont été
remplacés et visibles par tous). D'où un coût égal à q (h + 1) à la suite de cette action.
26 Section 8
Dénition 31. Notons JMM(a; h; n) le jeu modié à partir de JMM(a; h) qui force le joueur à
arrêter sa stratégie après n actions et soit (a; h; n) le revenu net maximal du joueur qui joue à
JMM(a,h,n).
Il est clair que JMM(0; 0) est biaisé au prot du joueur si et seulement s'il existe n 2 N tel que
JMM(0; 0; n) le soit aussi, ce qui se traduit par (0; 0; n) > 0. Or, on a le résultat suivant.
Ainsi, le jeu du minage modié JMM(0,0) n'est pas biaisé, ce qui montre que si la connectivité
est nulle ( = 0) alors la meilleure stratégie est la stratégie honnête pour le mineur qui prend part
au réseau Bitcoin modié.
Chose remarquable, on peut montrer que ce résultat subsite même si la connectivité du mineur
est non nulle.
Théorème 34. Quelle que soit la stratégie de minage choisie avec E[ ] < 1 et quelle que soit la
connectivité de l'attaquant, on a
E[G( )] 6 q E[D( )]
Démonstration. Au cours d'un cycle d'attaque, on distingue parmi les N 0( ) blocs minés par
l'attaquant le nombre OrphA de blocs orphelins et le nombre OA de blocs ociels. On note de
même N ( ) les blocs minés par les honnêtes mineurs et parmi eux OH et OrphH les nombres de
blocs ociels et orphelins. En particulier, on a :
N ( ) = OH + OrphH
N 0( ) = OA + OrphA
et de plus, G( ) = OA. Tous les blocs orphelins des honnêtes mineurs sont publics et seront
enregistrés tôt ou tard dans la blockchain ocielle. Seuls les blocs orphelins de l'attaquant peuvent
rester secrets. Donc,
OA + OH + OrphH 6 D( )
Les deux processus N et N 0 sont des processus de Poisson de paramètres p et q où est
d
un paramètre du à l'ajustement de diculté ( = avec 0 = 10 minutes et d est un facteur
0
d'ajustement de diculté). En temps normal, si sur le réseau tous les mineurs sont honnêtes,
1
alors = avec 0 = 10 minutes. Donc, la condition E[ ] < 1 entraîne E[N ( )] = p E[ ] et
0
E[N 0( )] = q E[ ]. Cela découle du fait que si M est un processus de Poisson de paramètre
alors le processus compensé M (t) ¡ t est une martingale. Donc,
p E[OA] 6 pE[N 0( )] = pq E[ ] = qp E[ ] = q E[N ( )] = q E[OH ] + q E[OrphH ]
Log-contrats discrets - d'après Tadge Dryja 27
ce qui entraîne :
E[G( )] = E[OA]
= p E[OA] + q E[OA]
6 q E[OH ] + q E[OrphH ] + q E[OA]
6 q E[D( )]
D'où le résultat.
Corollaire 35. Dans le cadre d'un Bitcoin modié, la stratégie la plus rentable est toujours la
stratégie honnête, quellque que soit la connectivité du mineur.
Le mécanisme repose sur une astuce cryptographique semblable à celle utilisée pour créer des
canaux de paiement bidirectionnel hors chaîne. L'avantage de ces canaux est que deux contreparties
peuvent s'échanger régulièrement de l'argent sans avoir besoin de se faire conance et sans la
nécessité d'enregistrer régulièrement ces transactions dans la blockchain. Ces canaux de paiement
sont l'un des piliers du Lightning Network , une surcouche du réseau Bitcoin que nous avons
déjà évoquée.
Dans le cas des canaux de paiement, c'est un échange de secrets qui permet de mettre à jour
ces canaux. Pour les log-contrats discrets, c'est un message signé par l'oracle. De manière technique,
il faut que celui-ci possède une paire de clé basée sur un schéma cryptographique de Schnorr.
Voici l'idée. Appelons Olivia l'oracle. Au début du contrat, Olivia exhibe une clé publique
qu'elle va utiliser à maturité pour signer le résultat. Par exemple, à cette date, elle signe un
message donnant la valeur de l'indice XYZ. La signature s de ce message (qui bien sûr dépend du
résultat obtenu) permet au vainqueur X du contrat (Alice ou Bob) de déplacer des fonds vers une
adresse PubX + s G qu'il est le seul à contrôler (G est un générateur de groupe). Le fait est que les
diérentes signatures s possibles sont inconnues mais les s G le sont dès le début. Il s'ensuit que
l'ensemble des PubX + s G pour chaque possible message m est connu au début du contrat mais
pas PrivX + s. La signature s à maturité peut s'interpréter comme le logarithme du contrat.
D'où le nom log-contrat . Le mécanisme complet est basé sur cette idée. Au début du contrat,
Alice et Bob rédigent des tas de transactions suivant tous les résultats possibles. Il y a donc autant
de transactions que de résultats possibles. Il faut aussi ajouter la possibilité d'un retour des fonds
si aucune action n'est prise. Ces propositions de transaction ne sont pas diusées sur la blockchain
mais signées en partie et transmises à l'autre. Ce sont les analogues des commit transactions
dans la création d'un canal de paiement. Une fois rédigées, Alice et Bob peuvent maintenant
envoyer chacun des fonds vers un contrat multisig. C'est l'analogue de la transaction d'ouverture
dans la création d'un canal de paiement sur le Lightning Network . Cette transaction est inscrite
dans la blockchain mais n'est rien d'autre qu'une transaction multisig normale. Impossible de
détecter la présence d'un contrat à terme mettant en jeu un oracle.
A la n du contrat, seule une transaction sera valide. La divulgation du résultat et du message
s signé par Olivia va permettre sans ambiguité de déplacer l'argent contenu dans le contrat multisig
vers le vainqueur du contrat qui est le seul à posséder la clé privée PrivX + s car s est révélé à la
maturité du contrat. Le bénéciaire peut simplement récupérer ses fonds en enregistrant cette
transation gagnante. Alice et Bob peuvent aussi convenir de recommencer un autre log-contrat
avec le même ou un autre oracle. Inutile alors d'enregistrer quoi que ce soit dans la blockchain.
Le canal ouvert entre Alice et Bob sera mis à jour. Ils gardent leur contrat hors chaîne avec la
possibilité d'y revenir à n'importe quel moment. De cette façon, on peut imaginer une véritable
nance décentralisée sur Bitcoin avec des chambres de compensation totalement décentralisées.
C'est en tout cas ce que rend possible cette proposition de Tadge Dryja. Elle rencontrera peut-
être le même succès que son autre invention, le Lightning Network [2].
10 Conclusion
Nous avons cherché à savoir quel rôle pouvaient jouer les assureurs dans le nouveau monde des
cryptomonnaies. Ils peuvent simplement assurer des plateformes d'échanges mais pour cela, ils
doivent faire l'eort de comprendre les produits proposés, ce qui demande de passer en revue la
sécurité de diérents protocoles. Nous avons brièvement étudié celui de Bitcoin dans ce mémoire.
Nous avons mis en évidence une faille dans la formule d'ajustement de diculté.
Nous avons montré que l'étude de la sécurité des protocoles comme celui du Bitcoin, basés sur
l'utilisation répétée de preuves de travail peut s'étudier en considérant une variante biaisée au
prot du joueur du jeu classique de Pile ou Face.
Nous avons donné un algorithme simple qui permet d'évaluer le seuil au-delà duquel un mineur
n'a plus intérêt à se comporter de manière honnête sur le réseau Bitcoin. A ma connaissance, seuls
des solveurs de problèmes de décisions markoviennes avaient jusqu'ici été utilisés pour résoudre ce
problème.
Bibliographie 29
Nos calculs numériques montrent que le seuil vaut environ 32.94% lorsque le mineur a une
connectivité nulle.
Bitcoin ne représente certes pas tout le monde des cryptomonnaies mais son protocole basé sur
les preuves de travail est pour l'heure majoritaire. D'autres cryptomonnaies comme NXT, Tezos
ou bientôt Ethereum 2.0 fonctionnent (ou promettent de fonctionner) de manière radicalement
diérente. Elles présentent l'avantage de se passer de débauche énergétique nécessaire pour sécu-
riser le registre des transactions. Il n'y a plus de mineur obligé de gaspiller de l'énergie pour
éventuellement trouver le prochain bloc qu'il pourra ajouter ensuite à la blockchain ocielle. Dans
le cadre de ces protocoles, chacun peut proposer un nouveau bloc et la probabilité d'être accepté
est proportionnelle à la richesse que l'on possède. On n'a pas à faire tourner des machines jusqu'à
obtenir une preuve de travail. L'heureux élu est sélectionné en fonction de sa participation dans
le réseau et concrètement de la richesse qu'il possède. De tels protocoles sont ainsi basés sur des
preuves de participation. On parle aussi parfois preuve d'enjeu ( Proof of Stake en anglais).
Cependant, il existe notamment une attaque dévastatrice sur de tels réseaux, très simple à
mener. Elle consiste à réécrire entièrement la blockchain depuis le début et à en produire une autre
de taille plus importante. Ces attaques portent le nom de Long-range attack en anglais. Elles
sont très faciles à réaliser étant donné qu'il est très simple de construire des blocs. Contrairement
à Bitcoin, cela ne coûte rien. C'est pourquoi, en général, de tels protocoles possèdent en plus de
la première phase de sélection basée sur des preuves de participation, une seconde phase dite de
validation. Dans cette phase, un certain nombre de validateurs bien identiés votent pour accepter
ou non le bloc. Il s'agit pour ces noeuds particuliers de se mettre d'accord sur un bloc. On retrouve
un problème de recherche de consensus bien connu en informatique car ici les validateurs à chaque
date de validation sont connus. C'est le problème classique des généraux byzantins pour un système
distribué fermé. Plusieurs solutions ont été proposées depuis les travaux initiaux de Leslie Lamport
dans les années 80. On parle d'algorithmes Byzantine Fault Tolerant . Mais tous ces consensus
qui existaient avant Bitcoin, (certains sont sophistiqués) sont des consensus dits à autorisation
(permissionned en anglais). Le problème est : étant donné un nombre déterminé de noeuds (comme
un ensemble de généraux byzantins), comment parvenir à un consensus ? Le problème de Bitcoin
n'est pas celui-là puisque le nombre de mineurs comme de validateurs est à chaque instant aléatoire.
On n'a pas besoin sur Bitcoin de demander l'accord de validateurs pour proposer un nouveau bloc.
Chacun peut rentrer ou sortir du réseau comme dans un moulin. Bitcoin réalise un consensus dans
un univers où personne n'a besoin de demander d'autorisation. L'algorithme de consensus est
dit permissionless en anglais. Cela crée une diérence notable entre tous les projets. Certes,
on peut imaginer des projets verts sans débauche énergétique mais c'est au détriment de la
décentralisation du réseau, avec une phase de validation. A notre connaissance, aucun des projets
concurrents à Bitcoin n'atteint le même niveau de décentralisation. C'est pourquoi, bitcoin est en
train de devenir ce qu'était l'or autrefois mais dans un univers numérique. C'est aussi pourquoi
tôt ou tard, des banques centrales seront amenés à conserver des stocks de bitcoin comme autrefois
des stocks d'or. Certains acteurs économiques dont aussi des assureurs l'ont compris et ont déjà
placé une partie de leur trésorerie en bitcoin, malgré son cours très volatile.
Nous avons vu que les assureurs aussi peuvent jouer un rôle dans la nouvelle nance décentra-
lisée. Cela peut être assurer des smart-contracts compliqués contre un risque de bug mais aussi
assurer des NFT et autres produits pouvant par exemple intervenir dans le monde des jeux vidéos.
Enn, nous avons expliqué comment la proposition de log-contrat discret de Tadge Dryja pouvait
potentiellement conduire à une véritable nance décentralisée hors chaîne sur le modèle du
Lightning Network sur Bitcoin . On peut ainsi imaginer une véritable plateforme d'achat et de
de suivi pour les contrats d'assurance paramétriques.
Remerciements. Je remercie vivement la direction du CNAM, Alexis Collomb et Sandrine
Lemery pour m'avoir donné l'occasion d'écrire un mémoire sur les cryptomonnaies. Les résul-
tats présentés ici sont connexes à des études menées avec mon collaborateur et ami Ricardo Pérez-
Marco. Je dédie naturellement ce travail à Michel Fromenteau.
Bibliographie
[1] T. Dryja. Discreet log contracts. [Link]/[Link] , 2017.
30 Section
[2] T. Dryja et J. Poon. The bitcoin lightning network: scalable off-chain instant payment. [Link]-
work/docs/ , 2016.
[3] I. Eyal et E. Sirer. Majority is not enough: bitcoin mining is vulnerable. Financial Cryptography and Data
Security, pages 436454, 2014.
[4] C. Grunspan et R. Pérez-Marco. Double spend races. Int. Journal Theoretical and Applied Finance, 21(08),
2018.
[5] C. Grunspan et R. Pérez-Marco. On protability of selsh mining. [Link]/abs/1805.08281v3, 2018.
[6] C. Grunspan et R. Pérez-Marco. On protability of nakamoto double spend. Probability in the Engineering
and Informational Science, pages 115, 2021.
[7] S. Haber et W. Stornetta. How to time-stamp a digital document. Journal of Cryptology, 3(2):99111, 1991.
[8] S. Nakamoto. Bitcoin: a peer-to-peer electronic cash system. [Link]/[Link] , released on
November 1st 2008 on the USENET Cryptography Mailing List "Bitcoin P2P e-cash paper".
[9] RHorning. Mining cartel attack. [Link]/[Link]?topic=2227.0, 2010.
[10] M. Rosenfeld. Analysis of bitcoin pooled mining reward systems. ArXiv:1112.4980, 2011.
[11] A. Sapirstein, Y. Sompolinsky, et Zohar A. Optimal selsh mining strategies in bitcoin. International Confe-
rence on Financial Cryptography, 2016.
[12] N. Szabo. Smart contracts. [Link]/[Link], 1994.
[13] R. Wattenhofer. Blockchain Science. Inverted Forest Publishing, 2019.