Fonctionnement d’une crypto-monnaie : le Bitcoin Bastien Vialla But de la prése
Fonctionnement d’une crypto-monnaie : le Bitcoin Bastien Vialla But de la présentation • Ce que l’on va voir : • Posséder des bitcoins • Echanger des bitcoins • Miner des bitcoins • Ce que l’on ne verra pas : • La partie système économique Historique • Créer en 2009 par un certain Satoshi Nakamoto • Première mise en pratique « distributed crypto- currency », Wei Dai en 1998, cypherpunks mailing list • Monnaie décentralisée : monnaie peer-to-peer évitant les banques • Utiliser la cryptographie pour la creation et le transfert de monnaie au lieu des banques centrales. Les personnages principaux Bob 1. Alice veut acheter 5 btc de « marchandises » à Bob. 2. Alice veut arnaquer Bob pour avoir la « marchandise » et garder son argent Alice Bitcoin vu de la Lune Bitcoin est un fichier numérique contenant un registre. Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Bitcoin vu de la Lune Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Bitcoin vu de la Lune Alice -> Bob 5 btc Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Bitcoin vu de la Lune Alice -> Bob 5 btc Alice 5 Bob 5,01 Carol 1 David 12556 Eve 12,51 … … Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Bitcoin vu de la Lune Alice -> Bob 5 btc Alice 5 Bob 5,01 Carol 1 David 12556 Eve 12,51 … … Alice 5 Bob 5,01 ,01 Carol 1 David 12556 Eve 12,51 … … Bitcoin vu de la Lune • Les transactions bitcoin sont connus de tout le réseau. • Les utilisateurs du réseau sont anonymes. • Comment assurer la sécurité ? Les transactions Le registre Alice 10 Bob 0,01 Carol 1 David 12556 Eve 12,51 … … Le registre Alice -> Bob 5btc David -> Carol 0,4btc Eve -> Freddy 1btc Tyron -> Shae 10btc … Transactions txn #4A2… Inputs Outputs txn #312… txn #2E3… Bob 5.0 Alice 1.0 Alice -> Bob 5 btc txn #312… Inputs Outputs txn #8E4… Alice 4.0 txn #2E3… Inputs Outputs txn #647… txn #7B9… Alice 2.0 Eve -> Alice 4 btc Fred -> Alice 2 btc Transactions txn #4A2… Inputs Outputs txn #312… txn #2E3… Bob 5.0 Alice 1.0 Alice -> Bob 5 btc txn #312… Inputs Outputs txn #8E4… Alice 4.0 txn #2E3… Inputs Outputs txn #647… txn #7B9… Alice 2.0 Eve -> Alice 4 btc Fred -> Alice 2 btc 1. Le montant des inputs est égal au montant des outputs. Transactions txn #4A2… Inputs Outputs txn #312… txn #2E3… Bob 5.0 Alice 1.0 Alice -> Bob 5 btc txn #312… Inputs Outputs txn #8E4… Alice 4.0 txn #2E3… Inputs Outputs txn #647… txn #7B9… Alice 2.0 Eve -> Alice 4 btc Fred -> Alice 2 btc Spend no Spend no ok ok 1. Le montant des inputs est égal au montant des outputs. 2. Les inputs ne sont pas utilisés dans une autre transaction. Transaction chain txn … Inputs … Outputs Bob 5.0 txn … Inputs … Outputs Alice 5.0 txn … Inputs … Outputs Bob 5.0 txn … Inputs … Outputs Fred 3.0 txn … Inputs … Outputs Eve 5.0 txn … Inputs … Outputs Jim 5.0 txn … Inputs … Outputs Dave 7.0 Fred 2.0 Problème : Comment être sûr de l’origine de la transaction ? Authentification Utilisation d’une signature numérique Authentification Utilisation d’une signature numérique Clé privée Clé publique Alice Message Authentification Utilisation d’une signature numérique Clé privée Clé publique Alice Message Signer( )->( Message Signature ) Authentification Utilisation d’une signature numérique Clé privée Clé publique Alice Message Signer( )->( Message Signature ) Freddy Message Verifier( )-> Signature Valide / Non Valide Signature numérique • Les utilisateurs sont représenter par leurs couple de clés • Il est très difficile de trouver la clé privée à partir de la clé publique • La signature est différente pour tout les messages Txn 43125… Signature Signature numérique • Les utilisateurs sont représenter par leurs couple de clés • Il est très difficile de trouver la clé privée à partir de la clé publique • La signature est différente pour tout les messages Txn 43825… Signature Signature numérique • Les utilisateurs sont représenter par leurs couple de clés • Il est très difficile de trouver la clé privée à partir de la clé publique • La signature est différente pour tout les messages Txn 43825… Signature Signature numérique • Les utilisateurs sont représenter par leurs couple de clés • Il est très difficile de trouver la clé privée à partir de la clé publique • La signature est différente pour tout les messages Txn 43825… Signature Elliptic Curve Digital Signature Algorithm Problème : Comment contrer la latence du réseau ? Latence et attaque « double spending » Alice -> Bob 5 btc Alice -> Alice 5 btc Le temps de validation d’une transaction doit être supérieur à celui d’un broadcast. Latence et attaque « double spending » Alice -> Bob 5 btc Alice -> Alice 5 btc Le temps de validation d’une transaction doit être supérieur à celui d’un broadcast. Latence et attaque « double spending » Alice -> Bob 5 btc Alice -> Alice 5 btc Le temps de validation d’une transaction doit être supérieur à celui d’un broadcast. Latence et attaque « double spending » Alice -> Bob 5 btc Alice -> Alice 5 btc Le temps de validation d’une transaction doit être supérieur à celui d’un broadcast. Latence et attaque « double spending » Désaccord sur le réseau Alice 5btc Alice 5btc Alice 5btc Bob 5btc Bob 5btc Latence et attaque « double spending » • L’ordre de reception des transactions n’est pas le même que l’ordre d’émission • L’utilisation de timestamp n’est pas sûre S’accorder sur l’ordre des transactions S’accorder sur l’ordre des transactions Block Chain block #342… txn #… txn #… txn #… … block #13A… txn #… txn #… txn #… … block #8E0… txn #… txn #… txn #… … prev #13A… prev #8E0… prev #723… Temps block #342… txn #… txn #… txn #… … block #13A… txn #… txn #… txn #… … block #8E0… txn #… txn #… txn #… … prev #13A… prev #8E0… prev #723… txn … Inputs … Outputs Bob 5.0 txn … Inputs … Outputs Alice 5.0 txn … Inputs … Outputs Bob 5.0 txn … Inputs … Outputs Fred 3.0 txn … Inputs … Outputs Eve 5.0 txn … Inputs … Outputs Jim 5.0 Fred 2.0 Transaction chain Possession des bitcoins Block chain Ordre des transactions Block Chain • Les transactions d’un même bloc sont considérés émises en même temps • Les transactions qui ne sont dans aucun bloc sont dites non confirmées Création d’un bloc txn #… txn #… txn #… txn #… txn #… txn #… txn #… txn #… txn #… Transactions non confirmées block #342… block #13A… txn #… txn #… txn #… … block #8E0… txn #… txn #… txn #… … prev #13A… prev #8E0… prev #723… Création d’un bloc txn #… txn #… txn #… txn #… Transactions non confirmées block #342… block #13A… txn #… txn #… txn #… … block #8E0… txn #… txn #… txn #… … prev #13A… prev #8E0… prev #723… txn #… txn #… txn #… … S’accorder sur l’ordre des transactions Block Chain block #342… txn #… txn #… txn #… … block #13A… txn #… txn #… txn #… … block #8E0… txn #… txn #… txn #… … prev #13A… prev #8E0… prev #723… block #ABC… txn #… txn #… txn #… … prev #13A… Eve Jim Problème : Quel bloc choisir ? S’accorder sur l’ordre des transactions block txn #… txn #… txn #… … prev #723… nonce x f(block(x)) < cible f est une fonction de hachage Le temps de validation doit être supérieure à celle d’un broadcast. Fonction de hachage f(« Semindoctus ») f345 5473 d291 c514 fe41 9bf2 5217 69e5 df61 b7b7 f(« Je ne cherche pas, je trouve ») 1542 e9ea 5eb2 a242 f93a 8be2 ff53 a60a b1da 3146 f(« Je ne cherche pas, je trouve. ») 7ff4 3f79 87a4 a2a0 b7a5 f4e5 7253 7e1a 9424 92bc S’accorder sur l’ordre des transactions f(prev#723…, txn#…, … , txn#…, x) < 100… f(prev#723…, txn#…, … , txn#…, 153324) = 5668… < 100… f(prev#723…, txn#…, … , txn#…, 153325) = 8955… < 100… f(prev#723…, uploads/Finance/ step-by-step-microsoft-carl-chatfield-timothy-johnson-d-microsoft-project-2013-step-by-step-2013-microsoft-press.pdf
Documents similaires








-
22
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 29, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 1.0325MB