https://opentruc.fr/w/index.php?title=Bitcoin/Article_de_Satoshi&feed=atom&action=historyBitcoin/Article de Satoshi - Historique des versions2024-03-28T20:11:51ZHistorique des versions pour cette page sur le wikiMediaWiki 1.28.0https://opentruc.fr/w/index.php?title=Bitcoin/Article_de_Satoshi&diff=10372&oldid=prevAdmin : /* 6. Prime de résultat */2017-12-13T18:33:34Z<p><span dir="auto"><span class="autocomment">6. Prime de résultat</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='fr'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Version précédente</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Version du 13 décembre 2017 à 18:33</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l149" >Ligne 149 :</td>
<td colspan="2" class="diff-lineno">Ligne 149 :</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>pour jouer dans les règles, ces dernières le favorisant en lui offrant plus de nouvelles pièces que tout le reste du</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>pour jouer dans les règles, ces dernières le favorisant en lui offrant plus de nouvelles pièces que tout le reste du</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>monde réuni, que de saper le système et la validité de sa propre fortune.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>monde réuni, que de saper le système et la validité de sa propre fortune.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>7.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Demande d’espace disque</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">==</ins>7. Demande d’espace disque<ins class="diffchange diffchange-inline">==</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Une fois que la dernière transaction d’une pièce est enfouie en dessous de suffisamment de blocs, les</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Une fois que la dernière transaction d’une pièce est enfouie en dessous de suffisamment de blocs, les</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>transactions de dépenses la précédant peuvent être jetées pour sauver de l’espace disque. Pour faciliter cela</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>transactions de dépenses la précédant peuvent être jetées pour sauver de l’espace disque. Pour faciliter cela</div></td></tr>
</table>Adminhttps://opentruc.fr/w/index.php?title=Bitcoin/Article_de_Satoshi&diff=10371&oldid=prevAdmin : /* 3. Serveur d’horodatage */2017-12-13T18:28:51Z<p><span dir="auto"><span class="autocomment">3. Serveur d’horodatage</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='fr'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Version précédente</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Version du 13 décembre 2017 à 18:28</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l83" >Ligne 83 :</td>
<td colspan="2" class="diff-lineno">Ligne 83 :</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>2précédente dans son empreinte, formant une chaîne, avec chaque nouvelle horodate renforçant celles la</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>2précédente dans son empreinte, formant une chaîne, avec chaque nouvelle horodate renforçant celles la</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>précédant.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>précédant.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Hachage</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Hachage</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">schéma</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Bloc</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Bloc</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">==</ins>4. Preuve-de-travail<ins class="diffchange diffchange-inline">==</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Item</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>4.</div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">...</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Item</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Item</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">...</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Item</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Preuve-de-travail</div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Pour implémenter un serveur d’horodatage distribué en pair-à-pair, nous avons besoin d’une preuve-de-travail</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Pour implémenter un serveur d’horodatage distribué en pair-à-pair, nous avons besoin d’une preuve-de-travail</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>similaire à celle d’Adam Back “Hashcash” [6], plutôt que d’un journal ou de publication sur un forum Internet.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>similaire à celle d’Adam Back “Hashcash” [6], plutôt que d’un journal ou de publication sur un forum Internet.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l105" >Ligne 105 :</td>
<td colspan="2" class="diff-lineno">Ligne 97 :</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>sans refaire le travail. Étant donné que les blocs sont chaînés après le bloc considéré, le travail pour changer le</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>sans refaire le travail. Étant donné que les blocs sont chaînés après le bloc considéré, le travail pour changer le</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>bloc devrait inclure de refaire tous les blocs postérieurs.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>bloc devrait inclure de refaire tous les blocs postérieurs.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Bloc</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Bloc</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">schéma</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Empreinte</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Précédente</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Tx</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Tx</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Valeur</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Empreinte</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Précédente</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">ajustement</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">...</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Tx</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Tx</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Valeur</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">ajustement</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">...</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>La preuve-de-travail résout aussi le problème de la définition du processus de décision majoritaire. Si la</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>La preuve-de-travail résout aussi le problème de la définition du processus de décision majoritaire. Si la</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>majorité était basée sur une-adresse-IP-un-vote, elle pourrait être fraudée par quiconque capable d’allouer</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>majorité était basée sur une-adresse-IP-un-vote, elle pourrait être fraudée par quiconque capable d’allouer</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l133" >Ligne 133 :</td>
<td colspan="2" class="diff-lineno">Ligne 112 :</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>temps, la difficulté de la preuve-de-travail est déterminée par une moyenne mobile ciblant un nombre moyen</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>temps, la difficulté de la preuve-de-travail est déterminée par une moyenne mobile ciblant un nombre moyen</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>de blocs calculés par heure. S’ils sont engendrés trop rapidement, la difficulté augmente.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>de blocs calculés par heure. S’ils sont engendrés trop rapidement, la difficulté augmente.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>5.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Réseau</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">==</ins>5. Réseau<ins class="diffchange diffchange-inline">==</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Les étapes pour faire fonctionner le réseau sont comme suit :</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Les étapes pour faire fonctionner le réseau sont comme suit :</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>1) Les nouvelles transactions sont diffusées à tous les nœuds.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>1) Les nouvelles transactions sont diffusées à tous les nœuds.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l153" >Ligne 153 :</td>
<td colspan="2" class="diff-lineno">Ligne 132 :</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>blocs sont aussi tolérantes aux pertes de messages. Si un nœud ne reçoit pas un bloc, il le demandera quand il</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>blocs sont aussi tolérantes aux pertes de messages. Si un nœud ne reçoit pas un bloc, il le demandera quand il</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>recevra le prochain bloc et réalisera qu’il lui en manque un.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>recevra le prochain bloc et réalisera qu’il lui en manque un.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>6.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Prime de résultat</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">==</ins>6. Prime de résultat<ins class="diffchange diffchange-inline">==</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Par convention, la première transaction dans un bloc est une transaction spéciale qui commence par une</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Par convention, la première transaction dans un bloc est une transaction spéciale qui commence par une</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>nouvelle pièce détenue par le créateur du bloc. Cela ajoute une incitation pour les nœuds à supporter le réseau,</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>nouvelle pièce détenue par le créateur du bloc. Cela ajoute une incitation pour les nœuds à supporter le réseau,</div></td></tr>
</table>Adminhttps://opentruc.fr/w/index.php?title=Bitcoin/Article_de_Satoshi&diff=10370&oldid=prevAdmin : Page créée avec « Bitcoin : un système de paiement électronique pair-à-pair Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Traduction française de bitcoin.org/bitcoin.pdf par Arna... »2017-12-13T18:19:38Z<p>Page créée avec « Bitcoin : un système de paiement électronique pair-à-pair Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Traduction française de bitcoin.org/bitcoin.pdf par Arna... »</p>
<p><b>Nouvelle page</b></p><div><br />
Bitcoin : un système de paiement électronique pair-à-pair<br />
<br />
Satoshi Nakamoto<br />
satoshin@gmx.com<br />
www.bitcoin.org<br />
<br />
Traduction française de bitcoin.org/bitcoin.pdf par Arnaud-François Fausse<br />
@AFFAUSSE<br />
<br />
==Résumé ==<br />
Une version d'un système de paiement purement pair-à-pair permettrait des<br />
paiements en ligne directs d'une partie à l'autre sans passer par une institution<br />
financière. Les signatures digitales fournissent une partie de la solution, mais les<br />
principaux bénéfices sont perdus si un tiers de confiance est encore nécessaire pour<br />
éviter les doubles-dépenses. Nous proposons une solution au problème de la double-<br />
dépense en utilisant un réseau pair-à-pair. Le réseau horodate les transactions en les<br />
hachant en une chaîne continue de preuves-de-travail, formant un enregistrement de<br />
données qui ne peut pas être changé sans avoir à refaire la preuve-de-travail. La chaîne<br />
la plus longue non seulement sert de preuve par témoignage de la séquence des<br />
événements, mais prouve qu'elle est issue du plus grand groupe de puissance CPU.<br />
Aussi longtemps que la majorité de la puissance CPU est contrôlée par des nœuds non<br />
participant à une attaque du réseau, ils engendreront la plus longue chaîne et<br />
surpasseront les attaquants. Le réseau en lui-même exige une structure minimale. Les<br />
messages sont diffusés au mieux et les nœuds peuvent quitter et rejoindre le réseau à<br />
leur gré, en acceptant la plus longue chaîne de preuve-de-travail créée en leur absence.<br />
<br />
<br />
==1. Introduction==<br />
Le commerce sur Internet en est venu à reposer presque exclusivement sur les institutions financières agissant<br />
comme tiers de confiance afin de traiter les paiements électroniques. Alors que le système fonctionne<br />
suffisamment bien pour la plupart des transactions, il souffre de faiblesses inhérentes au modèle de confiance.<br />
Les transactions totalement irréversibles ne sont pas réellement possibles, car les institutions financières ne<br />
peuvent pas éviter les conflits de médiation. La coût de la médiation augmente les coûts de transaction, en<br />
limitant le montant minimum de la transaction et coupant ainsi la possibilité de transactions courantes à petit<br />
montant. De plus, il y a un coût plus important dans la perte de la capacité à faire des paiements irréversibles<br />
pour les services irréversibles. Avec la possibilité de réversibilité, la nécessité de la confiance s'étend. Les<br />
commerçants doivent se méfier de leurs clients, et les ennuyer en leur demandant plus d’information dont ils<br />
n’auraient pas besoin en procédant autrement. Un certain pourcentage de fraude est accepté comme inévitable.<br />
Ces coûts et incertitudes dans les paiements peuvent être évités par la présence et l’argent physiques, mais<br />
aucun mécanisme n’existe pour faire des paiements à travers un canal de communication sans un tiers de<br />
confiance.<br />
Le besoin est d’avoir un système de paiement électronique basé sur une preuve cryptographique au lieu de la<br />
confiance, permettant à deux parties volontaires de réaliser entre elles des transactions sans le besoin d’un tiers<br />
de confiance. Des transactions calculatoirement incommodes à inverser protégeraient les vendeurs de la fraude,<br />
et des mécanismes habituels de dépôt pourraient être aisément implémentés pour protéger les acheteurs. Dans<br />
ce papier, nous proposons une solution au problème de la double-dépense en utilisant un serveur d’horodatage<br />
distribué pair-à-pair afin d’engendrer calculatoirement la preuve de la chronologie des transactions. Le système<br />
1est sûr tant que les nœuds honnêtes contrôlent collectivement plus de puissance CPU que celle de chacun des<br />
groupes de nœuds d’attaquants coopérants.<br />
<br />
<br />
==2. Transactions==<br />
Nous définissons une pièce (de monnaie) électronique comme une chaîne de signatures électroniques. Chaque<br />
propriétaire transfère la pièce au suivant en signant le hachage de la transaction précédente, de la clef publique<br />
du prochain propriétaire et en ajoutant tout cela à la fin de la pièce. Un bénéficiaire peut vérifier les signatures<br />
pour vérifier la chaîne de propriété.<br />
<br />
schéma<br />
<br />
Le problème évidemment est que le bénéficiaire ne peut pas vérifier qu’un des propriétaires n’a pas dépensé<br />
deux fois la même pièce. Une solution commune est d’introduire une autorité de confiance, ou émetteur de<br />
monnaie, qui vérifie chaque transaction concernant la double-dépense. Après chaque transaction, la pièce doit<br />
être renvoyée à l’émetteur de monnaie pour émettre une nouvelle pièce, et seules les pièces émises par<br />
l’émetteur sont réputées non dépensées deux fois. Le problème avec cette solution est que le destin de tout le<br />
système monétaire dépend de la société qui émet la monnaie, avec chaque transaction devant passer par elle,<br />
tout comme une banque.<br />
Nous avons besoin d’un moyen pour le bénéficiaire de savoir que les précédents propriétaires n’ont pas signé<br />
de transactions précédentes. Pour nos fins, la transaction effectuée le plus tôt est celle qui compte, ainsi nous<br />
pouvons ignorer les tentatives suivantes de double-dépense. Le seul moyen pour confirmer l’absence d’une<br />
transaction est d’être au courant de toutes les transactions. Dans le modèle d’un émetteur central de monnaie,<br />
ce dernier était au courant de toutes les transactions et décidait qui arrivait en premier. Pour accomplir pareille<br />
tâche sans un tiers de confiance, les transactions doivent être annoncées publiquement [1], et nous avons besoin<br />
d’un système permettant aux participants de s’accorder sur une histoire unique de l’ordre dans lequel elles ont<br />
été reçues. Le bénéficiaire a besoin de la preuve qu’au moment de chaque transaction, la majorité des nœuds<br />
était d’accord sur le fait qu’elle était la première reçue.<br />
<br />
==3. Serveur d’horodatage==<br />
La solution que nous proposons commence avec un serveur d’horodatage. Un serveur d’horodatage fonctionne<br />
en prenant l’empreinte numérique d’un bloc d’items à horodater et à la publier largement, tel que dans un<br />
journal ou un forum sur Internet [2-5]. L’horodate prouve que les données ont dû exister à l’instant de<br />
l’horodatage, évidemment, pour pouvoir obtenir leur empreinte numérique. Chaque horodate inclut l’horodate<br />
2précédente dans son empreinte, formant une chaîne, avec chaque nouvelle horodate renforçant celles la<br />
précédant.<br />
Hachage<br />
Hachage<br />
Bloc<br />
Bloc<br />
Item<br />
4.<br />
...<br />
Item<br />
Item<br />
...<br />
Item<br />
Preuve-de-travail<br />
Pour implémenter un serveur d’horodatage distribué en pair-à-pair, nous avons besoin d’une preuve-de-travail<br />
similaire à celle d’Adam Back “Hashcash” [6], plutôt que d’un journal ou de publication sur un forum Internet.<br />
La preuve-de-travail implique la recherche d’une valeur qui une fois hachée, tel qu’avec le SHA-256, donne<br />
une empreinte numérique commençant par un nombre donné de bits à zéro. Le travail moyen demandé est<br />
exponentiel en fonction du nombre de bits à zéro exigés et peut être vérifié en exécutant un hachage unique.<br />
Pour notre réseau d’horodatage, nous implémentons la preuve-de-travail par incrémentation d’une valeur<br />
d’ajustement dans le bloc jusqu’à trouver une valeur qui donne une empreinte avec le nombre de zéros requis.<br />
Une fois que la charge CPU a été dépensée pour satisfaire la preuve-de-travail, le bloc ne peut plus être changé<br />
sans refaire le travail. Étant donné que les blocs sont chaînés après le bloc considéré, le travail pour changer le<br />
bloc devrait inclure de refaire tous les blocs postérieurs.<br />
Bloc<br />
Bloc<br />
Empreinte<br />
Précédente<br />
Tx<br />
Tx<br />
Valeur<br />
Empreinte<br />
Précédente<br />
ajustement<br />
...<br />
Tx<br />
Tx<br />
Valeur<br />
ajustement<br />
...<br />
La preuve-de-travail résout aussi le problème de la définition du processus de décision majoritaire. Si la<br />
majorité était basée sur une-adresse-IP-un-vote, elle pourrait être fraudée par quiconque capable d’allouer<br />
beaucoup d’IPs. La preuve-de-travail est par essence une-CPU-un-vote. La décision majoritaire est représentée<br />
par la chaîne la plus longue, qui a la plus grande preuve-de-travail investie. Si une majorité de la puissance<br />
CPU est contrôlée par des nœuds honnêtes, la chaîne honnête grandira la plus vite et dépassera toutes autres<br />
chaînes en compétition. Pour modifier un bloc passé, un attaquant aurait à refaire la preuve-de-travail du bloc<br />
et de tous les blocs après lui, et à ce moment là rattraper et surpasser le travail des nœuds honnêtes. Nous<br />
montrerons plus tard que la probabilité de rattrapage d’un attaquant plus lent diminue avec l’ajout des blocs<br />
subséquents.<br />
Pour compenser l’augmentation de la vitesse du matériel et modifier l’intérêt de l’usage des nœuds au fil du<br />
temps, la difficulté de la preuve-de-travail est déterminée par une moyenne mobile ciblant un nombre moyen<br />
de blocs calculés par heure. S’ils sont engendrés trop rapidement, la difficulté augmente.<br />
5.<br />
Réseau<br />
Les étapes pour faire fonctionner le réseau sont comme suit :<br />
1) Les nouvelles transactions sont diffusées à tous les nœuds.<br />
2) Chaque nœud rassemble les nouvelles transactions dans un bloc.<br />
3) Chaque nœud travaille pour trouver une preuve-de-travail difficile pour son bloc.<br />
4) Quand un nœud trouve une preuve-de-travail, il diffuse le bloc à tous les nœuds.<br />
5) Les nœuds acceptent le bloc seulement si toutes les transactions sont valides et pas déjà dépensées.<br />
36) Les nœuds expriment leur acceptation du bloc en travaillant à créer le prochain bloc de la chaîne, en<br />
utilisant l’empreinte numérique du bloc accepté comme l’empreinte précédente.<br />
Les nœuds considèrent toujours la chaîne la plus longue comme la chaîne valide et continuent à travailler pour<br />
l’étendre. Si deux nœuds diffusent deux versions différentes du prochain bloc simultanément, les autres nœuds<br />
peuvent recevoir l’une ou l’autre en premier. Dans ce cas, ils travaillent sur la première qu’ils ont reçue, mais<br />
sauvent l’autre branche au cas où elle deviendrait plus longue. Le lien sera rompu quand la prochaine preuve-<br />
de-travail est trouvée et une branche devient plus longue ; les nœuds qui étaient en train de travailler sur les<br />
autres branches commuteront alors sur la plus longue.<br />
Les diffusions des nouvelles transactions n’ont pas besoin d’atteindre nécessairement tous les nœuds. Tant<br />
qu’elles atteignent beaucoup de nœuds, elles seront intégrées dans un bloc avant longtemps. Les diffusions de<br />
blocs sont aussi tolérantes aux pertes de messages. Si un nœud ne reçoit pas un bloc, il le demandera quand il<br />
recevra le prochain bloc et réalisera qu’il lui en manque un.<br />
6.<br />
Prime de résultat<br />
Par convention, la première transaction dans un bloc est une transaction spéciale qui commence par une<br />
nouvelle pièce détenue par le créateur du bloc. Cela ajoute une incitation pour les nœuds à supporter le réseau,<br />
et fournit un moyen initial de mettre des pièces en circulation puisqu’il n’y a pas d’autorité centrale d’émission<br />
de monnaie pour le faire. L’ajout stable d’un montant constant de nouvelles pièces est analogue aux chercheurs<br />
d’or dépensant des ressources pour ajouter de l’or en circulation. Dans notre cas, il s’agit de temps CPU et<br />
d’électricité qui sont dépensés.<br />
La prime de résultat peut aussi être financée par des frais de transaction. Si la valeur sortie d'une transaction est<br />
inférieure à sa valeur d'entrée, la différence constitue les frais de transaction qui sont ajoutés à la prime de<br />
résultat du bloc contenant la transaction. Une fois mis circulation un nombre prédéterminé de pièces, la prime<br />
de résultat peut se convertir totalement en frais de transaction et être totalement non inflationniste.<br />
La prime de résultat peut aider à encourager les nœuds à rester honnêtes. Si un attaquant cupide était capable<br />
de réunir plus de puissance CPU que les nœuds honnêtes, il aurait à choisir entre escroquer les gens en<br />
récupérant frauduleusement ses paiements, ou, engendrer des nouvelles pièces. Il devrait trouver plus profitable<br />
pour jouer dans les règles, ces dernières le favorisant en lui offrant plus de nouvelles pièces que tout le reste du<br />
monde réuni, que de saper le système et la validité de sa propre fortune.<br />
7.<br />
Demande d’espace disque<br />
Une fois que la dernière transaction d’une pièce est enfouie en dessous de suffisamment de blocs, les<br />
transactions de dépenses la précédant peuvent être jetées pour sauver de l’espace disque. Pour faciliter cela<br />
sans casser l’empreinte numérique du bloc, les transactions sont hachées dans un arbre de Merkel [7][2][5],<br />
avec seulement la racine incluse dans l’empreinte numérique du bloc. Les anciens blocs peuvent alors être<br />
compactés par rognage des branches de l’arbre. Les empreintes intérieures de l’arbre n’ont pas besoin d’être<br />
stockées.<br />
4Bloc<br />
Bloc<br />
Entête de bloc (empreinte de bloc)<br />
Entête de bloc (empreinte de bloc)<br />
Valeur<br />
d'ajustement<br />
Empreinte<br />
précédente<br />
Valeur<br />
d'ajustement<br />
Empreinte<br />
précédente<br />
Empreinte<br />
Racine<br />
Empreinte<br />
Racine<br />
E mpreinte E mpreinte E mpreinte E mpreinte<br />
01 23 01 23<br />
E mpreinte E mpreinte E mpreinte E mpreinte E mpreinte E mpreinte<br />
0 1 2 3 2 3<br />
Tx0 Tx1 Tx2 Tx3<br />
Tx3<br />
Transactions hachées dans un arbre de Merkel<br />
Après rognage de Tx0-2 du Bloc<br />
Un entête de bloc sans transaction devrait être au environ de 80 octets. Si nous supposons les blocs engendrés<br />
toutes les dix minutes, 80 octets * 6 * 24 * 365 = 4,2 MOctets par an. Avec les ordinateurs typiquement vendus<br />
avec 2 GOctets de RAM en 2008, et la loi de Moore prédisant une croissance courante de 1,2 GOctets par an,<br />
le stockage ne devrait pas être un problème même si les entêtes de blocs doivent être gardés en mémoire.<br />
8.<br />
Vérification de paiement simplifiée<br />
Il est possible de vérifier des paiements sans faire fonctionner un nœud complet du réseau. Un utilisateur a<br />
seulement besoin de garder une copie des entêtes de bloc de la plus longue chaîne assurée par la preuve-de-<br />
travail, qu’il peut obtenir en interrogeant les nœuds du réseau jusqu’à ce qu’il soit convaincu qu’il a la plus<br />
longue chaîne et obtienne la branche de Merkel liant la transaction au bloc l’horodatant. Il ne peut pas vérifier<br />
la transaction pour lui-même, mais en la liant à une place dans la chaîne, il peut voir que le réseau l’a acceptée,<br />
et les blocs ajoutés après le confirment.<br />
Chaîne à la plus grande preuve-de-travail<br />
Entête de bloc<br />
Empreinte<br />
précédente<br />
Entête de bloc<br />
Valeur<br />
d'ajustement<br />
Entête de bloc<br />
Valeur<br />
d'ajustement<br />
Empreinte<br />
précédente<br />
Empreinte<br />
Racine<br />
Empreinte<br />
précédente<br />
Empreinte<br />
Racine<br />
Empreinte<br />
Racine<br />
E mpreinte E mpreinte<br />
01 23<br />
E mpreinte E mpreinte<br />
2 3<br />
Tx3<br />
5<br />
Valeur<br />
d'ajustementEn tant que telle, la vérification est fiable tant que les nœuds honnêtes contrôlent le réseau, mais est plus<br />
vulnérable si le réseau est écrasé par la puissance d’un attaquant. Tant que les nœuds peuvent vérifier les<br />
transactions pour eux-mêmes, la méthode de vérification simplifiée peut être bernée par les transactions<br />
fabriquées d’un attaquant aussi longtemps que l’attaquant continue à surpasser le réseau. Une stratégie pour se<br />
protéger contre cela serait d’accepter des alertes des nœuds du réseau qui détectent un bloc invalide,<br />
provoquant le téléchargement du bloc complet et des transactions suspicieuses par le logiciel utilisateur pour<br />
confirmer la divergence. Les entreprises qui reçoivent fréquemment des paiements voudront probablement<br />
faire fonctionner leurs propres nœuds pour une sécurité plus indépendante et une vérification plus rapide.<br />
9.<br />
Combinaison et séparation des valeurs<br />
Bien qu’il soit possible de manipuler les pièces individuellement, il serait peu commode de faire une<br />
transaction séparée pour chaque centime dans un transfert. Pour autoriser les valeurs à être scindées ou<br />
combinées, les transactions contiennent des entrées et sorties multiples. Normalement il y aura soit une entrée<br />
unique provenant d’une plus grosse et précédente transaction ou plusieurs entrées combinant des plus petits<br />
montants et au moins deux sorties : une pour le paiement, et une pour le rendu de la monnaie, le cas échéant<br />
pour le payeur.<br />
Transaction<br />
In Out<br />
In ...<br />
...<br />
Il doit être noté que la dissémination, où une transaction dépend de plusieurs transactions, et que ces<br />
transactions dépendent de bien plus, n’est pas un problème ici. Il n’y a jamais le besoin d’une copie complète et<br />
autonome de l’histoire des transactions.<br />
10.<br />
Vie privée<br />
Le modèle bancaire traditionnel réalise un niveau de protection de la vie privée en limitant l’accès aux<br />
informations aux personnes concernées et au tiers de confiance. La nécessité d’annoncer toutes les transactions<br />
publiquement écarte cette méthode, mais la protection de la vie privée peut encore être assurée en rompant le<br />
flux d’information à un autre endroit : en gardant les clefs publiques anonymes. Le public peut voir que<br />
quelqu’un est entrain d’envoyer un montant à quelqu’un d’autre, mais sans information liant la transaction à<br />
quelqu’un. Ceci est similaire au niveau d’information remis par la bourse, où les heures et montants des<br />
échanges, le “carnet d’ordres”, est publique, mais sans dire qui sont les parties.<br />
Modèle traditionnel des données privées<br />
Identités<br />
Transactions<br />
Tiers<br />
de confiance<br />
Nouveau modèle des données privées<br />
Identités<br />
Transactions<br />
Public<br />
6<br />
Contrepartie<br />
PublicEn guise de pare-feu additionnel, une nouvelle paire de clefs pourrait être utilisée pour chaque transaction afin<br />
de les garder non liées à un propriétaire commun. Toutefois, la liaison est inévitable avec les transactions multi-<br />
entrées, qui révèlent nécessairement que leurs entrées étaient détenues par un même propriétaire. Le risque est<br />
que si le propriétaire d'une clef est révélé, les liaisons peuvent révéler d'autres transactions qui ont appartenu au<br />
même propriétaire.<br />
11.<br />
Calculs<br />
Nous considérons le scénario d’un attaquant essayant d’engendrer une chaîne alternative plus rapidement que<br />
la chaîne honnête. Même si une telle tâche est accomplie, elle n’ouvre pas la porte à tous les changements<br />
arbitraires, tels que créer de la monnaie ex nihilo ou prendre de l’argent qui n’a jamais appartenu à l’attaquant.<br />
Les nœuds ne vont pas accepter une transaction invalide comme paiement, et les nœuds honnêtes n'accepteront<br />
jamais un bloc les contenant. Un attaquant peut seulement essayer de changer une de ses propres transactions<br />
pour récupérer l’argent qu’il a dépensé récemment.<br />
La course entre la chaîne honnête et la chaîne de l’attaquant peut être caractérisée par un Chemin Aléatoire<br />
Binomial. L’événement de succès est que la chaîne honnête est étendue par un bloc, augmentant son avance de<br />
+1 et un événement d’échec est l’extension de la chaîne de l’attaquant réduisant l’écart de -1.<br />
La probabilité qu’un attaquant gagne en partant d’un retard initial est analogue au problème de la ruine du<br />
joueur. Supposez un joueur, disposant d’un crédit illimité qui part avec un retard et joue potentiellement un<br />
nombre infini d’essais pour essayer d’atteindre le point d’équilibre. Nous pouvons calculer la probabilité qu’il<br />
atteigne un jour l’équilibre, ou qu’un attaquant rattrape un jour la chaîne honnête, comme suit [8] :<br />
p = probabilité qu’un nœud honnête trouve le prochain bloc.<br />
q = probabilité que l’attaquant trouve le prochain bloc.<br />
q z = probabilité que l’attaquant rattrape un jour en partant avec z blocs de retard.<br />
q z =<br />
{<br />
1<br />
si p⩽q<br />
z<br />
q<br />
( ) si p>q<br />
p<br />
}<br />
Étant donnée notre hypothèse que p > q, la probabilité chute de manière exponentielle avec l’augmentation du<br />
nombre de blocs que l’attaquant doit rattraper. Avec la chance contre lui, s’il ne fait pas une avancée chanceuse<br />
dès le début, ses chances s’amenuisent, d’autant plus qu’il recule.<br />
Nous considérons maintenant combien de temps, le destinataire d’une transaction doit attendre pour être<br />
suffisamment certain que l’expéditeur ne peut plus la changer. Nous supposons que l’expéditeur est un<br />
attaquant qui veut faire croire pour un temps au destinataire qu’il l’a payé, puis, inverse la transaction pour se<br />
rembourser après un laps de temps. Le destinataire sera alerté lorsque cela arrivera, mais l’expéditeur espère<br />
qu’il sera trop tard.<br />
Le destinataire engendre une nouvelle paire de clefs et donne la clef publique à l’expéditeur juste avant la<br />
signature. Ceci évite que l’expéditeur prépare une chaîne de blocs à l’avance en travaillant dessus<br />
continuellement jusqu’à ce que la chance lui permette d’être suffisamment en avance, et d’exécuter alors la<br />
transaction. Une fois la transaction envoyée, l’expéditeur malhonnête commence à travailler en secret sur une<br />
chaîne parallèle contenant une version alternative de sa transaction.<br />
Le destinataire attend jusqu’à ce que la transaction soit ajoutée à un bloc et z blocs ont été liés après. Il ne<br />
connaît pas l’avancement exact que l’attaquant à réalisé, mais en supposant que les blocs honnêtes ont pris le<br />
temps moyen attendu par bloc, l’avancement potentiel de l’attaquant suivra une loi de Poisson avec la valeur<br />
attendue :<br />
7λ=z⋅<br />
q<br />
p<br />
Pour obtenir la probabilité que l’attaquant puisse encore rattraper, nous multiplions la densité de la loi de<br />
Poisson pour chaque montant d'avancement il pourrait avoir, par la probabilité qu’il ait rattrapé depuis ce<br />
point :<br />
∞<br />
∑<br />
k=0<br />
{<br />
(z − k)<br />
λ k ⋅e − λ ( q )<br />
si k⩽z<br />
⋅ p<br />
k !<br />
1<br />
si k >z<br />
}<br />
En réarrangeant pour éviter de sommer la série infinie de la distribution :<br />
z<br />
1− ∑<br />
k=0<br />
λ k ⋅e − λ<br />
q (z− k)<br />
⋅(1−( )<br />
)<br />
k !<br />
p<br />
En convertissant en code C :<br />
#include <math.h><br />
double AttackerSuccessProbability(double q, int z)<br />
{<br />
double p = 1.0 - q;<br />
double lambda = z * (q / p);<br />
double sum = 1.0;<br />
int i, k;<br />
for (k = 0; k <= z; k++)<br />
{<br />
double poisson = exp(-lambda);<br />
for (i = 1; i <= k; i++)<br />
poisson *= lambda / i;<br />
sum -= poisson * (1 - pow(q / p, z - k));<br />
}<br />
return sum;<br />
}<br />
En obtenant quelques résultats, nous pouvons voir que la probabilité chute de manière exponentielle avec z<br />
q=0,1<br />
z=0<br />
z=1<br />
z=2<br />
z=3<br />
z=4<br />
z=5<br />
z=6<br />
z=7<br />
z=8<br />
z=9<br />
z=10 p=1,0000000<br />
p=0,2045873<br />
p=0,0509779<br />
p=0,0131722<br />
p=0,0034552<br />
p=0,0009137<br />
p=0,0002428<br />
p=0,0000647<br />
p=0,0000173<br />
p=0,0000046<br />
p=0,0000012<br />
q=0,3<br />
z=0<br />
z=5<br />
z=10 p=1,0000000<br />
p=0,1773523<br />
p=0,0416605<br />
8z=15<br />
z=20<br />
z=25<br />
z=30<br />
z=35<br />
z=40<br />
z=45<br />
z=50<br />
p=0,0101008<br />
p=0,0024804<br />
p=0,0006132<br />
p=0,0001522<br />
p=0,0000379<br />
p=0,0000095<br />
p=0,0000024<br />
p=0,0000006<br />
En résolvant pour P inférieur à 0,1%...<br />
P < 0,001<br />
q=0,10<br />
q=0,15<br />
q=0,20<br />
q=0,25<br />
q=0,30<br />
q=0,35<br />
q=0,40<br />
q=0,45<br />
12.<br />
z=5<br />
z=8<br />
z=11<br />
z=15<br />
z=24<br />
z=41<br />
z=89<br />
z=340<br />
Conclusion<br />
Nous avons proposé un système de transactions électroniques se passant de confiance. Nous avons commencé<br />
avec un cadre de fonctionnement ordinaire de pièces de monnaie établies par des signatures électroniques, qui<br />
offre un contrôle puissant de la propriété, mais qui est incomplet sans moyen d’éviter la double-dépense. Pour<br />
résoudre cela, nous avons proposé un réseau pair-à-pair utilisant la preuve-de-travail pour enregistrer une<br />
histoire publique des transactions, qui devient rapidement impraticable à un attaquant de modifier si les nœuds<br />
honnêtes contrôlent la majorité de la puissance CPU. Le réseau est robuste dans sa simplicité non structurée.<br />
Les nœuds travaillent tous ensemble avec peu de coordination. Ils n’ont pas besoin d’être identifiés, puisque les<br />
messages ne sont pas routés vers des destinations particulières et ont seulement besoin d’être livrés au mieux.<br />
Les nœuds peuvent quitter et rejoindre le réseau à leur gré, en acceptant comme preuve la chaîne de preuve-de-<br />
travail de ce qui s’est passé en leur absence. Ils votent avec leur puissance CPU, exprimant leur acceptation des<br />
blocs valides en travaillant à les étendre et à rejeter les blocs invalides en refusant de travailler dessus. Toutes<br />
les règles et primes de résultat nécessaires peuvent être imposées avec ce mécanisme de consensus.<br />
References<br />
[1] W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.<br />
[2] H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust<br />
requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.<br />
[3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-<br />
111, 1991.<br />
[4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences<br />
II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.<br />
[5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer<br />
and Communications Security, pages 28-35, April 1997.<br />
[6] A. Back, "Hashcash - a denial of service counter-measure,"<br />
http://www.hashcash.org/papers/hashcash.pdf, 2002.<br />
[7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE<br />
Computer Society, pages 122-133, April 1980.<br />
9[8] W. Feller, "An introduction to probability theory and its applications," 1957.<br />
Notes de traduction<br />
Cette traduction est volontairement assez littérale afin d'éviter tout contre-sens. Les mots composés ont été<br />
traduits littéralement afin de conserver l'idée des concepts distinctifs. Cette traduction a été réalisée avec le plus<br />
grand soin mais ne prétend en aucun cas être un substitut parfait du document original en anglais de Satoshi<br />
Nakamoto bitcoin.org/bitcoin.pdf . Ce document doit donc être utilisé avec la prudence qui s'impose et il<br />
convient d'utiliser les documents originaux pour réaliser toute œuvre dérivée.<br />
Double-spending<br />
:<br />
Double-dépense<br />
Peer-to-peer<br />
:<br />
Pair-à-air<br />
Proof-of-work<br />
:<br />
Preuve-de-travail<br />
Best effort<br />
:<br />
Au mieux<br />
Coin<br />
:<br />
Pièce<br />
Time stamp<br />
:<br />
Horodate<br />
Time stamping<br />
:<br />
Horodatage<br />
Hash<br />
:<br />
Empreinte numérique, hachage<br />
IP<br />
:<br />
Internet Protocol (address) : Adresse Internet<br />
10</div>Admin