© CCFOUND sp. z o.o. sp.k.

Bitcoin: Een Peer-to-Peer Elektronisch Geldsysteem

Satoshi Nakamoto

31 oktober 2008

Samenvatting

Een puur peer-to-peer versie van elektronisch geld zou online betalingen mogelijk maken die rechtstreeks van de ene partij naar de andere worden verzonden zonder tussenkomst van een financiële instelling. Digitale handtekeningen bieden een deel van de oplossing, maar de belangrijkste voordelen gaan verloren als er nog steeds een vertrouwde derde partij nodig is om dubbele uitgaven te voorkomen. We stellen een oplossing voor voor het probleem van dubbele uitgaven met behulp van een peer-to-peer netwerk. Het netwerk tijdstempelt transacties door ze te hashen in een voortdurende keten van op het werk gebaseerd bewijs van werk, waardoor een record wordt gevormd dat niet kan worden gewijzigd zonder het opnieuw uitvoeren van het bewijs van werk. De langste keten dient niet alleen als bewijs van de reeks gebeurtenissen die zijn waargenomen, maar als bewijs dat het afkomstig is van de grootste pool van CPU-kracht. Zolang een meerderheid van de CPU-kracht wordt gecontroleerd door knooppunten die niet samenwerken om het netwerk aan te vallen, zullen ze de langste keten genereren en aanvallers voorblijven. Het netwerk zelf vereist minimale structuur. Berichten worden verspreid op basis van een 'best effort'-basis, en knooppunten kunnen het netwerk verlaten en opnieuw betreden wanneer ze willen, waarbij de langste proof-of-work-keten wordt geaccepteerd als bewijs van wat er is gebeurd terwijl ze weg waren.

1. Inleiding

Handel op internet is bijna volledig afhankelijk geworden van financiële instellingen die dienen als vertrouwde derde partijen om elektronische betalingen te verwerken. Hoewel het systeem goed genoeg werkt voor de meeste transacties, lijdt het nog steeds onder de inherente zwaktes van het op vertrouwen gebaseerde model. Volledig onomkeerbare transacties zijn eigenlijk niet mogelijk, omdat financiële instellingen geschillen niet kunnen vermijden. De kosten van bemiddeling verhogen transactiekosten, beperken de minimale praktische transactiegrootte en verbreken de mogelijkheid voor kleine informele transacties, en er is een breder kostenplaatje in het verlies van vermogen om niet-omkeerbare betalingen te doen voor niet-omkeerbare diensten. Met de mogelijkheid van omkering verspreidt de behoefte aan vertrouwen zich. Handelaren moeten voorzichtig zijn met hun klanten, ze lastig vallen voor meer informatie dan ze normaal gesproken zouden nodig hebben. Een bepaald percentage van fraude wordt geaccepteerd als onvermijdelijk. Deze kosten en betalingsonzekerheden kunnen in persoon worden vermeden door fysieke valuta te gebruiken, maar er bestaat geen mechanisme om betalingen via een communicatiekanaal te maken zonder een vertrouwde derde partij.

Wat nodig is, is een elektronisch betalingssysteem gebaseerd op cryptografisch bewijs in plaats van vertrouwen, waardoor eventuele twee bereidwillige partijen direct met elkaar kunnen handelen zonder de noodzaak van een vertrouwde derde partij. Transacties die computationeel onpraktisch zijn om te herstellen zouden verkopers beschermen tegen fraude, en routinematige escrowmechanismen zouden gemakkelijk kunnen worden geïmplementeerd om kopers te beschermen. In dit document stellen we een oplossing voor voor het probleem van dubbele uitgaven met behulp van een peer-to-peer gedistribueerde tijdstempelserver om computationeel bewijs van de chronologische volgorde van transacties te genereren. Het systeem is veilig zolang eerlijke knooppunten collectief meer CPU-kracht controleren dan alle samenwerkende groepen van aanvallende knooppunten.

2. Transacties

We definiëren een elektronische munt als een reeks digitale handtekeningen. Elke eigenaar draagt de munt over aan de volgende door digitaal een hash van de vorige transactie en de openbare sleutel van de volgende eigenaar te ondertekenen en deze aan het einde van de munt toe te voegen. Een begunstigde kan de handtekeningen verifiëren om de eigendomsketen te controleren.

Het probleem is natuurlijk dat de begunstigde niet kan verifiëren dat een van de eigenaren de munt niet heeft dubbel uitgegeven. Een veelvoorkomende oplossing is een vertrouwde centrale autoriteit, of munt, in te voeren die elke transactie controleert op dubbele uitgaven. Na elke transactie moet de munt worden geretourneerd om een nieuwe munt uit te geven, en alleen munten die rechtstreeks van de munt zijn uitgegeven, worden vertrouwd om niet te zijn dubbel uitgegeven. Het probleem met deze oplossing is dat het lot van het hele geldsysteem afhangt van het bedrijf dat de munt runt, waarbij elke transactie door hen moet gaan, net als bij een bank.

We hebben een manier nodig voor de begunstigde om te weten dat de vorige eigenaren geen eerdere transacties hebben ondertekend. Voor onze doeleinden is de vroegst mogelijke transactie de belangrijkste, dus we maken ons geen zorgen over latere pogingen tot dubbele uitgaven. De enige manier om een transactie te bevestigen, is op de hoogte zijn van alle transacties. In het op munten gebaseerde model was de munt op de hoogte van alle transacties en besliste welke het eerst aankwam. Om dit te bereiken zonder een vertrouwde partij, moeten transacties openbaar worden aangekondigd [1], en hebben we een systeem nodig waarbij de deelnemers het eens kunnen worden over een enkele geschiedenis van de volgorde waarin ze zijn ontvangen. De begunstigde heeft bewijs nodig dat op het moment van elke transactie de meerderheid van de knooppunten het erover eens was dat het de eerste ontvangst was.

3. Tijdstempelserver

De oplossing die we voorstellen begint met een tijdstempelserver. Een tijdstempelserver werkt door een hash te nemen van een blok items die moeten worden getijdstempeld en deze hash breed te publiceren, bijvoorbeeld in een krant of Usenet-bericht [2-5]. Het tijdstempel bewijst dat de gegevens op dat moment moeten hebben bestaan, uiteraard, om in de hash te komen. Elk tijdstempel bevat het vorige tijdstempel in de hash, waardoor een keten ontstaat, waarbij elk extra tijdstempel de voorafgaande versterkt.

4. Bewijs van Werk

Om een gedistribueerde tijdstempelserver op peer-to-peer basis te implementeren, zullen we een proof-of-work-systeem moeten gebruiken dat lijkt op Adam Back's Hashcash [6], in plaats van kranten- of Usenet-berichten. Het bewijs van werk omvat het scannen naar een waarde die bij het hashen, zoals met SHA-256, de hash begint met een aantal nulbits. De gemiddelde benodigde inspanning is exponentieel in het aantal nulbits en kan worden geverifieerd door het uitvoeren van een enkele hash.

Voor ons tijdstempelnetwerk implementeren we het bewijs van werk door een nonce in het blok te verhogen totdat een waarde is gevonden die de hash van het blok de vereiste nulbits geeft. Zodra de CPU-inspanning is geleverd om aan het bewijs van werk te voldoen, kan het blok niet worden gewijzigd zonder het werk opnieuw te doen. Aangezien latere blokken erop zijn geketend, zou het werk om het blok te wijzigen alle blokken erna opnieuw moeten doen.

Het bewijs van werk lost ook het probleem op van de bepaling van de vertegenwoordiging in meerderheidsbesluitvorming. Als de meerderheid gebaseerd was op één-IP-adres-één-stem, zou het kunnen worden ondermijnd door iedereen die veel IP's kan toewijzen. Het bewijs van werk is essentieel één-CPU-één-stem. De beslissing van de meerderheid wordt vertegenwoordigd door de langste keten, waarin de grootste bewijs van werk-inspanning is geïnvesteerd. Als een meerderheid van de CPU-kracht wordt gecontroleerd door eerlijke knooppunten, zal de eerlijke keten het snelst groeien en elke concurrerende keten inhalen. Om een vroeger blok te wijzigen, moet een aanvaller het bewijs van werk van het blok en alle blokken daarna opnieuw doen en vervolgens de inspanning van de eerlijke knooppunten inhalen en overschrijden. Later zullen we laten zien dat de kans op een langzamere aanvaller om in te halen exponentieel afneemt naarmate er opeenvolgende blokken worden toegevoegd.

Om de toenemende snelheid van hardeware en de variërende interesse in het uitvoeren van knooppunten in de tijd te compenseren, wordt de bewijs van werk-moeilijkheid bepaald door een voortschrijdend gemiddelde dat is gericht op een gemiddeld aantal blokken per uur. Als ze te snel worden gegenereerd, neemt de moeilijkheid toe.

5. Netwerk

De stappen om het netwerk te laten werken zijn als volgt:

  1. Nieuwe transacties worden naar alle knooppunten verzonden.
  2. Elk knooppunt verzamelt nieuwe transacties in een blok.
  3. Elk knooppunt werkt aan het vinden van een moeilijk bewijs van werk voor zijn blok.
  4. Wanneer een knooppunt een bewijs van werk vindt, verzendt het het blok naar alle knooppunten.
  5. Knooppunten accepteren het blok alleen als alle transacties erin geldig zijn en niet al zijn uitgegeven.
  6. Knooppunten geven hun acceptatie van het blok te kennen door eraan te werken de volgende blok in de keten te creëren, waarbij ze de hash van het geaccepteerde blok als de vorige hash gebruiken.

Knooppunten beschouwen altijd de langste keten als de juiste en zullen blijven werken aan het verlengen ervan. Als twee knooppunten tegelijkertijd verschillende versies van het volgende blok uitzenden, kunnen sommige knooppunten de ene of de andere als eerste ontvangen. In dat geval werken ze aan het eerste dat ze hebben ontvangen, maar ze bewaren de andere tak voor het geval deze langer wordt. Het verschil zal worden opgelost wanneer het volgende bewijs van werk wordt gevonden en één tak langer wordt; de knooppunten die hebben gewerkt aan de andere tak zullen dan overschakelen naar de langere tak.

Nieuwe transactieberichten hoeven niet per se alle knooppunten te bereiken. Zolang ze veel knooppunten bereiken, zullen ze na verloop van tijd in een blok terechtkomen. Blokberichten zijn ook tolerant voor weggelaten berichten. Als een knooppunt geen blok ontvangt, zal het erom vragen wanneer het het volgende blok ontvangt en zich realiseert dat het er een heeft gemist.

6. Beloning

Conventioneel is de eerste transactie in een blok een speciale transactie die een nieuwe munt start die eigendom is van de maker van het blok. Dit voegt een stimulans toe voor knooppunten om het netwerk te ondersteunen, en biedt een manier om munten aanvankelijk in omloop te brengen, aangezien er geen centrale autoriteit is om ze uit te geven. De constante toevoeging van een vast bedrag aan nieuwe munten is analoog aan goudmijnwerkers die middelen gebruiken om goud aan circulatie toe te voegen. In ons geval is het CPU-tijd en elektriciteit die wordt besteed.

De stimulans kan ook worden gefinancierd met transactiekosten. Als de uitvoerwaarde van een transactie lager is dan de invoerwaarde, is het verschil een transactiekosten die wordt toegevoegd aan de stimuleringswaarde van het blok dat de transactie bevat. Zodra een vooraf bepaald aantal munten in omloop zijn gekomen, kan de stimulans volledig overgaan op transactiekosten en volledig inflatievrij zijn.

De stimulans kan ook helpen om knooppunten eerlijk te laten blijven. Als een hebzuchtige aanvaller in staat is om meer CPU-kracht te verzamelen dan alle eerlijke knooppunten, zou hij moeten kiezen tussen het gebruiken om mensen te bedriegen door zijn betalingen terug te stelen, of het gebruiken om nieuwe munten te genereren. Hij zou moeten vinden dat het winstgevender is om volgens de regels te spelen, regels die hem bevoordelen met meer nieuwe munten dan alle anderen gecombineerd, dan het ondermijnen van het systeem en de geldigheid van zijn eigen rijkdom.

7. Ruimte terugwinnen op de harde schijf

Zodra de laatste transactie in een munt onder genoeg blokken is begraven, kunnen de uitgegeven transacties ervoor worden weggegooid om schijfruimte te besparen. Om dit te vergemakkelijken zonder de hash van het blok te verbreken, worden transacties gehasht in een Merkel-boom [7][2][5], waarbij alleen de hoofdknoop in de hash van het blok wordt opgenomen. Oude blokken kunnen dan gecomprimeerd worden door takken van de boom af te kappen. De interne hashes hoeven niet te worden opgeslagen.

Een blokkop zonder transacties zou ongeveer 80 bytes zijn. Als we aannemen dat blokken elke 10 minuten worden gegenereerd, 80 bytes * 6 * 24 * 365 = 4,2MB per jaar. Met computersystemen die normaal gesproken worden geleverd met 2 GB RAM vanaf 2008, en Moore's Law die een huidige groei van 1,2 GB per jaar voorspelt, zou opslag geen probleem moeten zijn, zelfs als de blokkoppen in het gehe

Satoshi Nakamoto

31 oktober 2008

Samenvatting

Een puur peer-to-peer versie van elektronisch geld zou online betalingen mogelijk maken die rechtstreeks van de ene partij naar de andere worden verzonden zonder tussenkomst van een financiële instelling. Digitale handtekeningen bieden een deel van de oplossing, maar de belangrijkste voordelen gaan verloren als er nog steeds een vertrouwde derde partij nodig is om dubbele uitgaven te voorkomen. We stellen een oplossing voor voor het probleem van dubbele uitgaven met behulp van een peer-to-peer netwerk. Het netwerk tijdstempelt transacties door ze te hashen in een voortdurende keten van op het werk gebaseerd bewijs van werk, waardoor een record wordt gevormd dat niet kan worden gewijzigd zonder het opnieuw uitvoeren van het bewijs van werk. De langste keten dient niet alleen als bewijs van de reeks gebeurtenissen die zijn waargenomen, maar als bewijs dat het afkomstig is van de grootste pool van CPU-kracht. Zolang een meerderheid van de CPU-kracht wordt gecontroleerd door knooppunten die niet samenwerken om het netwerk aan te vallen, zullen ze de langste keten genereren en aanvallers voorblijven. Het netwerk zelf vereist minimale structuur. Berichten worden verspreid op basis van een 'best effort'-basis, en knooppunten kunnen het netwerk verlaten en opnieuw betreden wanneer ze willen, waarbij de langste proof-of-work-keten wordt geaccepteerd als bewijs van wat er is gebeurd terwijl ze weg waren.

1. Inleiding

Handel op internet is bijna volledig afhankelijk geworden van financiële instellingen die dienen als vertrouwde derde partijen om elektronische betalingen te verwerken. Hoewel het systeem goed genoeg werkt voor de meeste transacties, lijdt het nog steeds onder de inherente zwaktes van het op vertrouwen gebaseerde model. Volledig onomkeerbare transacties zijn eigenlijk niet mogelijk, omdat financiële instellingen geschillen niet kunnen vermijden. De kosten van bemiddeling verhogen transactiekosten, beperken de minimale praktische transactiegrootte en verbreken de mogelijkheid voor kleine informele transacties, en er is een breder kostenplaatje in het verlies van vermogen om niet-omkeerbare betalingen te doen voor niet-omkeerbare diensten. Met de mogelijkheid van omkering verspreidt de behoefte aan vertrouwen zich. Handelaren moeten voorzichtig zijn met hun klanten, ze lastig vallen voor meer informatie dan ze normaal gesproken zouden nodig hebben. Een bepaald percentage van fraude wordt geaccepteerd als onvermijdelijk. Deze kosten en betalingsonzekerheden kunnen in persoon worden vermeden door fysieke valuta te gebruiken, maar er bestaat geen mechanisme om betalingen via een communicatiekanaal te maken zonder een vertrouwde derde partij.

Wat nodig is, is een elektronisch betalingssysteem gebaseerd op cryptografisch bewijs in plaats van vertrouwen, waardoor eventuele twee bereidwillige partijen direct met elkaar kunnen handelen zonder de noodzaak van een vertrouwde derde partij. Transacties die computationeel onpraktisch zijn om te herstellen zouden verkopers beschermen tegen fraude, en routinematige escrowmechanismen zouden gemakkelijk kunnen worden geïmplementeerd om kopers te beschermen. In dit document stellen we een oplossing voor voor het probleem van dubbele uitgaven met behulp van een peer-to-peer gedistribueerde tijdstempelserver om computationeel bewijs van de chronologische volgorde van transacties te genereren. Het systeem is veilig zolang eerlijke knooppunten collectief meer CPU-kracht controleren dan alle samenwerkende groepen van aanvallende knooppunten.

2. Transacties

We definiëren een elektronische munt als een reeks digitale handtekeningen. Elke eigenaar draagt de munt over aan de volgende door digitaal een hash van de vorige transactie en de openbare sleutel van de volgende eigenaar te ondertekenen en deze aan het einde van de munt toe te voegen. Een begunstigde kan de handtekeningen verifiëren om de eigendomsketen te controleren.

Het probleem is natuurlijk dat de begunstigde niet kan verifiëren dat een van de eigenaren de munt niet heeft dubbel uitgegeven. Een veelvoorkomende oplossing is een vertrouwde centrale autoriteit, of munt, in te voeren die elke transactie controleert op dubbele uitgaven. Na elke transactie moet de munt worden geretourneerd om een nieuwe munt uit te geven, en alleen munten die rechtstreeks van de munt zijn uitgegeven, worden vertrouwd om niet te zijn dubbel uitgegeven. Het probleem met deze oplossing is dat het lot van het hele geldsysteem afhangt van het bedrijf dat de munt runt, waarbij elke transactie door hen moet gaan, net als bij een bank.

We hebben een manier nodig voor de begunstigde om te weten dat de vorige eigenaren geen eerdere transacties hebben ondertekend. Voor onze doeleinden is de vroegst mogelijke transactie de belangrijkste, dus we maken ons geen zorgen over latere pogingen tot dubbele uitgaven. De enige manier om een transactie te bevestigen, is op de hoogte zijn van alle transacties. In het op munten gebaseerde model was de munt op de hoogte van alle transacties en besliste welke het eerst aankwam. Om dit te bereiken zonder een vertrouwde partij, moeten transacties openbaar worden aangekondigd [1], en hebben we een systeem nodig waarbij de deelnemers het eens kunnen worden over een enkele geschiedenis van de volgorde waarin ze zijn ontvangen. De begunstigde heeft bewijs nodig dat op het moment van elke transactie de meerderheid van de knooppunten het erover eens was dat het de eerste ontvangst was.

3. Tijdstempelserver

De oplossing die we voorstellen begint met een tijdstempelserver. Een tijdstempelserver werkt door een hash te nemen van een blok items die moeten worden getijdstempeld en deze hash breed te publiceren, bijvoorbeeld in een krant of Usenet-bericht [2-5]. Het tijdstempel bewijst dat de gegevens op dat moment moeten hebben bestaan, uiteraard, om in de hash te komen. Elk tijdstempel bevat het vorige tijdstempel in de hash, waardoor een keten ontstaat, waarbij elk extra tijdstempel de voorafgaande versterkt.

4. Bewijs van Werk

Om een gedistribueerde tijdstempelserver op peer-to-peer basis te implementeren, zullen we een proof-of-work-systeem moeten gebruiken dat lijkt op Adam Back's Hashcash [6], in plaats van kranten- of Usenet-berichten. Het bewijs van werk omvat het scannen naar een waarde die bij het hashen, zoals met SHA-256, de hash begint met een aantal nulbits. De gemiddelde benodigde inspanning is exponentieel in het aantal nulbits en kan worden geverifieerd door het uitvoeren van een enkele hash.

Voor ons tijdstempelnetwerk implementeren we het bewijs van werk door een nonce in het blok te verhogen totdat een waarde is gevonden die de hash van het blok de vereiste nulbits geeft. Zodra de CPU-inspanning is geleverd om aan het bewijs van werk te voldoen, kan het blok niet worden gewijzigd zonder het werk opnieuw te doen. Aangezien latere blokken erop zijn geketend, zou het werk om het blok te wijzigen alle blokken erna opnieuw moeten doen.

Het bewijs van werk lost ook het probleem op van de bepaling van de vertegenwoordiging in meerderheidsbesluitvorming. Als de meerderheid gebaseerd was op één-IP-adres-één-stem, zou het kunnen worden ondermijnd door iedereen die veel IP's kan toewijzen. Het bewijs van werk is essentieel één-CPU-één-stem. De beslissing van de meerderheid wordt vertegenwoordigd door de langste keten, waarin de grootste bewijs van werk-inspanning is geïnvesteerd. Als een meerderheid van de CPU-kracht wordt gecontroleerd door eerlijke knooppunten, zal de eerlijke keten het snelst groeien en elke concurrerende keten inhalen. Om een vroeger blok te wijzigen, moet een aanvaller het bewijs van werk van het blok en alle blokken daarna opnieuw doen en vervolgens de inspanning van de eerlijke knooppunten inhalen en overschrijden. Later zullen we laten zien dat de kans op een langzamere aanvaller om in te halen exponentieel afneemt naarmate er opeenvolgende blokken worden toegevoegd.

Om de toenemende snelheid van hardeware en de variërende interesse in het uitvoeren van knooppunten in de tijd te compenseren, wordt de bewijs van werk-moeilijkheid bepaald door een voortschrijdend gemiddelde dat is gericht op een gemiddeld aantal blokken per uur. Als ze te snel worden gegenereerd, neemt de moeilijkheid toe.

5. Netwerk

De stappen om het netwerk te laten werken zijn als volgt:

  1. Nieuwe transacties worden naar alle knooppunten verzonden.
  2. Elk knooppunt verzamelt nieuwe transacties in een blok.
  3. Elk knooppunt werkt aan het vinden van een moeilijk bewijs van werk voor zijn blok.
  4. Wanneer een knooppunt een bewijs van werk vindt, verzendt het het blok naar alle knooppunten.
  5. Knooppunten accepteren het blok alleen als alle transacties erin geldig zijn en niet al zijn uitgegeven.
  6. Knooppunten geven hun acceptatie van het blok te kennen door eraan te werken de volgende blok in de keten te creëren, waarbij ze de hash van het geaccepteerde blok als de vorige hash gebruiken.

Knooppunten beschouwen altijd de langste keten als de juiste en zullen blijven werken aan het verlengen ervan. Als twee knooppunten tegelijkertijd verschillende versies van het volgende blok uitzenden, kunnen sommige knooppunten de ene of de andere als eerste ontvangen. In dat geval werken ze aan het eerste dat ze hebben ontvangen, maar ze bewaren de andere tak voor het geval deze langer wordt. Het verschil zal worden opgelost wanneer het volgende bewijs van werk wordt gevonden en één tak langer wordt; de knooppunten die hebben gewerkt aan de andere tak zullen dan overschakelen naar de langere tak.

Nieuwe transactieberichten hoeven niet per se alle knooppunten te bereiken. Zolang ze veel knooppunten bereiken, zullen ze na verloop van tijd in een blok terechtkomen. Blokberichten zijn ook tolerant voor weggelaten berichten. Als een knooppunt geen blok ontvangt, zal het erom vragen wanneer het het volgende blok ontvangt en zich realiseert dat het er een heeft gemist.

6. Beloning

Conventioneel is de eerste transactie in een blok een speciale transactie die een nieuwe munt start die eigendom is van de maker van het blok. Dit voegt een stimulans toe voor knooppunten om het netwerk te ondersteunen, en biedt een manier om munten aanvankelijk in omloop te brengen, aangezien er geen centrale autoriteit is om ze uit te geven. De constante toevoeging van een vast bedrag aan nieuwe munten is analoog aan goudmijnwerkers die middelen gebruiken om goud aan circulatie toe te voegen. In ons geval is het CPU-tijd en elektriciteit die wordt besteed.

De stimulans kan ook worden gefinancierd met transactiekosten. Als de uitvoerwaarde van een transactie lager is dan de invoerwaarde, is het verschil een transactiekosten die wordt toegevoegd aan de stimuleringswaarde van het blok dat de transactie bevat. Zodra een vooraf bepaald aantal munten in omloop zijn gekomen, kan de stimulans volledig overgaan op transactiekosten en volledig inflatievrij zijn.

De stimulans kan ook helpen om knooppunten eerlijk te laten blijven. Als een hebzuchtige aanvaller in staat is om meer CPU-kracht te verzamelen dan alle eerlijke knooppunten, zou hij moeten kiezen tussen het gebruiken om mensen te bedriegen door zijn betalingen terug te stelen, of het gebruiken om nieuwe munten te genereren. Hij zou moeten vinden dat het winstgevender is om volgens de regels te spelen, regels die hem bevoordelen met meer nieuwe munten dan alle anderen gecombineerd, dan het ondermijnen van het systeem en de geldigheid van zijn eigen rijkdom.

7. Ruimte terugwinnen op de harde schijf

Zodra de laatste transactie in een munt onder genoeg blokken is begraven, kunnen de uitgegeven transacties ervoor worden weggegooid om schijfruimte te besparen. Om dit te vergemakkelijken zonder de hash van het blok te verbreken, worden transacties gehasht in een Merkel-boom [7][2][5], waarbij alleen de hoofdknoop in de hash van het blok wordt opgenomen. Oude blokken kunnen dan gecomprimeerd worden door takken van de boom af te kappen. De interne hashes hoeven niet te worden opgeslagen.

Een blokkop zonder transacties zou ongeveer 80 bytes zijn. Als we aannemen dat blokken elke 10 minuten worden gegenereerd, 80 bytes * 6 * 24 * 365 = 4,2MB per jaar. Met computersystemen die normaal gesproken worden geleverd met 2 GB RAM vanaf 2008, en Moore's Law die een huidige groei van 1,2 GB per jaar voorspelt, zou opslag geen probleem moeten zijn, zelfs als de blokkoppen in het gehe

https://nakamotoinstitute.or...
Show original content

2 users upvote it!

0 answers