Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue83:qu_est-ce_que_c_est [2014/09/02 19:56] – andre_domenech | issue83:qu_est-ce_que_c_est [2014/09/11 21:30] (Version actuelle) – [12] fcm_-_ekel |
---|
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 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 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é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 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. |
| |
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. | 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. |
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 : |
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é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. | 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. |
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 attendra que les transactions sont 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. | À 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. | 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. |
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 : | 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 ; | * 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 blonc conforme aux conditions de la monnaie (difficile) ; | * 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 ; | * 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éee le Bloc 15B. | * 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. | 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. | 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 ===== |
En fait, une monnaie virtuelle n'a que quelques paramètres principaux : | 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) ; | * 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 laquelle ladifficulté du bloc sera ajusté. 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 2016 blocs ; | * 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 ; | * la récompense pour le minage d'un bloc ; |
* l'intervalle après laquelle 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 ; | * 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 que l'algorithme de hachage utilisé. | * 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 cibles 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 ! | 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 ===== |
| |
| |
La plupart des monnaies virtuelles sont similaires et utilisent deux algorithmes de hachage principaux : | La plupart des monnaies virtuelles sont similaires et utilisent deux algorithmes de hachage principaux : |
* SHA256 | * SHA256. |
* Scrypt (pour lequel un paquet Debian existe) | * 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 à certaines critères, telles qu'être un multiple du hash du bloc, comme l'exigence relative à la preuve du travail exécuté. | 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. | Dans la prochaine section, nous verrons en détail l'impact qu'a ce choix sur le minage. |
| |
Principales sources : | Principales sources : |
• le document de bitcoin : http://bitcoin.org/bitcoin.pdf | • 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 | • 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 | • 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/ | • une explication du document : http://www.reddit.com/r/primecoin/comments/1rp5vx/could_someone_explain_in_detail_the_algorithm/. |
| |
CONCOURS | CONCOURS |
Gagnez 500 Dogecoin (DOGE) en répondant à la question suivante : | Gagnez 500 Dogecoin (DOGE) en répondant à la question suivante : |
Il y a deux principaux algorithmes de hachage : SHA256 et _ _ _ _ _ _ _ ? | Il y a deux principaux algorithmes de hachage : SHA256 et _ _ _ _ _ _ _ ? |
(Indice : la réponse est dans l'article) | (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. | 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. |