Cette simulation analyse la rentabilité des attaques à double dépense répétées sur le réseau Bitcoin. L'attaquant abandonne son cycle d'attaque et revient miner sur la blockchain officielle dès que son retard dépasse une valeur limite A.
q: Puissance de minage de l'attaquant (proportion de la puissance de hachage totale)z: Nombre de confirmations requises (fixé à 6 dans notre simulation)A: Seuil de retard maximum toléré par l'attaquant (fixé à 3 dans notre simulation)v: Valeur de la double dépense (50 BTC dans notre simulation)b: Valeur moyenne contenue dans un bloc (récompense + frais, 6.25 BTC)
Notre simulation a révélé les résultats suivants pour différentes puissances de minage :
| q | Taux de succès | Profit (BTC) | Rentable? | Tentatives moyennes |
|---|---|---|---|---|
| 0.10 | 0.0001 | -37406.2500 | Non | 10000.00 |
| 0.15 | 0.0008 | -55500.0000 | Non | 1250.00 |
| 0.20 | 0.0050 | -70312.5000 | Non | 200.00 |
| 0.25 | 0.0175 | -77343.7500 | Non | 57.14 |
| 0.30 | 0.0481 | -67406.2500 | Non | 20.79 |
| 0.35 | 0.1070 | -36125.0000 | Non | 9.35 |
| 0.40 | 0.1938 | 31687.5000 | Oui | 5.16 |
| 0.45 | 0.3380 | 146125.0000 | Oui | 2.96 |
| 0.50 | 0.4883 | 270281.2500 | Oui | 2.05 |
Conclusion: L'attaque devient rentable à partir d'une puissance de minage q ≈ 0.40 (40% de la puissance totale du réseau).
Le script génère quatre graphiques illustrant :
- Taux de succès des attaques en fonction de la puissance de minage
- Profit estimé en fonction de la puissance de minage
- Rentabilité (binaire) en fonction de la puissance de minage
- Nombre moyen de tentatives nécessaires pour un succès
Ces résultats démontrent que:
- Les attaques à double dépense ne sont pas rentables avec une puissance de minage inférieure à 40% du réseau
- Le seuil de 6 confirmations recommandé par Bitcoin est efficace contre les attaquants possédant moins de 40% de la puissance de hachage
- Un attaquant disposant de plus de 40% de la puissance de hachage pourrait théoriquement réaliser des profits significatifs
- Plus la puissance de l'attaquant est élevée, moins il a besoin de tentatives pour réussir une attaque
- NumPy
- Matplotlib
- tqdm
Installer les dépendances avec :
pip install numpy matplotlib tqdmpython3 double_spending_simulation.py