Outils pour utilisateurs

Outils du site


issue83:qu_est-ce_que_c_est

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue83:qu_est-ce_que_c_est [2014/08/28 17:54] – [6] auntieeissue83:qu_est-ce_que_c_est [2014/09/11 21:30] (Version actuelle) – [12] fcm_-_ekel
Ligne 9: Ligne 9:
 Another essential feature is that each input will give a completely different hash, even for a very small difference. “MyHash” and “myHash” will give completely different outputs.** Another essential feature is that each input will give a completely different hash, even for a very small difference. “MyHash” and “myHash” will give completely different outputs.**
  
-Le record des transactionsest protégé par différent mécanismes, mais l'un des principaux est un algorithme de hachage. Nous parlerons de la raison pour cela plus tard. Un algorithme de hachage n'est qu'une fonction qui transforme n'importe quelles données de n'importe quelle taille en un résultat d'une longueur pré-déterminée. Un très simple algorithme de hachage serait : « compter le nombre de caractères dans les données saisies et mettre assez de zéros devant ce nombre pour arriver à un total de 10 chiffres ». Par exemple, le résultat du traitement de « un mot » avec cet algorithme serait 0000000006. Cet algorithme ne fonctionnera que pour des données de moins de 9999999999 caractères et est ainsi, dans ce sens un algorithme de hachage limité qui ne fonctionne qu'à partir d'un domaine particulier.+Le grand livre des transactions est protégé par différent mécanismes, mais l'un des principaux est un algorithme de hachage. Nous parlerons de la raison pour cela plus tard. Un algorithme de hachage n'est qu'une fonction qui transforme n'importe quelle donnée de n'importe quelle taille en un résultat d'une longueur pré-déterminée. Un très simple algorithme de hachage serait : « compter le nombre de caractères dans les données saisies et mettre assez de zéros devant ce nombre pour arriver à un total de 10 chiffres ». Par exemple, le résultat du traitement de « un mot » avec cet algorithme serait 0000000006. Cet algorithme ne fonctionnera que pour des données de moins de 9999999999 caractères et est ainsi, dans ce sens un algorithme de hachage limité qui ne fonctionne qu'à partir d'un domaine particulier.
  
-Une fonction de hachage qui est souvent utilisé pour les opérations bancaires en ligne est la SHA256, qui transforme toute entrée en sortie binaire d'une longueur de 256 bytes (ou 64 caractères hexadécimaux, la représentation la plus usuelle). Cela est très intéressant, car il est très facile de générer un hachage pour n'importe quelles données, c'est presque impossible  de trouver des « collisions » (deux entrées différentes qui donnent le même résultat ), le hash ne peut pas être décompilé pour obtenir le contenu d'origine et, bien entendu, les mêmes données entrées généreront toujours le même hachage.+Une fonction de hachage qui est souvent utilisée pour les opérations bancaires en ligne est la SHA256, qui transforme toute entrée en sortie binaire d'une longueur de 256 bytes (ou 64 caractères hexadécimaux, la représentation la plus usuelle). Cela est très intéressant, car il est très facile de générer un hachage pour n'importe quelle donnée, c'est presque impossible  de trouver des « collisions » (deux entrées différentes qui donnent le même résultat), le hash ne peut pas être décompilé pour obtenir le contenu d'origine et, bien entendu, les mêmes données entrées généreront toujours le même hachage.
  
-Un autre de ses caractéristiques essentielles est que chaque entrée résultera dans un hachage complètement différent, même si les différences sont minimes. « MyHash » et « myHash » donneront des résultats totalement différents.+Une autre de ses caractéristiques essentielles est que chaque entrée aura comme résultat un hachage complètement différent, même si les différences sont minimes. « MyHash » et « myHash » donneront des résultats totalement différents.
  
 ===== 2 ===== ===== 2 =====
Ligne 37: Ligne 37:
 The problem can only be solved if the entire network can agree on a transaction order.** The problem can only be solved if the entire network can agree on a transaction order.**
  
-Un problème supplémentaire de sécurité : l'Ordre des transactions+Un problème supplémentaire de sécurité : l'Ordre des Transactions
  
 Maintenir l'ordre des transactions est difficile. Parce que de nouvelles transactions sont propagées continuellement sur le réseau, le scénario suivant devient possible : Maintenir l'ordre des transactions est difficile. Parce que de nouvelles transactions sont propagées continuellement sur le réseau, le scénario suivant devient possible :
  
-- transaction 1 se fait et commence à se propager sur le réseau +- transaction 1 se fait et commence à se propager sur le réseau ; 
-- transaction 2 se fait 10 secondes plus tard et commence à se propager sur le réseau+- transaction 2 se fait 10 secondes plus tard et commence à se propager sur le réseau ;
 - un nœud peer-to-peer beaucoup plus près de l'origine de la transaction 2 reçoit la transaction 2 en premier lieu et la transaction 1 plus tard. Pour ce qui concerne ce nœud-là le bon ordre chronologique des transactions est transaction 2 -> transaction 1. - un nœud peer-to-peer beaucoup plus près de l'origine de la transaction 2 reçoit la transaction 2 en premier lieu et la transaction 1 plus tard. Pour ce qui concerne ce nœud-là le bon ordre chronologique des transactions est transaction 2 -> transaction 1.
  
Ligne 48: Ligne 48:
  
 Par exemple, le scénario suivant peut arriver : Par exemple, le scénario suivant peut arriver :
-- un acheteur paie un produit (transaction 1, en se référant à la transaction A comme entrée d'argent) +- un acheteur paie un produit (transaction 1, en se référant à la transaction A comme entrée d'argent) ; 
-- le vendeur envoie le produit +- le vendeur envoie le produit ; 
-- l'acheteur envoie une deuxième transaction vers lui-même ou vers un autre clé public dont il est propriétaire (transaction 2, en se référant également à la transaction A comme entrée d'argent) +- l'acheteur envoie une deuxième transaction vers lui-même ou vers une autre clé publique dont il est propriétaire (transaction 2, en se référant également à la transaction A comme entrée d'argent) ; 
-- à cause de la vitesse de propagation de la transaction sur le réseau, certains nœuds peuvent recevoir la transaction 2 avant la transaction 1 et déclarent donc que la transaction 1 est invalide parce qu'il dépense l'argent de la transaction A une deuxième fois.+- à cause de la vitesse de propagation de la transaction sur le réseau, certains nœuds peuvent recevoir la transaction 2 avant la transaction 1 et déclarent donc que la transaction 1 est invalide parce qu'il dépense l'argent de la transaction A une deuxième fois ;
 - s'il y a un consensus sur ce fait, le vendeur du produit ne sera pas payé, parce que la transaction 1 a été jugée invalide. Ainsi, le vendeur aura envoyé un produit gratuitement. - s'il y a un consensus sur ce fait, le vendeur du produit ne sera pas payé, parce que la transaction 1 a été jugée invalide. Ainsi, le vendeur aura envoyé un produit gratuitement.
  
Ligne 67: Ligne 67:
 A Transaction that has been put into the latest block is said to have been confirmed once. A transaction that was put into the block directly before that is said to have been confirmed twice, etc. The reason for that is important, and will be explained in the Block Chain Security sections.** A Transaction that has been put into the latest block is said to have been confirmed once. A transaction that was put into the block directly before that is said to have been confirmed twice, etc. The reason for that is important, and will be explained in the Block Chain Security sections.**
  
-Les blocs de transactions et la chaîne des blocs+Les Blocs de Transactions et la Chaîne des Blocs
  
 La réponse de la monnaie virtuelle à ce problème est de grouper les transactions par blocs qui sont organisés chronologiquement selon leur « hauteur ». La hauteur du premier bloc de transactions est de 0, celle du deuxième bloc est de 1, la hauteur du troisième bloc est de 2, et ainsi de suite. Toutes les transactions dans un bloc sont supposées avoir eu lieu exactement en même temps et sont étiquetées en conséquence. La réponse de la monnaie virtuelle à ce problème est de grouper les transactions par blocs qui sont organisés chronologiquement selon leur « hauteur ». La hauteur du premier bloc de transactions est de 0, celle du deuxième bloc est de 1, la hauteur du troisième bloc est de 2, et ainsi de suite. Toutes les transactions dans un bloc sont supposées avoir eu lieu exactement en même temps et sont étiquetées en conséquence.
  
-Ainsi, les blocs fournissent un ordre chronologique des transactions et la chaîne des blocs, validées de façon dynamique par la puissance de traitement du réseau peer-to-peer, s'appelle la Chaîne des blocs. Les transactions qui n'ont pas était incorporées dans un bloc sont sans valeur et dites non triées ou non confirmées jusqu'à leur incorporation dans un bloc.+Ainsi, les blocs fournissent un ordre chronologique des transactions et la chaîne des blocs, validée de façon dynamique par la puissance de traitement du réseau peer-to-peer, s'appelle la Chaîne des Blocs. Les transactions qui n'ont pas été incorporées dans un bloc sont sans valeur et dites non triées ou non confirmées jusqu'à leur incorporation dans un bloc.
  
 On dit d'une transaction qui a été incorporée dans le bloc le plus récent, qu'elle a été confirmée une fois. On dit d'une transaction qui a été incorporée dans le bloc précédent le bloc le plus récent, qu'elle a été confirmée deux fois, etc. La raison pour tout cela est importante et je l'expliquerai dans les sections concernant la sécurité d'une chaîne de blocs. On dit d'une transaction qui a été incorporée dans le bloc le plus récent, qu'elle a été confirmée une fois. On dit d'une transaction qui a été incorporée dans le bloc précédent le bloc le plus récent, qu'elle a été confirmée deux fois, etc. La raison pour tout cela est importante et je l'expliquerai dans les sections concernant la sécurité d'une chaîne de blocs.
Ligne 89: Ligne 89:
 Cela va sans dire qu'il faut un système pour pouvoir se mettre d'accord sur l'ordre de la chaîne de blocs et pour protéger la chaîne de blocs de toute falsification  (qui rendrait le réseau vulnérable aux attaques de dépenses en double). Cela va sans dire qu'il faut un système pour pouvoir se mettre d'accord sur l'ordre de la chaîne de blocs et pour protéger la chaîne de blocs de toute falsification  (qui rendrait le réseau vulnérable aux attaques de dépenses en double).
  
-La première façon d'empêcher toute modification frauduleuse est de faire en sorte que chaque bloc ne contient qu'une référence au bloc précédent, mais sans une « hauteur » de bloc. Ainsi, à l'exception du tout premier bloc créé, un bloc ne peut pas être créé sans un parent direct, le bloc précédent, et en se référent explicitement à ce parent avec l'utilisation du hachage du bloc parent (le résultat de l'algorithme de hachage appliqué à un bloc). La hauteur des blocs découle de cette chaîne de blocs bien ordonnée. +La première façon d'empêcher toute modification frauduleuse est de faire en sorte que chaque bloc ne contient qu'une référence au bloc précédent, mais sans une « hauteur » de bloc. Ainsi, à l'exception du tout premier bloc créé, un bloc ne peut pas être créé sans un parent direct, le bloc précédent, et en se référant explicitement à ce parent avec l'utilisation du hachage du bloc parent (le résultat de l'algorithme de hachage appliqué à un bloc). La hauteur des blocs découle de cette chaîne de blocs bien ordonnée. 
  
-N'importe quel nœud sur le réseau peut construire un bloc à partir de transactions non confirmées dont il a connaissance et le diffuser en tant que suggestion du bloc suivant de la chaîne. Bien entendu, si tout les nœuds du réseau faisait cela, il y aurait beaucoup trop de suggestions pour de nouveaux blocs.+N'importe quel nœud sur le réseau peut construire un bloc à partir de transactions non confirmées dont il a connaissance et le diffuser en tant que suggestion du bloc suivant de la chaîne. Bien entendu, si tout les nœuds du réseau faisaient cela, il y aurait beaucoup trop de suggestions pour de nouveaux blocs.
  
 ===== 5 ===== ===== 5 =====
Ligne 104: Ligne 104:
  
 Une façon d'éviter la réception de trop de suggestions de bloc est de rendre la création des blocs difficile. Une tâche très difficile est donc requise de tout créateur de bloc. Avec Bitcoin, un bloc se crée de la façon suivante : Une façon d'éviter la réception de trop de suggestions de bloc est de rendre la création des blocs difficile. Une tâche très difficile est donc requise de tout créateur de bloc. Avec Bitcoin, un bloc se crée de la façon suivante :
-* Un nœud crée un bloc en groupant des transactions et en ajoutant une référence au bloc précédent (le hash SHA 256 du bloc précédent) ; +* Un nœud crée un bloc en groupant des transactions et en ajoutant une référence au bloc précédent (le hash SHA 256 du bloc précédent). 
-* Un petit nombre, choisit au hasard, (appelé le « nonce » ou valeur de circonstance) est rajouté au bloc ;+* Un petit nombre, choisi au hasard, (appelé le « nonce » ou valeur de circonstance) est rajouté au bloc.
 * Le bloc entier accompagné du nonce est soumis à un algorithme de hachage du type SHA256 dont la sortie est le hash du bloc. * Le bloc entier accompagné du nonce est soumis à un algorithme de hachage du type SHA256 dont la sortie est le hash du bloc.
-* Bitcoin demande que la représentation hexadécimale du hash du bloc soit inférieur à une certaine valeur (qui représente la difficulté de résoudre le bloc), ce qui signifie que le hash des blocs doivent avoir un nombre quelconque de zéros au début et donne des résultats comme 0000000000000003bd7d2916ffa0d112d0797ffa9eef32ba62a219d215e02b55.+* Bitcoin demande que la représentation hexadécimale du hash du bloc soit inférieure à une certaine valeur (qui représente la difficulté de résoudre le bloc), ce qui signifie que le hash des blocs doit avoir un nombre quelconque de zéros au début et donne des résultats comme 0000000000000003bd7d2916ffa0d112d0797ffa9eef32ba62a219d215e02b55.
  
 Ce genre d'exigence s'appelle l'exigence relative à la preuve du travail exécuté. Ce genre d'exigence s'appelle l'exigence relative à la preuve du travail exécuté.
Ligne 119: Ligne 119:
 The very first bitcoin block contained a single transaction for the block author, which was the reward for creating that block (at the time 50 bitcoins).** The very first bitcoin block contained a single transaction for the block author, which was the reward for creating that block (at the time 50 bitcoins).**
  
-Puisque les hashs sont entièrement aléatoire et génèrent des résultats complètement différents avec chaque nonce différente, la seule façon de trouver un hash qui convienne au réseau est d'essayer nonce après nonce après nonce, jusqu'à ce que, enfin, le hash du bloc satisfit aux exigences. Sur un ordinateur de bureau standard, il faudrait sans doute y passer de longues années, selon le degré de difficulté choisie (liée au nombre que la valeur du hash ne doit ni égaler ni dépasser). +Puisque les hashs sont entièrement aléatoires et génèrent des résultats complètement différents avec chaque nonce différent, la seule façon de trouver un hash qui convienne au réseau est d'essayer nonce après nonce, jusqu'à ce que, enfin, le hash du bloc satisfasse aux exigences. Sur un ordinateur de bureau standard, il faudrait sans doute y passer de longues années, selon le degré de difficulté choisie (liée au nombre que la valeur du hash ne doit ni égaler ni dépasser). 
  
-Il y a un système de récompenses pour un nœud qui réussit à créer un bloc avec le bon hash : le nœud a le droit d'insérer dans la liste des transactions du bloc une transaction qui leur est destinée pour une somme prédéterminée. Actuellement, la récompense pour la solution d'un bloc ajouté ensuite à la chaîne des blocs, est de 25 bitcoins, ce qui, au moment où l'article fut écrit, était l'équivalent de 20.000 $ US (presque 15.200 euros) !+Il y a un système de récompenses pour un nœud qui réussit à créer un bloc avec le bon hash : le nœud a le droit d'insérer dans la liste des transactions du bloc une transaction qui leur est destinée pour une somme prédéterminée. Actuellement, la récompense pour la solution d'un bloc ajouté ensuite à la chaîne des blocs, est de 25 bitcoins, ce qui, au moment où l'article fut écrit, était l'équivalent de 20 000 $ US (presque 15 200 euros) !
  
 Le tout premier bloc de bitcoins contenait une seule transaction pour l'auteur du bloc, autrement dit, la récompense pour la création du bloc (à l'époque, 50 bitcoins).  Le tout premier bloc de bitcoins contenait une seule transaction pour l'auteur du bloc, autrement dit, la récompense pour la création du bloc (à l'époque, 50 bitcoins). 
Ligne 132: Ligne 132:
  
 The block mining process also further secures the block chain almost fully, but this will be explained after the next section, which describes how to deal with multiple block candidates, and introduces the concept of the longest chain.** The block mining process also further secures the block chain almost fully, but this will be explained after the next section, which describes how to deal with multiple block candidates, and introduces the concept of the longest chain.**
 +
 +Tout le processus de la création de blocs - qui nécessite de grandes puissances de computation, car il faut regarder le hash du bloc pour chaque valeur du nonce jusqu'à ce qu'un hash qui satisfasse aux exigences soit trouvé - s'appelle le minage. Le minage a deux objectifs :
 +* Il aide à sécuriser la chaîne des blocs en garantissant que très peu de candidats au bloc peuvent être générés à un temps donné ;
 +* Il crée de nouveaux bitcoins en accordant une récompense au nœud qui a résolu le bloc avec succès. Ainsi, il augmente la quantité de monnaie en circulation.
 +
 +Le processus de minage de blocs sécurise la chaîne des blocs de façon presque complète, mais j'expliquerai ceci après la prochaine section où je décris le traitement des candidats aux blocs multiples et présente le concept de la chaîne la plus longue.
 +
  
 ===== 8 ===== ===== 8 =====
  
-Securing the Block Chain: Dealing with Multiple Candidates+**Securing the Block Chain: Dealing with Multiple Candidates
  
-**Consider the following scenario (arrows indicate a child block that refers to its parent block):+Consider the following scenario (arrows indicate a child block that refers to its parent block):
  
 [Block 10] <- [Block 11] [Block 10] <- [Block 11]
Ligne 146: Ligne 153:
  
 [Block 10] <- [Block 11] <- [Block 12]** [Block 10] <- [Block 11] <- [Block 12]**
 +
 +La sécurisation de la chaîne de blocs : le traitement de candidats multiples[Bloc 11] <-
 +
 +Examinez le scénario suivant (les flèches indiquent un bloc enfant se référant à son bloc parent) :
 +
 +[Bloc 10] <- [Bloc 11]
 +
 +Le dernier bloc créé est le bloc 11. À partir de ce bloc 11, un mineur peut commencer à travailler sur la création d'un candidat au bloc 12. Pour ce faire, le mineur rassemble les transactions dans son bloc qui ne sont pas confirmées, y rajoute le hash du bloc 11 et commence à vérifier, nonce après nonce, jusqu'à ce qu'il obtienne un résultat de hachage qui satisfasse aux conditions de la monnaie.
 +
 +Le Bloc 12 est créé ainsi et rajouté à la chaîne (si aucun autre mineur n'a trouvé une solution avant) :
 +
 +[Bloc 10] <- [Bloc 11] <- [Bloc 12]
 +
 +
  
 ===== 9 ===== ===== 9 =====
Ligne 164: Ligne 185:
  
 This chain that includes Block 14 is now the longest, and Block 14 refers back to Block 13B. Block 14 starts propagating throughout the network. Each node that receives it will understand that the longest chain available is now the one with Block 13B and Block 14, and will discard Block 13A as invalid. Therefore the block chain that includes Block 13B is now the official main chain.** This chain that includes Block 14 is now the longest, and Block 14 refers back to Block 13B. Block 14 starts propagating throughout the network. Each node that receives it will understand that the longest chain available is now the one with Block 13B and Block 14, and will discard Block 13A as invalid. Therefore the block chain that includes Block 13B is now the official main chain.**
 +
 +Il se trouve cependant que, à peu près en même temps, deux mineurs ont réussi à créer un candidat au bloc 13 qui satisfait aux conditions de la monnaie. Nous avons donc deux chaînes qui commencent à être diffusées sur le réseau. On appelle ceci un fork de la chaîne de blocs.
 +
 +[Bloc 10] <- [Bloc 11] <- [Bloc 12] <- [Bloc 13A]
 +
 +[Bloc 10] <- [Bloc 11] <- [Bloc 12] <- [Bloc 13B]
 +
 +Selon le bloc qui leur est parvenu en premier au travers du réseau, des mineurs essaieront de trouver un bloc enfant de soit Bloc 13A, soit Bloc 13B.
 +
 +Supposons que, très rapidement, un mineur réussit à trouver un bloc enfant du Bloc 13B alors qu'aucun bloc enfant n'a encore été trouvé pour 13A, il y a maintenant :
 +
 +[Bloc 10] <- [Bloc 11] <- [Bloc 12] <- [Bloc 13A]
 +
 +[Bloc 10] <- [Bloc 11] <- [Bloc 12] <- [Bloc 13B] <- [Bloc 14]
 +
 +Cette chaîne comprenant le Bloc 14 est maintenant la plus longue chaîne ; en outre, le Bloc 14 se réfère au Bloc 13B. Le Bloc 14 commence à se diffuser partout sur le réseau. Chaque nœud qui le reçoit comprendra que la chaîne la plus disponible est, à ce stade, celle contenant le Bloc 13B et le Bloc14 et se débarrassera du Bloc 13A suite à son invalidité. Ainsi, la chaîne de blocs qui contient le Bloc 13B est maintenant devenue la chaîne principale officielle. 
  
 ===== 10 ===== ===== 10 =====
Ligne 176: Ligne 213:
 • Once Block 15 starts being built, it will gather transactions. However, Transaction 2 cannot be included in the block, because it refers to Transaction A, which is already spent. Therefore the seller will have shipped a product for free.** • Once Block 15 starts being built, it will gather transactions. However, Transaction 2 cannot be included in the block, because it refers to Transaction A, which is already spent. Therefore the seller will have shipped a product for free.**
  
 +Toute transaction contenue dans le Bloc 13A, mais pas dans le Bloc 13B, reprendra sa place parmi l'ensemble de transactions non confirmées. Le Bloc 13A n'a pas vraiment intégré la chaîne, le mineur de ce bloc-là ne recevra pas de récompense (puisqu'il n'y a pas de transaction de récompense enregistrée dans la chaîne de blocs principale) ; le Bloc 13A devient donc ce qui s'appelle un bloc orphelin.
 +
 +Une faiblesse du système est ainsi mise en lumière : un attaquant qui voudrait dépenser son argent deux fois pourrait s'envoyer une somme d'argent via Transaction 1 (en se référant à la Transaction A) et, en même temps envoyer une somme d'argent à un vendeur de produit via Transaction 2 (en se référant également à la Transaction A, ce qui ferait qu'il dépense cet argent deux fois).
 +
 +Si la Transaction 2 est acceptée dans le Bloc 13A et est donc confirmée une fois, le vendeur pourrait envoyer le produit immédiatement. Si, au même moment, la Transaction A est acceptée dans le Bloc 13B, voici ce qui se passera :
 +* après un certain temps, la Transaction 2 sera remise avec les autres ordres non confirmés parce que le Bloc 13A est devenu orphelin ;
 +* toutefois, en même temps, la Transaction 1 est acceptée comme faisant partie de la chaîne de blocs principale. Pour cette raison, la Transaction A, à laquelle elle se réfère, est qualifiée de « Dépensée ».
 +* Une fois le Bloc 15 en construction, il rassemblera des transactions. La Transaction 2 ne peut pas y être incluse, car elle se réfère à la Transaction A, qui est déjà dépensée. Ainsi, le vendeur aura envoyé un produit gratuitement.
 ===== 11 ===== ===== 11 =====
  
Ligne 190: Ligne 235:
 In addition, it is extremely difficult to tamper with the block chain (thereby enabling double-spend attacks) because each block contains as part of its payload the hash of the previous block.** In addition, it is extremely difficult to tamper with the block chain (thereby enabling double-spend attacks) because each block contains as part of its payload the hash of the previous block.**
  
 +À cause de ce problème systémique, quand un vendeur accepte des bitcoin, il voudra attendre que les transactions soient confirmées plusieurs fois (sont présentes depuis plus longtemps dans la chaîne de blocs), pour s'assurer qu'il ne soit pas victime d'un tel scénario. 
 +
 +Chez Bitcoin, il faut une moyenne de 10 minutes pour résoudre un bloc (et la difficulté est ajustée pour que ce temps reste constant). On considère qu'attendre 6 blocs (6 confirmations) est une bonne façon d'assurer la sécurité, ce qui signifie qu'il faut une heure avant qu'une transaction soit entièrement validée. Cela est considéré (à juste titre) comme étant une des faiblesses de Bitcoin en tant que monnaie.
 +
 +D'autres monnaies alternatives ont choisi un temps de résolution de bloc plus court pour corriger le problème.
 +
 +Pourquoi la chaîne de blocs est-elle sécurisée ?
 +
 +Nous avons vu que des mécanismes existent pour s'assurer qu'il n'y a finalement qu'une seule version d'une chaîne de blocs diffusée sur le réseau, en assurant le respect de la politique de la chaîne la plus longue (en cas de fork, la chaîne qui génère le bloc suivant le plus rapidement est le vainqueur). 
 +
 +Qui plus est, il est extrêmement difficile de manipuler la chaîne de blocs (pour rendre des attaques de double dépense d'argent possible), parce que le hash du bloc précédent fait partie de la charge de chaque bloc.
 ===== 12 ===== ===== 12 =====
  
Ligne 205: Ligne 261:
  
 However, to do this, I need a lot of computing power. At least 50% of the total computing power in the network and more, as the origin point of my intended fork gets older. Currently, even the best super-computer in the world cannot match 50% of the network, so we are effectively safe. Anyway, with that kind of computing power, it would probably be more profitable just to mine many coins rather than try to subvert the system.** However, to do this, I need a lot of computing power. At least 50% of the total computing power in the network and more, as the origin point of my intended fork gets older. Currently, even the best super-computer in the world cannot match 50% of the network, so we are effectively safe. Anyway, with that kind of computing power, it would probably be more profitable just to mine many coins rather than try to subvert the system.**
 +
 +Regardez le scénario suivant :
 +
 +[Bloc 10] <- [Bloc 11] <- [Bloc 12] <- [Bloc 13] <- [Bloc 14]
 +
 +Supposons que je veuille modifier l'ordre officiel des transactions en faisant en sorte qu'une transaction qui figurait dans le Bloc 10 soit mise dans le Bloc 14, me permettant ainsi de dépenser l'argent deux fois. Je peux essayer de créer un fork au niveau du Bloc 10. Afin de créer ce fork, j'ai besoin de :
 +* créer une autre version du Bloc 10, Bloc 10B, qui contient les transactions voulues ainsi que le hash du Bloc 9 ;
 +* pour ce faire je dois très rapidement trouver un nonce qui rendra le hash de mon nouveau bloc conforme aux conditions de la monnaie (difficile) ;
 +* ensuite, je dois créer le Bloc 11B, avec le hash du Bloc 10B, en trouvant le nonce ;
 +* et ainsi de suite jusqu'à ce que je crée le Bloc 15B.
 +
 +SI j'ai réussi cette prouesse AVANT QUE le véritable Bloc 15 de la chaîne principale ne soit créé, alors mon nouveau fork deviendra la chaîne la plus longue et sera donc acceptée comme chaîne principale.
 +
 +Cependant, pour le faire, j'aurai besoin de beaucoup de puissance de calcul. Au moins 50 % de la puissance totale de calcul du réseau et davantage encore, lorsque le point d'origine du fork que je veux créer devient de plus en plus ancien. Actuellement, même le meilleur superordinateur au monde ne peut pas atteindre une puissance comme celle de 50 % du réseau ; ainsi, nous sommes vraiment à l'abri de telles attaques. De toutes les façons, si on avait une telle puissance de calcul, on pourrait sans doute faire plus d'argent avec le minage de beaucoup de monnaie virtuelle qu'avec des essais de contourner le système.
  
 ===== 13 ===== ===== 13 =====
Ligne 219: Ligne 289:
 Note that cryptocurrencies usually have a target time for blocks. This target time for blocks is 10 minutes for Bitcoin, 1 minute for Primecoin. An interesting corollary is that the more computing power spent across the network mining a given coin, the faster the blocks will be solved, and thus it becomes more and more difficult to keep the block solving time fixed!** Note that cryptocurrencies usually have a target time for blocks. This target time for blocks is 10 minutes for Bitcoin, 1 minute for Primecoin. An interesting corollary is that the more computing power spent across the network mining a given coin, the faster the blocks will be solved, and thus it becomes more and more difficult to keep the block solving time fixed!**
  
 +Les paramètres de la Monnaie virtuelle
 +
 +En fait, une monnaie virtuelle n'a que quelques paramètres principaux :
 +* la difficulté du bloc, qui détermine, en moyenne, le temps qu'il faudrait pour que le réseau résolve/mine un bloc (le temps de résolution d'un bloc) ;
 +* l’intervalle après lequel la difficulté du bloc sera ajustée. Cela est nécessaire parce que, au fur et à mesure que le réseau croît, la puissance de calcul croît. Ainsi, si la difficulté reste stable, le temps nécessaire pour le minage d'un bloc n'atteindra plus le temps voulu. Pour ce qui concerne Bitcoin, l'intervalle est de 2 016 blocs ;
 +* la récompense pour le minage d'un bloc ;
 +* l'intervalle après lequel la récompense est rajustée (pour s'assurer que l'offre de monnaie est limitée). Pour ce qui concerne Bitcoin, la récompense est rajustée tous les 210 000 blocs ;
 +* la méthode requise pour le minage d'un bloc ; habituellement précisée en tant qu'algorithme de hachage utilisé.
 +
 +Notez bien que les monnaies virtuelles ont généralement un temps cible pour les blocs. Ce temps cible pour les blocs est de 10 minutes pour Bitcoin et 1 minute pour Primecoin. Un corollaire intéressant est que plus il y a de puissance de calcul sur le réseau, dépensée pour le minage d'une monnaie donnée, plus vite les blocs seront résolus. Ainsi il devient de plus en plus difficile de garder stable le temps de résolution d'un bloc !
 ===== 14 ===== ===== 14 =====
  
Ligne 245: Ligne 325:
  
 A final 500 DOGE will be up for grabs next month, in the final part of this series, Cryptocurrency Part 3.** A final 500 DOGE will be up for grabs next month, in the final part of this series, Cryptocurrency Part 3.**
 +
 +La plupart des monnaies virtuelles sont similaires et utilisent deux algorithmes de hachage principaux :
 +* SHA256.
 +* Scrypt (pour lequel un paquet Debian existe).
 +
 +D'autres monnaies ont des méthodes plus originales. Par exemple, Quarks utilise de multiples algorithmes de hachage, l'un par-dessus l'autre, et Primecoin se sert de la difficulté de trouver des chaînes de nombres primes de certain types et dont l'origine mathématique satisfait à certains critères, tels qu'être un multiple du hash du bloc, comme l'exigence relative à la preuve du travail exécuté.
 +
 +Dans la prochaine section, nous verrons en détail l'impact qu'a ce choix sur le minage.
 +
 +Principales sources :
 +• le document de bitcoin : http://bitcoin.org/bitcoin.pdf ;
 +• l'excellente, mais très rapide, explication de ce qui se passe sous le capot de bitcoin (cette explication suit à peu près la même structure, mais passe plus de temps sur certains points et moins sur d'autres): http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html ;
 +• le document de Primecoin : http://primecoin.org/static/primecoin-paper.pdf ;
 +• une explication du document : http://www.reddit.com/r/primecoin/comments/1rp5vx/could_someone_explain_in_detail_the_algorithm/.
 +
 +CONCOURS
 +
 +Gagnez 500 Dogecoin (DOGE) en répondant à la question suivante :
 +Il y a deux principaux algorithmes de hachage : SHA256 et _ _ _ _ _ _ _ ?
 +(Indice : la réponse est dans l'article.)
 +
 +Envoyez votre réponse à : ronnie@fullcirclemagazine.org avant le vendredi 18 avril. Le gagnant sera avisé par courriel et recevra une adresse de portefeuille Dogecoin valide.
 +
 +Un dernier lot de 500 DOGE sera à gagner le mois prochain, dans la partie finale de cette série, Monnaie virtuelle, Partie 3.
 +
  
  
issue83/qu_est-ce_que_c_est.1409241242.txt.gz · Dernière modification : 2014/08/28 17:54 de auntiee