You are on page 1of 12

Bitcoin:SystmedeMonnaieElectroniqueenPairPair. SatoshiNakamoto satoshin@gmx.com www.bitcoin.org Documentoriginal:www.bitcoin.org/bitcoin.pdf Traducteurs:Benkebab,Grondilu,Mackila Forum:http://bitcointalk.org/?topic=2465.0 Rsum.

Un systme de monnaie lectronique entirement en pairpair permettrait d'effectuer des paiements en ligne directement d'un tiers un autre sans passer par une institution financire. Les signatures numriques offrent une telle solution, mais perdent leur intrt ds lors quun tiers de confiance est requis pour empcher le double paiement. Nous proposons une solution au problme du double paiement en utilisant un rseau pairpair. Le rseau horodate les transactions laide dune fonction de hachage qui les traduit en une chane continue de preuves de travail (des empreintes1 ), formant un enregistrement qui ne peut tre modifi sans reffectuer la preuve de travail. Laplus longuechane (dempreintes) sert non seulement de preuve du droulement des vnements constats, mais galementdepreuvequ'elleprovient du plus grand regroupementdepuissance decalcul.Aussilongtempsquelamajoritde la puissance de calcul (CPU) est contrle par des nuds qui ne cooprent pas pour attaquer le rseau, ils gnreront la pluslongue chane etsurpasserontlesattaquants. Le rseau en luimme ne requiert qu'une structure rduite. Les messages sont diffuss au mieux, et les nuds peuvent quitter ou rejoindre le rseau leur gr, en acceptant leur retour la chane de preuve de travail la plus longue comme preuve de cequis'estdroulpendantleurabsence. 1. Introduction

Le commerce sur Internet dpend aujourdhui presque exclusivement dinstitutions financires qui servent de tiers de confiance pour traiterles paiements lectroniques. Bien que ce systme fonctionne plutt bien pour la plupart des transactions, il cope toujours desfaiblessesinhrentessonmodlebassurlaconfiance.Lestransactions totalement irrversibles ny sont pas vraiment possibles, puisque les institutions financires doivent grer lamdiation de conflits. Lecotdecettemdiationaugmente les cots des transactions, limitant en pratique la taille minimale dune transaction et N.d.t.:encryptographie,uneempreinteestlersultatd'unefonctiondehachagequi permetd'identifierladonneinitiale"(cf.http://fr.wikipedia.org/wiki/Empreinte)
1

empchant la possibilit davoir des petites transactions peucoteuses.L'impossibilit davoir des paiements non rversibles pour des services non rversiblesengendreun cot encore plus important. Avec la possibilitdinverser les transactions, lebesoinde confiance augmente. Les marchands doiventsemfierdeleursclients,en lesharcelant pour obtenir plus dinformations que ncessaire. Une certaine part de fraudes est accepte comme invitables. Tous ces cots et incertitudes de paiement peuvent tre vits par lutilisation dune monnaie physique, mais aucun mcanisme nexiste pour raliser des paiements travers un systme de communication sans avoirrecoursun tiersdeconfiance. Ce dont nous avons besoin, cest dun systme de paiementlectronique bas sur des preuves cryptographiques au lieu dun modle bas sur la confiance, qui permettrait deux parties qui le souhaitent de raliser des transactions directement entre elles sans avoir recours un tiers de confiance. Les transactions qui sont informatiquement impossibles annuler protgeraient les vendeurs de fraudes ventuelles, et un systme de compte squestre pourrait facilement tre implment pour protger les acheteurs. Dans ce document, nous proposons une solution au problme de doubledpense en utilisant un serveur horodat distribu enpairpair pour gnrer des preuves informatiques de lordre chronologique des transactions.Le systme est scuris tant que des nuds honntes contrlent ensemble plus de puissancedecalculquungroupedenudsquicoopreraitpourraliseruneattaque. 2. Transactions

Nous dfinissons une pice lectroniquecommeunechanedesignaturesnumriques. Tout propritaire transfre cette pice un autre en signant numriquement une empreinte de la prcdente transaction ainsi que la cl publique du nouveau propritaire et les ajoute la fin de la pice. Tout bnficiaire peut examiner les signaturespourvrifierlachanedeproprit.

Le problme bien sr est que le bnficiaire ne peut vrifier quun des prcdents propritaire na pas fait de double dpense avec la pice. Une solution courante est dintroduire une autorit centrale de confiance, ou htel des Monnaies, qui vrifierait chaque transaction pour viter la double dpense. Aprs chaque transaction, les pices doivent tre retournes lhtel des Monnaies qui en cre une nouvelle, et seules lespices issues directement de lhtel des Monnaiessontconsidrescomme nayant pas tdpensesdeuxfois.Leproblmedecettesolutionestqueledestinde toutlesystmemontairereposesurlentreprisequidirigelhteldesMonnaies,etque chaquetransactiondoitpasserpareux,commeunebanque. Nous avons besoin dune mthode pour que le bnficiairepuisse savoir si les prcdents propritaires nont pas sign de transactions prcdentes. Pour cela, la transaction la plusanciennedoittrecellequicompte,nousnavonspasnoussoucier des tentatives ultrieures pour dpenser la pice en double. La seule manire de confirmer labsence dune transaction prcdente est dtre au courant de toutes les transactions. Dans le modle bas sur un htel des Monnaies, ce dernier tait au courant de toutes les transactions et dcidait donc laquelle arrivait en premier. Pour faire de mme sanstiercepartie,lestransactionsdoiventtreannoncespubliquement [1], et nous avons besoin dun systme pour que tous les participants se mettent daccord sur un seulhistoriquedelordredanslaquellelestransactionssontreues.Le bnficiaire a besoindunepreuvequchaquetempsdunetransaction,lamajoritdes noeudssoientdaccordsurlefaitquelletaitlapremirereue. 3. ServeurdHorodatage

La base de la solution propose estunserveurdhorodatage.Unserveurdhorodatage prend lempreinte dun ensemble dlments horodater etpubliecetteempreinte,la faon dune annonce dans un journal ou dun message sur un forum Usenet [25]. Lhorodatage prouve que les donnes ont exist, afin dtre prises en compte dans lempreinte. Chaque horodatage inclue lhorodatage prcdent dans son empreinte, formantunechanedontchaquenouvellmentvientconfirmerlesprcdents.

4.

Preuvedetravail

Pour implmenter un serveur dhorodatage distribu sur un rseau pairpair, il faut

utiliser un systmebas sur des preuves de travail tel que celui du systme Hashcash de Adam Back [6], plutt quun journal ou un message sur un forum Usenet. La preuve de travail ncessite de rechercher une valeur telle que son empreinte, calcule par exemple en utilisantSHA256,dbuteparuncertainnombredebits0.Letravailrequis pourestexponentiellementfonctiondunombredebits0exigs,etpeuttrevaliden effectuantunseulcalculdempreinte. Pour notre rseau dhorodatage, nous implmentons la preuve de travail en incrmentant une variabledansleblocjusqucequunevaleurdonnantuneempreinte ayant suffisamment de bits 0soit trouve.Une foisque leffort de calculncessaire lobtention de la preuve de travail a t effectu, il nest plus possible de modifier le bloc sans refaireceteffortdecalcul.Commedenouveauxblocssontchanssasuite, leffort de calcul ncessaire pour modifier un bloc inclue tout leffort de calcul ncessairepourmodifiertouslesblocssuivants.

La preuve de travail rsout le problme duchoix de la reprsentativit du vote. Si la majorit tait base sur des voix alloues par adresse IP, le vote pourrait tre perverti par quelquun capabledesoctroyerbeaucoupdadresses.Lapreuvede travail est essentiellement base sur la puissance de calcul (un processeur, une voix). La dcision de la majorit est reprsente par la chane la plus longue, celle qui a ncessit le plusdecalculsdepreuvedetravail.Silamajoritdelapuissancedecalcul du rseau est contrle par des noeuds honntes, la chane lgitime progresseleplus rapidement et distance les chanes concurrentes. Afin de modifier un ancien bloc, un attaquant devrait recalculer les preuves de travail du bloc modifi et de tous les blocs suivants, pour rattraper et dpasser le travail fournit par les noeuds honntes. Nous dmontrerons par la suite que la probabilit quun attaquant disposant de moins de puissance de calcul puisse rattraperdiminueexponentiellementchaquenouveaubloc ajout. Afin de compenser lamlioration delapuissancedecalculdumatrieletlintrt changeant de faire fonctionner des noeuds du rseau, la difficult de la preuve de travail est dtermine par une moyenne denombredeblocstrouverparheure.Si ces blocssontgnrstroprapidement,ladifficultaugmente. 5. Rseau

Lestapesmisesenoeuvrepourfairefonctionnerlerseausontlessuivantes:

1. 2. 3. 4.

Lesnouvellestransactionssontdiffusestouslesnoeuds. Chaquenoeudregroupelesnouvellestransactionsdansunbloc. Chaquenoeudtravaillelarsolutiondelapreuvedetravailsursonbloc. Quand un noeud trouve une preuve de travail, il diffuse ce bloc tous les noeuds. 5. Les noeuds nacceptent le bloc quesi toutes les transactions quil contient sont validesetnontpasdjtdpenses. 6. Les noeuds expriment lacceptation du bloc en travaillant sur un nouveau bloc dans la chane, ce nouveau bloc ayant comme empreinte prcdente celle du blocaccept. Les noeuds considrent toujours la chane la pluslongue comme tantlachane lgitime, et travaillent tendre celleci. Si deux noeuds diffusent deux versions diffrentes du bloc suivant simultanment, certains des noeuds vont recevoir lune ou lautre en premier. Dans cette situation, chacun travaille sur le bloc reu en premier, mais conserve lautre branche au cas ou celleci devienne la plus longue. Cette liaison sera rompue quand la preuve de travail suivante sera trouve et quune branche deviendra plus longue que lautre lesnoeudsquitravaillaientalorssurlautrebranche changerontpourlapluslongue. Les diffusions de nouvelles transactions nont pas besoin datteindre tous les noeuds. A partir du moment ou elles atteignent suffisamment de noeuds, elle se retrouveront dans un bloc en peu de temps. Les diffusions des blocs tolrent la perte de messages. Si un noeud ne reoit pasunbloc,illedemanderalorsdelarceptiondu blocsuivant,lorsquilraliseraquilluienmanqueun. 6. Incitation

Par convention, la premire transaction dun blocest une transaction spciale quicre une nouvelle pice appartenant au crateur du bloc. Cela incitelesnoeudsparticiper au rseau, et permet la distribution initiale de la monnaie, puisquil ny a pas dautorit centralise pour le faire. Cet ajout rgulier dune quantit constante de monnaie se rapproche de leffort fourni par des mineurs pour ajouter de lor en circulation. Dans notrecas,leffortsecomposedepuissancedecalculetdetemps. Lincitation peut aussi tre finance par desfrais de transaction. Si la valeur de sortie dune transactionestinfrieuresavaleurdentre,ladiffrenceestcorrespond aux frais de transaction, qui sont ajouts lavaleurdincitationdubloccontenantcette transaction. Une fois que la quantit prdtermine de monnaie sera entre en circulation, lincitation pourra passer sur unfinancement entirement bas sur les frais detransaction,etneprovoqueraucuneinflation. Lincitation peut encourager les noeuds rester honntes. Si un attaquant cupide a les moyens dobtenir plus de puissance decalcul que l'ensemble desnoeuds honntes, il peut choisir entre arnaquer les gens en rcuprant ses paiements, ou utiliser sa puissance pour gnrer de la nouvelle monnaie. Il doit trouver plus

intressant de jouer le jeu, ce qui le favorise avec plus de nouvelle monnaie que lensemble des autres noeuds, pluttque de saper le systmeetlavaleurdesa propre richesse. 7. conomiserl'EspaceDisque

Une fois que la dernire transaction concernant une pice est enfouie sous assez de blocs, les transactions passespeuvent tre supprimes pour conomiser de lespace disque. Pour permettre cela sans invalider lempreinte du bloc, les transactions sont rsumes dans un arbre de Merkle [7][2][5], dont seule la racine est comprise dans lempreinte du bloc. Les anciens blocs peuvent tre compresss en coupant des branchesdelarbre.Lesempreintesintermdiairesnontpasbesoindtrestockes.

Un entte de bloc sans transactionpse environ 80octets. Si nous supposons queles blocssontgnrstoutesles10minutes,celareprsente80octets*6*24*365 = 4.2Mo paran. En 2008,lessystmesinformatiquessontvendusavecenmoyenne2Go de capacit de mmoirevive,et,laLoideMooreprdisantunecroissance de1.2Gopar an, le stockage ne devrait donc pas poser de problme, mme si lensemble des enttesdeblocdevaittreconservsenmmoirevive. 8. VrificationdePaiementSimplifi

Il est possible de vrifier des paiements sans faire fonctionner un noeud complet du rseau. Un utilisateur na besoin de conserver quunecopie des enttes de la chane de preuves la plus longue, ce quil peut obtenir travers des requtes sur les noeuds du rseau jusqu ce quil soit convaincu davoir la plus longue chane, puis en rcuprant la branche de larbre de Merkle liantla transaction avec le bloc danslequel elle est horodate. Lutilisateur ne peutpas vrifier la transaction lui mme, mais en la liant sa place dans la chane, il peut voir quun noeud du rseau la accepte, et les blocssuivantsconfirmentdavantagelacceptationdurseau.

En tant que telle, la vrification est fiable tant que des noeuds honntes contrlent le rseau, mais est plus vulnrable si le rseau est compromis par unattaquantdisposant de plus de puissance de calcul. Bien que les noeuds du rseau puissent vrifier les transactions euxmmes, la mthode simplifie peut tre dupe par des transactions forges par lattaquant, tant que celuici a les moyens de dpasser la puissance de calcul du rseau. Une stratgie pour se protger dune telle attaque pourrait tre de recevoir des alertesdes noeuds du rseau lorsque ceux ci dtectent un bloc invalide, demandant au logiciel de l'utilisateur de tlcharger le bloc complet et les transactions suspectes pour vrifier lincohrence.Les entreprises qui reoivent frquemment des paiements auront certainement intrt faire fonctionner leur propres noeuds afin dobtenirunescuritplusindpendanteetdesvrificationsplusrapides. 9. CombinaisonetFractionnementdeValeur

Bien quil soit possible de traiter les pices sparment, il serait peu pratique de gnrer une transaction diffrente pour chaque centime lors dun transfert. Afin de permettre la combinaison et le fractionnement de la monnaie, les transactions comprennent de multiples entres et sorties. Normalement, il y a soit une seule entre depuis une grosse transaction prcdente, ou plusieurs entres combinant des montants plusfaibles,etaumaximumdeuxsorties:unepourlepaiement,etlautrepour renvoyerlechange,silexiste,lmetteur.

Il faut noter que la dispersion, lorsquune transaction dpend de plusieurs

transactions, et que ces transactions dpendent ellesmmes de beaucoup plus de transactions, nest pas un problme. Il ny a jamais besoin de rcuprer lhistorique completdunetransaction. 10. Confidentialit

Le systme bancaire classique garantit un certain niveau de confidentialit en limitant laccs aux informations aux parties concernes et au tiers de confiance. La ncessit de publier toutes lestransactionsexcluecettemthode,maislaconfidentialitpeuttre obtenueeninterrompantlacirculationdelinformationunautreniveau:engardantles cls publiques anonymes. Il est possible de voir que quelquun envoie un certain montant quelquun dautre, mais sans aucun lien avec des personnes. Ceci est similaire au niveau dinformation disponible sur les marchs dchange, ou la dateetle montant de chacun des changes, le cours, estpublique, mais sans rvlerl'identit desparties.

Comme barrire supplmentaire, une nouvelle paire de cls peut tre utilise pour chaque transaction, pour viter dtre relies un propritaire commun. Une certaine relation est cependant invitable avec les transactions multientres, qui rvlent ncessairementqueleursentrestaientpossdesparlemmepropritaire. Lvnement redout tant que si le propritairedunedes clsestrvl,lesliaisons permettentlarvlationdesautrestransactionsdummepropritaire. 11. Calculs

Considrons le cas dun attaquant essayant de gnrer une chane alternative plus rapidement que la chane lgitime. Mme en cas de russite, cela ne rendrait pas le systme vulnrable des modifications arbitraires, telles que la cration montaire partir de rien, ou lappropriation dargent qui na jamais appartenu lattaquant. Les noeuds nacceptent pas de transactions invalides comme paiement, et les noeuds honntes naccepteront jamais un bloc contenantunedecestransactions.Unattaquant ne peut que modifierunedesesproprestransactionsafindercuprerdelargentquil vientdedpenser. La course entre la chane lgitime et la chane de lattaquant peut tre caractrise comme une marche alatoire binaire. Lvnement succs est

l'allongementdelachanelgitime,augmentantsonavancede +1,etlvnementchec estl'allongementdelachanedelattaquant,rduisantsonretardde1. La probabilit quun attaquant rattrape son retard est analogue auproblme de ruine du joueur. Imaginons unjoueurayantdescrditsillimits,dmarrantenngatif,et pouvant jouer un nombre infini de parties pour tenter datteindre leseuilderentabilit. La probabilit quil y arrive, ou quun attaquant russisse rattraper la chane lgitime, secalculecommececi[8]: p = probabilitquunnoeudhonntetrouveleprochainbloc q = probabilitquelattaquanttrouveleprochainbloc qz = probabilit que lattaquant russisse rattraper la chane avec z blocs de retard

Etant donne notre hypothse p > q , la probabilit diminue exponentiellement en fonctiondunombredeblocquelattaquantarattraper.Aveclesprobabilitscontrelui, sil na pas une srie chanceuse trs tt, ses chances deviennent infimes au fur et mesurequilprendplusderetard. Nous nous intressons maintenant au temps que le destinatairedunenouvelle transaction doit attendre avant dtresuffisamment rassursurlefaitquelmetteurne pourra pas modifier la transaction. Noussupposonsque lmetteur estunattaquantqui souhaite faire croire au destinataire quil a t pay depuis un certain temps, puis souhaite modifier la transaction pour rcuprer largent de la transaction aprs un certain dlai. Ledestinataireseraalertquandcelaarrivera, maislmetteurespreque celaseratroptard. Le destinataire gnre une nouvelle paire de cls et donne la cl publique lmetteur peu de temps avant la signature. Cela vite que lmetteur prpare une chane de blocs en avance en travaillant dessus jusqu ce quil obtienne une avance suffisante, et quil effectue la transaction ce moment l. Une foislatransactionmise, lmetteur malhonnte commence travailler sur une chane alternative contenant une versionmodifiedelatransaction. Le destinataire attend que la transaction ait t ajoute un bloc et que z blocs aient t ajouts la suite de celuici. Il ne sait pas quel est exactement ltat davancement de lattaquant, mais en supposant que les blocs lgitimes aient mis le temps moyen attendu par bloc pour tre gnrs, lavancement potentiel delattaquant estunedistributiondePoissonayantcommevaleurattendue:

Afin dobtenir la probabilit que lattaquant arriveencorerattraper,nousmultiplionsla densit de Poisson pour chaque quantit de progression quil a pu obtenir par la probabilitquilrattrapedepuiscepoint:

Enrarrangeantpourviterdesommerlinfini...

ConvertiencodeC... #include<math.h> doubleAttackerSuccessProbability(doubleq,intz) { doublep=1.0q doublelambda=z*(q/p) doublesum=1.0 inti,k for(k=0k<=zk++) { doublepoisson=exp(lambda) for(i=1i<=ki++) poisson*=lambda/i sum=poisson*(1pow(q/p,zk)) } returnsum } En effectuant quelques essais, nous observons que la probabilit diminue exponentiellementselon z : q=0.1 z=0 z=1 z=2 z=3 z=4

p=1.0000000 p=0.2045873 p=0.0509779 p=0.0131722 p=0.0034552

z=5 p=0.0009137 z=6 p=0.0002428 z=7 p=0.0000647 z=8 p=0.0000173 z=9 p=0.0000046 z=10p=0.0000012 q=0.3 z=0 p=1.0000000 z=5 p=0.1773523 z=10p=0.0416605 z=15p=0.0101008 z=20p=0.0024804 z=25p=0.0006132 z=30p=0.0001522 z=35p=0.0000379 z=40p=0.0000095 z=45p=0.0000024 z=50p=0.0000006 SolutionspourPinfrieur0.1%... P<0.001 q=0.10z=5 q=0.15z=8 q=0.20z=11 q=0.25z=15 q=0.30z=24 q=0.35z=41 q=0.40z=89 q=0.45z=340

12.

Conclusion

Nous avons propos un systme de transactions lectroniques ne reposant pas sur la confiance. Nous avons dmarr avec un cadre habituel de pices faites de signatures numriques, ce qui procure un contrle fort de la proprit, mais reste incomplet sans un moyen dempcher les doubles dpenses.Pour rsoudre ce problme, nous avons propos un rseau pairpair utilisant des preuves de travail pour enregistrer un journal public des transactions, qui devient rapidement inattaquablepar le calcul si les noeuds honntescontrlentlamajoritdelapuissancedecalcul.Lerseauestrobuste de par sa simplicit non structure. Lesnoeuds travaillent de concertavectrspeude

coordination. Ils nont pas besoin dtreauthentifis,puisquelesmessagesnesontpas envoys un destinataire particulier, et nont besoin dtre dlivrs quau mieux. Les noeuds peuvent quitter et rejoindre le rseau volont, en acceptant la chane de preuve detravailcommepreuvedecequilsestpasspendantleurabsence.Ilsvotent en utilisant leur puissance de calcul, en exprimant leur accord vis vis des blocs valides en travaillant les tendre, et en rejetant les blocs invalides en refusant de travailler dessus. Touteslesrglesncessaires etlesmesuresincitativespeuventtre appliquesaveccemcanismedeconsensus.

Rfrences [1]W.Dai,"bmoney,"http://www.weidai.com/bmoney.txt,1998. [2] H. Massias, X.S. Avila, and J.J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in theBenelux,May1999. [3] S. Haber, W.S. Stornetta, "How to timestamp a digital document," In Journal of Cryptology,vol3,no2,pages99111,1991. [4] D. Bayer, S. Haber, W.S.Stornetta,"Improving the efficiency and reliability ofdigital timestamping," In Sequences II: Methods in Communication, Security and Computer Science,pages329334,1993. [5] S. Haber, W.S. Stornetta, "Secure names for bitstrings," In Proceedings of the 4th ACMConferenceonComputerandCommunicationsSecurity,pages2835,April1997. [6]A.Back,"Hashcashadenialofservicecountermeasure," http://www.hashcash.org/papers/hashcash.pdf,2002. [7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on SecurityandPrivacy,IEEEComputerSociety,pages122133,April1980. [8]W.Feller,"Anintroductiontoprobabilitytheoryanditsapplications,"1957.

You might also like