Académique Documents
Professionnel Documents
Culture Documents
Bit Coin
Bit Coin
Bastien Vialla
But de la présentation
Alice Bob
Alice 10
Bob 0,01
Carol 1
David 12556
Eve 12,51
… …
Bitcoin vu de la Lune
Alice 10
Alice 10
Bob 0,01
Bob 0,01
Carol 1
Carol 1
Alice 10 David 12556
David 12556
Bob 0,01 Eve 12,51
Eve 12,51
Carol 1 … …
… …
Alice 10
David 12556
Bob 0,01
Eve 12,51
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
… … Eve 12,51
… …
Bitcoin vu de la Lune
Alice 10
Bob 0,01
Carol 1
David 12556 Alice 10
Eve 12,51 Bob 0,01
… … Carol 1
David 12556
Eve 12,51
… …
Alice 5
Bob 5,01
Carol 1
David 12556 Alice 10
Eve 12,51 Bob 0,01
… … Carol 1
David 12556
Eve 12,51
… …
Alice 5
Bob 5,01
Carol 1
David 12556 Alice 5
Eve 12,51 Bob 5,01
… … Carol ,01
1
David 12556
Eve 12,51
… …
Alice 10
Bob 0,01
Carol 1
David 12556
Eve 12,51
… …
Le registre
…
Transactions
Eve -> Alice
4 btc txn #312…
Inputs
txn #8E4…
Outputs
Alice 4.0 txn #4A2…
Inputs
txn #312…
txn #2E3… txn #2E3…
Inputs Outputs
txn #647…
Bob 5.0
txn #7B9…
Alice 1.0
Outputs
Fred -> Alice
Alice 2.0 Alice -> Bob
2 btc
5 btc
Transactions
Eve -> Alice 1. Le montant des inputs est égal au montant
4 btc txn #312… des outputs.
Inputs
txn #8E4…
Outputs
Alice 4.0 txn #4A2…
Inputs
txn #312…
txn #2E3… txn #2E3…
Inputs Outputs
txn #647…
Bob 5.0
txn #7B9…
Alice 1.0
Outputs
Fred -> Alice
Alice 2.0 Alice -> Bob
2 btc
5 btc
Transactions
Eve -> Alice 1. Le montant des inputs est égal au montant
4 btc txn #312… des outputs.
Inputs 2. Les inputs ne sont pas utilisés dans
txn #8E4… une autre transaction.
Outputs
Alice 4.0 txn #4A2…
Spend no Inputs
txn #312… ok
txn #2E3… txn #2E3… ok
Inputs Outputs
txn #647…
Bob 5.0
txn #7B9…
Alice 1.0
Outputs
Fred -> Alice
Alice 2.0 Alice -> Bob
2 btc
Spend no 5 btc
Transaction chain
txn …
Inputs … txn … txn …
Outputs Inputs … Inputs …
Eve 5.0 Outputs Outputs
Fred 3.0 Bob 5.0
txn …
Inputs …
Outputs txn … txn …
Jim 5.0 Inputs … Inputs …
Outputs Outputs
txn … Bob 5.0 Alice 5.0
Fred 2.0
Inputs …
Outputs
Dave 7.0
Problème : Comment être sûr de l’origine de la
transaction ?
Authentification
Alice
Freddy
Txn
43125…
Signature
Signature numérique
Txn
43825…
Signature
Signature numérique
Txn
43825…
Signature
Signature numérique
Bob Bob
5btc 5btc
Alice Alice
5btc 5btc
Alice
5btc
Block Chain
Temps
txn …
txn … txn …
Transaction chain Inputs …
Inputs …
Inputs …
Possession des bitcoins Outputs
Outputs Outputs
Eve 5.0
Fred 3.0 Bob 5.0
txn #… txn #…
Transactions txn #…
txn #…
txn #…
txn #…
non confirmées
txn #… txn #… txn #…
txn #… txn #…
txn #… txn #…
txn #… txn #…
… …
Création d’un bloc
txn #…
Transactions txn #…
txn #…
non confirmées
txn #…
txn #… txn #…
txn #… txn #… block #ABC…
txn #… txn #… prev #13A…
… …
txn #…
Jim
txn #…
txn #…
…
Problème : Quel bloc choisir ?
S’accorder sur l’ordre des transactions
block
prev #723…
f est une fonction de hachage
txn #…
txn #…
txn #… f(block(x)) < cible
…
nonce
x
Fonction de hachage
f(« Semindoctus »)
f345 5473 d291 c514 fe41 9bf2 5217 69e5 df61 b7b7
ID
block #0254…
prev #723…
txn #…
txn #…
txn #…
…
nonce
153327
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…, txn#…, … , txn#…, 153326) = 2504… < 100…
f(prev#723…, txn#…, … , txn#…, 153327) = 0254… < 100…
block #0254…
prev #723… Eve
txn #…
txn #…
txn #…
…
block #8E0… block #723…
nonce
prev #723… prev #8E0…
153327
txn #… txn #…
txn #… txn #…
txn #… txn #… block
… …
prev #723…
txn #…
Jim
txn #…
txn #…
…
nonce
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…, txn#…, … , txn#…, 153326) = 2504… < 100…
f(prev#723…, txn#…, … , txn#…, 153327) = 0254… < 100…
block #0254…
prev #723… Eve
txn #…
txn #…
txn #…
…
block #8E0… block #723…
nonce
prev #723… prev #8E0…
153327
txn #… txn #…
txn #… txn #…
txn #… txn #… block
… …
prev #723…
Jim
txn #…
txn #…
txn #…
…
nonce
S’accorder sur l’ordre des transactions
block #0254…
prev #723… Eve
txn #…
txn #…
txn #…
…
block #8E0… block #723…
nonce
prev #723… prev #8E0…
153327
txn #… txn #…
txn #… txn #…
txn #… txn #…
block #0982…
… …
Jim
prev #723…
txn #…
txn #…
txn #…
…
nonce
0985
Deux blocs sont validés en même temps
block #0254… block
prev #723…
block #8E0… block #723… prev #0254…
txn #…
txn #…
prev #723… prev #8E0…
txn #…
txn #…
…
nonce txn #…
txn #…
txn #… txn #…
153327 …
txn #… txn #…
txn #… txn #…
… …
block #0982…
prev #723…
Noeud 153
Un noeud mine à txn #…
txn #…
txn #…
block #0254…
prev #723…
block #8E0… block #723…
txn #…
txn #…
prev #723… prev #8E0…
txn #…
…
nonce
txn #… txn #…
txn #… 153327
txn #…
txn #… txn #…
… …
block #0982… block
prev #723…
prev #0254…
txn #…
Noeud 4 txn #…
txn #…
… txn #…
nonce txn #…
txn #…
0985 …
Deux blocs sont validés en même temps
block #0254… block #A2…
prev #723…
block #8E0… block #723… prev #0254…
txn #…
txn #…
prev #723… prev #8E0…
txn #…
txn #…
…
random number txn #…
txn #…
txn #… txn #…
153327 …
txn #… txn #…
txn #… txn #…
… …
block #0982…
prev #723…
Noeud 153
Un noeud mine sur la branche
txn #…
txn #…
txn #…
…
la plus longue.
random number
0985
Noeud 4 txn #…
txn #…
txn #… txn #…
… txn #…
random number txn #…
…
0985
Deux blocs sont validés en même temps
block #0254… block #A2… block
prev #723…
block #8E0… block #723… prev #0254…
prev #A2…
txn #…
txn #…
prev #723… prev #8E0…
txn #…
txn #…
… txn #…
random number txn #…
txn #…
txn #…
txn #… txn #… txn #…
153327 …
txn #… txn #… …
txn #… txn #…
… …
block #0982…
txn #…
Noeud 153
txn #…
éliminée deviennent
txn #…
…
random number
non confirmées.
0985
Noeud 4
txn #…
txn #…
… txn #…
random number txn #…
txn #…
0985 …
Deux blocs sont validés en même temps
block #0254… block #A2… block
prev #723…
block #8E0… block #723… prev #0254… prev #A2…
txn #…
txn #…
prev #723… prev #8E0…
txn #… txn #…
txn #…
… txn #…
random number txn #…
txn #… txn #…
txn #… txn #… …
153327 …
txn #… txn #…
txn #… txn #…
… …
Noeud 153
Noeud 4
… txn #… txn #…
random number txn #… txn #…
txn #… txn #… … …
txn #… 153327
txn #…
txn #… txn #…
… …
Deux blocs sont validés en même temps
…
prev #723… prev #8E0…
txn #…
txn #…
txn #… txn #… txn #…
txn #… txn #… … txn #… txn #…
txn #… txn #… random number txn #… txn #…
txn #… txn #… … …
… 153327
…
…
prev #723… prev #865E…
txn#…
txn#…
txn#…
Alice -> Alice txn#…
txn#…
… txn#…
…
…
random number
random number random number
4552
4552 78045
…
prev #723… prev #865E…
txn#…
txn#…
txn#…
Alice -> Alice txn#…
txn#…
… txn#…
…
…
random number
random number random number
4552
4552 78045
non confirmées. …
prev #723… prev #865E…
txn#…
txn#…
txn#…
Alice -> Alice txn#…
txn#…
… txn#…
…
…
random number
random number random number
4552
4552 78045
…
prev #723… prev #865E…
txn#…
txn#…
txn#…
Alice -> Alice txn#…
txn#…
… txn#…
…
…
random number
random number random number
4552
4552 78045
txn #… txn #…
txn #… txn #…
txn #… txn #…
… …
Attaque « double spending » le retour
La transaction Alice -> Bob txn #4A2…
n’est plus valide car les inputs sont déjà utilisés. Inputs
txn #312…
Outputs
Bob 5.0
Outputs
Outputs
Alice 5.0
Alice 5.0
Alice -> Alice
5 btc
« Double Spending » le retour
…
Exemple bloc
S’accorder sur l’ordre des transactions
block #0254…
block #8E0… block #723…
prev #723…
prev #723… prev #8E0…
txn #…
txn #… txn #… txn #…
txn #… txn #1A… txn #…
txn #… txn #… …
… … random number
153327
S’accorder sur l’ordre des transactions
block #723…
prev #8E0…
txn #…
txn #1A…
txn #…
…
block #0254…
block #8E0… prev #723…
prev #723…
txn #…
txn #… txn #…
txn #… txn #…
txn #… …
… random number
block #5B3…
prev #8E0… 153327
txn #…
txn #53…
txn #…
…
S’accorder sur l’ordre des transactions
block #723…
prev #8E0…
txn #…
txn #1A…
txn #…
…
block #0254…
block #8E0… block #5B3… prev #723…
prev #723… prev #8E0…
txn #…
txn #… txn #… txn #…
txn #… txn #53… txn #…
txn #… txn #… …
… … random number
153327