Bitcoin : Système de Monnaie Electronique en Pair à Pair

Embed Size (px)

Citation preview

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    1/12

    Bitcoin : Systme de Monnaie Electronique en Pair--Pair.

    Satoshi Nakamoto

    [email protected]

    Document original: www.bitcoin.org/bitcoin.pdf

    Traducteurs: Benkebab, Grondilu, MackilaForum: http://bitcointalk.org/?topic=2465.0

    Rsum. Un systme de monnaie lectronique entirement en pair--pair permettraitd'effectuer des paiements en ligne directement d'un tiers un autre sans passer par

    une institution financire. Les signatures numriques offrent une telle solution, maisperdent leur intrt ds lors quun tiers de confiance est requis pour empcher ledouble paiement. Nous proposons une solution au problme du double paiement enutilisant un rseau pair--pair. Le rseau horodate les transactions laide dunefonction de hachage qui les traduit en une chane continue de preuves de travail (desempreintes ), formant un enregistrement qui ne peut tre modifi sans r-effectuer la1

    preuve de travail. La plus longue chane (dempreintes) sert non seulement de preuvedudroulement des vnements constats, mais galement de preuve qu'elle provientdu plus grand regroupement de puissance de calcul. Aussi longtemps que la majorit dela puissance de calcul (CPU) est contrle par des nuds qui ne cooprent pas pour

    attaquer le rseau, ils gnreront la plus longue chane et surpasseront les attaquants.Le rseau en lui-mme ne requiert qu'une structure rduite. Les messages sontdiffuss au mieux, et les nuds peuvent quitter ou rejoindre le rseau leur gr, enacceptant leur retour la chane de preuve de travail la plus longue comme preuve dece qui s'est droul pendant leur absence.

    1. Introduction

    Le commerce sur Internet dpend aujourdhui presque exclusivement dinstitutionsfinancires qui servent de tiers de confiance pour traiter les paiements lectroniques.Bien que ce systme fonctionne plutt bien pour la plupart des transactions, il copetoujours des faiblesses inhrentes son modle bas sur la confiance. Les transactionstotalement irrversibles ny sont pas vraiment possibles, puisque les institutionsfinancires doivent grer la mdiation de conflits. Le cot de cette mdiation augmenteles cots des transactions, limitant en pratique la taille minimale dune transaction et

    1N.d.t.: en cryptographie, une empreinte est le rsultat d'une fonction de hachage quipermet d'identifier la donne initiale" (cf. http://fr.wikipedia.org/wiki/Empreinte)

    http://www.google.com/url?q=http%3A%2F%2Fbitcointalk.org%2F%3Ftopic%3D2465.0&sa=D&sntz=1&usg=AFQjCNGw7ZBpwCFgzateW2FJTM4F-IaTIQhttp://www.google.com/url?q=http%3A%2F%2Fbitcointalk.org%2F%3Ftopic%3D2465.0&sa=D&sntz=1&usg=AFQjCNGw7ZBpwCFgzateW2FJTM4F-IaTIQhttp://www.google.com/url?q=http%3A%2F%2Fwww.bitcoin.org%2Fbitcoin.pdf&sa=D&sntz=1&usg=AFQjCNH_4s4gy6Me3D2hxbnF0chcKjKPLghttp://www.google.com/url?q=http%3A%2F%2Fwww.bitcoin.org%2Fbitcoin.pdf&sa=D&sntz=1&usg=AFQjCNH_4s4gy6Me3D2hxbnF0chcKjKPLgmailto:[email protected]:[email protected]://www.google.com/url?q=http%3A%2F%2Ffr.wikipedia.org%2Fwiki%2FEmpreinte)&sa=D&sntz=1&usg=AFQjCNF3xmRc9uDgYPmCYhPKgoZHd7hShQhttp://www.google.com/url?q=http%3A%2F%2Fbitcointalk.org%2F%3Ftopic%3D2465.0&sa=D&sntz=1&usg=AFQjCNGw7ZBpwCFgzateW2FJTM4F-IaTIQhttp://www.google.com/url?q=http%3A%2F%2Fwww.bitcoin.org%2Fbitcoin.pdf&sa=D&sntz=1&usg=AFQjCNH_4s4gy6Me3D2hxbnF0chcKjKPLghttp://www.google.com/url?q=http%3A%2F%2Fwww.bitcoin.org&sa=D&sntz=1&usg=AFQjCNGRJJEWOI4rIS555f9Q8ZAydXjn8gmailto:[email protected]
  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    2/12

    empchant la possibilit davoir des petites transactions peu coteuses. L'impossibilitdavoir des paiements non rversibles pour des services non rversibles engendre uncot encore plus important. Avec la possibilit dinverser les transactions, le besoin deconfiance augmente. Les marchands doivent se mfier de leurs clients, en les harcelantpour obtenir plus dinformations que ncessaire. Une certaine part de fraudes est

    accepte comme invitables. Tous ces cots et incertitudes de paiement peuvent trevits par lutilisation dune monnaie physique, mais aucun mcanisme nexiste pourraliser des paiements travers un systme de communication sans avoir recours untiers de confiance.

    Ce dont nous avons besoin, cest dun systme de paiement lectronique bassur des preuves cryptographiques au lieu dun modle bas sur la confiance, quipermettrait deux parties qui le souhaitent de raliser des transactions directemententre elles sans avoir recours un tiers de confiance. Les transactions qui sontinformatiquement impossibles annuler protgeraient les vendeurs de fraudesventuelles, et un systme de compte squestre pourrait facilement tre implment

    pour protger les acheteurs. Dans ce document, nous proposons une solution auproblme de double-dpense en utilisant un serveur horodat distribu en pair--pairpour gnrer des preuves informatiques de lordre chronologique des transactions. Lesystme est scuris tant que des nuds honntes contrlent ensemble plus depuissance de calcul quun groupe de nuds qui cooprerait pour raliser une attaque.

    2. Transactions

    Nous dfinissons une pice lectronique comme une chane de signatures numriques.Tout propritaire transfre cette pice un autre en signant numriquement une

    empreinte de la prcdente transaction ainsi que la cl publique du nouveaupropritaire et les ajoute la fin de la pice. Tout bnficiaire peut examiner lessignatures pour vrifier la chane de proprit.

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    3/12

    Le problme bien sr est que le bnficiaire ne peut vrifier quun des prcdentspropritaire na pas fait de double dpense avec la pice. Une solution courante estdintroduire une autorit centrale de confiance, ou htel des Monnaies, qui vrifieraitchaque transaction pour viter la double dpense. Aprs chaque transaction, les

    pices doivent tre retournes lhtel des Monnaies qui en cre une nouvelle, etseules les pices issues directement de lhtel des Monnaies sont considres commenayant pas t dpenses deux fois. Le problme de cette solution est que le destin detout le systme montaire repose sur lentreprise qui dirige lhtel des Monnaies, et quechaque transaction doit passer par eux, comme une banque.

    Nous avons besoin dune mthode pour que le bnficiaire puisse savoir si lesprcdents propritaires nont pas sign de transactions prcdentes. Pour cela, latransaction la plus ancienne doit tre celle qui compte, nous navons pas nous soucierdes tentatives ultrieures pour dpenser la pice en double. La seule manire deconfirmer labsence dune transaction prcdente est dtre au courant de toutes les

    transactions. Dans le modle bas sur un htel des Monnaies, ce dernier tait aucourant de toutes les transactions et dcidait donc laquelle arrivait en premier. Pourfaire de mme sans tierce partie, les transactions doivent tre annonces publiquement[1], et nous avons besoin dun systme pour que tous les participants se mettentdaccord sur un seul historique de lordre dans laquelle les transactions sont reues. Lebnficiaire a besoin dune preuve qu chaque temps dune transaction, la majorit desnoeuds soient daccord sur le fait quelle tait la premire reue.

    3. Serveur dHorodatage

    La base de la solution propose est un serveur dhorodatage. Un serveur dhorodatageprend lempreinte dun ensemble dlments horodater et publie cette empreinte, lafaon dune annonce dans un journal ou dun message sur un forum Usenet [2-5].Lhorodatage prouve que les donnes ont exist, afin dtre prises en compte danslempreinte. Chaque horodatage inclue lhorodatage prcdent dans son empreinte,formant une chane dont chaque nouvel lment vient confirmer les prcdents.

    4. Preuve de travail

    Pour implmenter un serveur dhorodatage distribu sur un rseau pair--pair, il faut

    https://docs.google.com/document/d/saYKb1Dk9avjS5E1aK1iCog/headless/print#bookmark=id.5du7q1v9zusr
  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    4/12

    utiliser un systme bas sur des preuves de travail tel que celui du systme Hashcashde Adam Back [6], plutt quun journal ou un message sur un forum Usenet. La preuvede travail ncessite de rechercher une valeur telle que son empreinte, calcule parexemple en utilisant SHA-256, dbute par un certain nombre de bits 0. Le travail requispour est exponentiellement fonction du nombre de bits 0 exigs, et peut tre valid en

    effectuant un seul calcul dempreinte.Pour notre rseau dhorodatage, nous implmentons la preuve de travail enincrmentant une variable dans le bloc jusqu ce quune valeur donnant une empreinteayant suffisamment de bits 0 soit trouve. Une fois que leffort de calcul ncessaire lobtention de la preuve de travail a t effectu, il nest plus possible de modifier lebloc sans refaire cet effort de calcul. Comme de nouveaux blocs sont chans sa suite,leffort de calcul ncessaire pour modifier un bloc inclue tout leffort de calculncessaire pour modifier tous les blocs suivants.

    La preuve de travail rsout le problme du choix de la reprsentativit du vote.Si la majorit tait base sur des voix alloues par adresse IP, le vote pourrait treperverti par quelquun capable de soctroyer beaucoup dadresses. La preuve de travailest essentiellement base sur la puissance de calcul (un processeur, une voix). Ladcision de la majorit est reprsente par la chane la plus longue, celle qui a

    ncessit le plus de calculs de preuve de travail. Si la majorit de la puissance de calculdu rseau est contrle par des noeuds honntes, la chane lgitime progresse le plusrapidement et distance les chanes concurrentes. Afin de modifier un ancien bloc, unattaquant devrait recalculer les preuves de travail du bloc modifi et de tous les blocssuivants, pour rattraper et dpasser le travail fournit par les noeuds honntes. Nousdmontrerons par la suite que la probabilit quun attaquant disposant de moins depuissance de calcul puisse rattraper diminue exponentiellement chaque nouveau blocajout.

    Afin de compenser lamlioration de la puissance de calcul du matriel et lintrtchangeant de faire fonctionner des noeuds du rseau, la difficult de la preuve de

    travail est dtermine par une moyenne de nombre de blocs trouver par heure. Si cesblocs sont gnrs trop rapidement, la difficult augmente.

    5. Rseau

    Les tapes mises en oeuvre pour faire fonctionner le rseau sont les suivantes :

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    5/12

    1. Les nouvelles transactions sont diffuses tous les noeuds.2. Chaque noeud regroupe les nouvelles transactions dans un bloc.3. Chaque noeud travaille la rsolution de la preuve de travail sur son bloc.4. Quand un noeud trouve une preuve de travail, il diffuse ce bloc tous les

    noeuds.

    5. Les noeuds nacceptent le bloc que si toutes les transactions quil contient sontvalides et nont pas dj t dpenses.

    6. Les noeuds expriment lacceptation du bloc en travaillant sur un nouveau blocdans la chane, ce nouveau bloc ayant comme empreinte prcdente celle dubloc accept.

    Les noeuds considrent toujours la chane la plus longue comme tant la chanelgitime, et travaillent tendre celle-ci. Si deux noeuds diffusent deux versionsdiffrentes du bloc suivant simultanment, certains des noeuds vont recevoir lune oulautre en premier. Dans cette situation, chacun travaille sur le bloc reu en premier,

    mais conserve lautre branche au cas ou celle-ci devienne la plus longue. Cette liaisonsera rompue quand la preuve de travail suivante sera trouve et quune branchedeviendra plus longue que lautre les noeuds qui travaillaient alors sur lautre branchechangeront pour la plus longue.

    Les diffusions de nouvelles transactions nont pas besoin datteindre tous lesnoeuds. A partir du moment ou elles atteignent suffisamment de noeuds, elle seretrouveront dans un bloc en peu de temps. Les diffusions des blocs tolrent la pertede messages. Si un noeud ne reoit pas un bloc, il le demandera lors de la rception dubloc suivant, lorsquil ralisera quil lui en manque un.

    6. Incitation

    Par convention, la premire transaction dun bloc est une transaction spciale qui creune nouvelle pice appartenant au crateur du bloc. Cela incite les noeuds participerau rseau, et permet la distribution initiale de la monnaie, puisquil ny a pas dautoritcentralise pour le faire. Cet ajout rgulier dune quantit constante de monnaie serapproche de leffort fourni par des mineurs pour ajouter de lor en circulation. Dansnotre cas, leffort se compose de puissance de calcul et de temps.

    Lincitation peut aussi tre finance par des frais de transaction. Si la valeur desortie dune transaction est infrieure sa valeur dentre, la diffrence est correspondaux frais de transaction, qui sont ajouts la valeur dincitation du bloc contenant cettetransaction. Une fois que la quantit prdtermine de monnaie sera entre encirculation, lincitation pourra passer sur un financement entirement bas sur les fraisde transaction, et ne provoquer aucune inflation.

    Lincitation peut encourager les noeuds rester honntes. Si un attaquantcupide a les moyens dobtenir plus de puissance de calcul que l'ensemble des noeudshonntes, il peut choisir entre arnaquer les gens en rcuprant ses paiements, ouutiliser sa puissance pour gnrer de la nouvelle monnaie. Il doit trouver plus

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    6/12

    intressant de jouer le jeu, ce qui le favorise avec plus de nouvelle monnaie quelensemble des autres noeuds, plutt que de saper le systme et la valeur de sa proprerichesse.

    7. conomiser l'Espace Disque

    Une fois que la dernire transaction concernant une pice est enfouie sous assez deblocs, les transactions passes peuvent tre supprimes pour conomiser de lespacedisque. Pour permettre cela sans invalider lempreinte du bloc, les transactions sontrsumes dans un arbre de Merkle [7][2][5], dont seule la racine est comprise danslempreinte du bloc. Les anciens blocs peuvent tre compresss en coupant desbranches de larbre. Les empreintes intermdiaires nont pas besoin dtre stockes.

    Un en-tte de bloc sans transaction pse environ 80 octets. Si nous supposonsque les blocs sont gnrs toutes les 10 minutes, cela reprsente 80 octets * 6 * 24 * 365= 4.2Mo par an. En 2008, les systmes informatiques sont vendus avec en moyenne 2Gode capacit de mmoire vive, et, la Loi de Moore prdisant une croissance de 1.2Go paran, le stockage ne devrait donc pas poser de problme, mme si lensemble desen-ttes de bloc devait tre conservs en mmoire vive.

    8. Vrification de Paiement Simplifi

    Il est possible de vrifier des paiements sans faire fonctionner un noeud complet durseau. Un utilisateur na besoin de conserver quune copie des en-ttes de la chane

    de preuves la plus longue, ce quil peut obtenir travers des requtes sur les noeudsdu rseau jusqu ce quil soit convaincu davoir la plus longue chane, puis enrcuprant la branche de larbre de Merkle liant la transaction avec le bloc dans lequelelle est horodate. Lutilisateur ne peut pas vrifier la transaction lui mme, mais en laliant sa place dans la chane, il peut voir quun noeud du rseau la accepte, et lesblocs suivants confirment davantage lacceptation du rseau.

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    7/12

    En tant que telle, la vrification est fiable tant que des noeuds honntes contrlent lerseau, mais est plus vulnrable si le rseau est compromis par un attaquant disposant

    de plus de puissance de calcul. Bien que les noeuds du rseau puissent vrifier lestransactions eux-mmes, la mthode simplifie peut tre dupe par des transactionsforges par lattaquant, tant que celui-ci a les moyens de dpasser la puissance decalcul du rseau. Une stratgie pour se protger dune telle attaque pourrait tre derecevoir des alertes des noeuds du rseau lorsque ceux ci dtectent un bloc invalide,demandant au logiciel de l'utilisateur de tlcharger le bloc complet et les transactionssuspectes pour vrifier lincohrence. Les entreprises qui reoivent frquemment despaiements auront certainement intrt faire fonctionner leur propres noeuds afindobtenir une scurit plus indpendante et des vrifications plus rapides.

    9. Combinaison et Fractionnement de Valeur

    Bien quil soit possible de traiter les pices sparment, il serait peu pratique degnrer une transaction diffrente pour chaque centime lors dun transfert. Afin depermettre la combinaison et le fractionnement de la monnaie, les transactionscomprennent de multiples entres et sorties. Normalement, il y a soit une seule entredepuis une grosse transaction prcdente, ou plusieurs entres combinant desmontants plus faibles, et au maximum deux sorties : une pour le paiement, et lautre pourrenvoyer le change, sil existe, lmetteur.

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

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    8/12

    transactions, et que ces transactions dpendent elles-mmes de beaucoup plus detransactions, nest pas un problme. Il ny a jamais besoin de rcuprer lhistoriquecomplet dune transaction.

    10. Confidentialit

    Le systme bancaire classique garantit un certain niveau de confidentialit en limitantlaccs aux informations aux parties concernes et au tiers de confiance. La ncessitde publier toutes les transactions exclue cette mthode, mais la confidentialit peut treobtenue en interrompant la circulation de linformation un autre niveau : en gardant lescls publiques anonymes. Il est possible de voir que quelquun envoie un certainmontant quelquun dautre, mais sans aucun lien avec des personnes. Ceci estsimilaire au niveau dinformation disponible sur les marchs dchange, ou la date et lemontant de chacun des changes, le cours, est publique, mais sans rvler l'identitdes parties.

    Comme barrire supplmentaire, une nouvelle paire de cls peut tre utilise

    pour chaque transaction, pour viter dtre relies un propritaire commun. Unecertaine relation est cependant invitable avec les transactions multi-entres, quirvlent ncessairement que leurs entres taient possdes par le mme propritaire.Lvnement redout tant que si le propritaire dune des cls est rvl, les liaisonspermettent la rvlation des autres transactions du mme propritaire.

    11. Calculs

    Considrons le cas dun attaquant essayant de gnrer une chane alternative plusrapidement 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. Lesnoeuds nacceptent pas de transactions invalides comme paiement, et les noeudshonntes naccepteront jamais un bloc contenant une de ces transactions. Un attaquantne peut que modifier une de ses propres transactions afin de rcuprer de largent quilvient de dpenser.

    La course entre la chane lgitime et la chane de lattaquant peut trecaractrise comme une marche alatoire binaire. Lvnement succs est

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    9/12

    l'allongement de la chane lgitime, augmentant son avance de +1, et lvnement checest l'allongement de la chane de lattaquant, rduisant son retard de -1.

    La probabilit quun attaquant rattrape son retard est analogue au problme deruine du joueur. Imaginons un joueur ayant des crdits illimits, dmarrant en ngatif, etpouvant jouer un nombre infini de parties pour tenter datteindre le seuil de rentabilit.

    La probabilit quil y arrive, ou quun attaquant russisse rattraper la chane lgitime,se calcule comme ceci [8] :

    probabilit quun noeud honnte trouve le prochain blocp =

    probabilit que lattaquant trouve le prochain blocq =

    probabilit que lattaquant russisse rattraper la chane avec blocs deqz= z

    retard

    Etant donne notre hypothse , la probabilit diminue exponentiellement en p >q

    fonction du nombre de bloc que lattaquant a rattraper. Avec les probabilits contre lui,sil na pas une srie chanceuse trs tt, ses chances deviennent infimes au fur et mesure quil prend plus de retard.

    Nous nous intressons maintenant au temps que le destinataire dune nouvelletransaction doit attendre avant dtre suffisamment rassur sur le fait que lmetteur nepourra pas modifier la transaction. Nous supposons que lmetteur est un attaquant quisouhaite faire croire au destinataire quil a t pay depuis un certain temps, puis

    souhaite modifier la transaction pour rcuprer largent de la transaction aprs uncertain dlai. Le destinataire sera alert quand cela arrivera, mais lmetteur espre quecela sera trop tard.

    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 unechane de blocs en avance en travaillant dessus jusqu ce quil obtienne une avancesuffisante, et quil effectue la transaction ce moment l. Une fois la transaction mise,lmetteur malhonnte commence travailler sur une chane alternative contenant uneversion modifie de la transaction.

    Le destinataire attend que la transaction ait t ajoute un bloc et que blocs z

    aient t ajouts la suite de celui-ci. Il ne sait pas quel est exactement ltatdavancement de lattaquant, mais en supposant que les blocs lgitimes aient mis letemps moyen attendu par bloc pour tre gnrs, lavancement potentiel de lattaquantest une distribution de Poisson ayant comme valeur attendue :

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    10/12

    Afin dobtenir la probabilit que lattaquant arrive encore rattraper, nous multiplions ladensit de Poisson pour chaque quantit de progression quil a pu obtenir par laprobabilit quil rattrape depuis ce point :

    En rarrangeant pour viter de sommer linfini...

    Converti en code C...

    #include double AttackerSuccessProbability(double q, int z){

    double p = 1.0 - qdouble lambda = z * (q / p)double sum = 1.0int i, kfor (k = 0 k

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    11/12

    z=5 p=0.0009137z=6 p=0.0002428z=7 p=0.0000647z=8 p=0.0000173z=9 p=0.0000046

    z=10 p=0.0000012

    q=0.3z=0 p=1.0000000z=5 p=0.1773523z=10 p=0.0416605z=15 p=0.0101008z=20 p=0.0024804z=25 p=0.0006132z=30 p=0.0001522

    z=35 p=0.0000379z=40 p=0.0000095z=45 p=0.0000024z=50 p=0.0000006

    Solutions pour P infrieur 0.1%...

    P < 0.001q=0.10 z=5q=0.15 z=8

    q=0.20 z=11q=0.25 z=15q=0.30 z=24q=0.35 z=41q=0.40 z=89q=0.45 z=340

    12. Conclusion

    Nous avons propos un systme de transactions lectroniques ne reposant pas sur laconfiance. Nous avons dmarr avec un cadre habituel de pices faites de signaturesnumriques, ce qui procure un contrle fort de la proprit, mais reste incomplet sansun moyen dempcher les doubles dpenses. Pour rsoudre ce problme, nous avonspropos un rseau pair--pair utilisant des preuves de travail pour enregistrer un

    journal public des transactions, qui devient rapidement inattaquable par le calcul si lesnoeuds honntes contrlent la majorit de la puissance de calcul. Le rseau est robustede par sa simplicit non structure. Les noeuds travaillent de concert avec trs peu de

  • 8/13/2019 Bitcoin : Systme de Monnaie Electronique en Pair Pair

    12/12

    coordination. Ils nont pas besoin dtre authentifis, puisque les messages ne sont pasenvoys un destinataire particulier, et nont besoin dtre dlivrs quau mieux. Lesnoeuds peuvent quitter et rejoindre le rseau volont, en acceptant la chane depreuve de travail comme preuve de ce quil sest pass pendant leur absence. Ils votenten 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 detravailler dessus. Toutes les rgles ncessaires et les mesures incitatives peuvent treappliques avec ce mcanisme de consensus.

    Rfrences[1] W. Dai, "b-money," 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 inthe Benelux, May 1999.[3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal ofCryptology, vol 3, no 2, pages 99-111, 1991.[4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digitaltime-stamping," In Sequences II: Methods in Communication, Security and ComputerScience, pages 329-334, 1993.[5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4thACM Conference on Computer and Communications Security, pages 28-35, April 1997.[6] A. Back, "Hashcash - a denial of service counter-measure,"

    http://www.hashcash.org/papers/hashcash.pdf, 2002.[7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium onSecurity and Privacy, IEEE Computer Society, pages 122-133, April 1980.[8] W. Feller, "An introduction to probability theory and its applications," 1957.

    http://www.google.com/url?q=http%3A%2F%2Fwww.weidai.com%2Fbmoney.txt&sa=D&sntz=1&usg=AFQjCNEythBdNq0vi1G--o4hwyuOSCbiqA