Auteur Topic: Hoe werkt de e-Gulden?  (gelezen 9253 keer)

Offline AmazingDreams

  • Administrator
  • Eindbaas
  • *****
  • Berichten: 377
  • Karma: +14/-1
    • Bekijk profiel
    • Guldenplaza.nl
Hoe werkt de e-Gulden?
« Gepost op: 13 oktober 2014, 11:27:42 »
Dit stuk is opgedeeld in 3 delen:

  • Algemene inleiding
  • Niet technisch verhaal
  • Technisch verhaal

Ik zou echter zeggen dat je alles moet lezen :) Mocht iemand fouten of verbeterpunten zien, laat het aub weten.

1. Algemene inleiding
Bitcoin is de eerste cryptovaluta, ontwikkeld door de persoon - of team - Satoshi. Bitcoin is een munt die decentraal uitgegeven wordt. Zonder vooroordelen en zonder arbitraire ideeen of beslissingen van enkele personen.
De e-Gulden is hiervan afgeleid. Het onderstaande verhaal is een poging duidelijk te maken hoe een cryptomunt werkt.

2. Niet technisch verhaal
2.1 Lokale kopie
Iedereen houdt zijn eigen lokale kopie bij van de transacties die gemaakt zijn. Een soort scoreboard waar per adres staat hoeveel dat adres ontvangen en verstuurd heeft en dus hoeveel dat adres in bezit heeft.

2.2 Transacties
Op het moment dat bijvoorbeeld Jan een transactie maakt moet hij de transacties noemen die samen de waarde van zijn nieuwe transactie hebben. Deze informatie stuurt hij de wereld in, iedereen controleert of Jan wel echt die transactie kan maken, of hij wel genoeg geld heeft. Dit gebeurt allemaal softwarematig, niets in dit verhaal wordt met de hand gedaan. Hij heeft bijvoorbeeld een keer 2 en een keer 3 EFL ontvangen en wil 5 versturen. Zijn software noemt dan deze transacties (input) van 2 en 3 EFL met de output van 5 EFL. Iedere 'input' transactie kan maar 1 keer gebruikt worden.

Nu kan het zijn dat Jan meerdere keren refereert naar dezelfde input transactie. Deze transacties zijn dus niet geldig, ze zijn immers al gebruikt! Jan is echter heel erg slim bezig (denkt 'ie) en probeert met hetzelfde geld meerdere rekeningen te betalen. 1 bij de groenteboer en 1 bij de bakker. Hij stuurt de informatie over de ene transactie eerst naar de bakker en een andere transactie eerst naar de groenteboer. De groenteboer en de bakker zien allebei het geld binnenkomen van Jan (wat dus niet klopt!). Overigens is dit in de praktijk erg lastig.

Na een tijdje komt de informatie binnen over de andere transacties bij de bakker en de groenteboer, deze zullen door de software van de groenteboer en de bakker geweigerd worden. Want Jan had al aangegeven die inputs gebruikt heeft om te betalen. Jan is blij, hij heeft twee rekeningen betaald met hetzelfde geld! De transactie naar de groenteboer wordt niet geaccepteerd door de software van de bakker en de transactie naar de bakker wordt niet geaccepteerd door de software van de groenteboer. Zij zien dit dus niet!

2.3 Mining
Wat nu? Wat doen we om dit soort synchronisatieproblemen te voorkomen? We minen! We hebben afgesproken dat, eenmaal in de zoveel tijd, de huidige status van het netwerk wordt gebruikt van een enkele miner, als je je niet aan deze afspraak houdt kun je niet meedraaien met het netwerk. We zullen later ingaan op de details, maar eerst op de grote lijnen en wat het betekend voor het netwerk.
Piet was aan het minen en had het geluk om het volgende blok te vinden. Toevallig kreeg hij de transactie naar de groenteboer eerder binnen, de transactie naar de bakker werd dus niet geaccepteerd en staat niet in zijn lokale scoreboard. Op het moment dat het blok gevonden wordt, wordt zijn scoreboard verpakt in een blok en uitgezonden naar het netwerk.
De groenteboer is blij; hij ziet dat de transactie inmiddels een bevestiging heeft! De bakker is niet blij: Jan is duidelijk niet te vertrouwen, hij heeft hem geprobeerd op te lichten. Maar weet ook dat hij geen vals geld heeft gekregen waardoor hij later zelf in de problemen zou komen.

2.4 Incentief om te minen
Het incentief om te minen bestaat in feite uit 3 delen.

Ik wil m'n geld!
De bakker en de groenteboer hebben beide motivatie om te minen, zij willen immers hun geld krijgen/kunnen uitgeven. Dit kan alleen als de transacties worden bevestigd door middel van een blok.

Ik wil meer geld! #1
Als je een blok vind krijg je een beloning, deze beloning bestaat op dit moment uit 25 EFL en wordt iedere 210.000 blokken gehalveerd.

Ik wil meer geld! #2
Bovenop de normale blokbeloning krijg je transactie fees die betaald worden door degenen die een transactie hebben gemaakt. Dit is per transactie een klein bedrag maar wordt opgestapeld toch redelijk wat geld. 1000 transacties met allemaal een 0.001 EFL aan fees is samen toch weer 1 EFL.

3. Technisch verhaal
3.1 Hashes
Een hash is een bepaalde manier om data te bewerken die niet om te keren is. Het is praktisch onmogelijk om de oorspronkelijke data uit de hash te halen. Belangrijk om te weten is dat een kleine verandering aan de input waarde een grote verandering in de output hash geeft. Enkele voorbeelden met een sha256 hash:

waarde: egulden
hash:   f6ce2516edc4a2465c45435a2e6aad5ef2814ef6aac1b08031a52a2bc6cd3d8a
waarde: e-gulden
hash:   0b4cdfa4a13708690db7b19b55b8ce5a5261f0956f322e4fabf5b869eecee95a

De enige manier om te achterhalen wat de oorspronkelijke data was is door een 'brute force' aanval te doen op de hash. Een brute force aanval is een 'domme' aanval die gewoon net zo lang de waarde veranderd tot de hash hetzelfde is:

waarde: a
hash:   ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
waarde: ab
hash:   fb8e20fc2e4c3f248c60c39bd652f3c1347298bb977b8b4d5903b85055620603
waarde: abc
hash:   ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
enzovoort.

Deze hashes worden veelvuldig gebruikt door cryptocurrencies. Maar ook bijvoorbeeld bij het opslaan van wachtwoorden.

3.2 Transacties, gedetailleerd(er)
Zoals hierboven genoemd houd iedereen een eigen kopie bij van de status van het netwerk (het scoreboard). Dit scoreboard is niet 'hard', in de zin dat het wordt opgebouwd door de som van alle transacties van en naar een adres. Zo heeft een adres bijvoorbeeld tweemaal 5 e-Gulden gekregen en 2 gestuurd, hij heeft dus 8 e-Gulden in totaal. Als je in je wallet ziet dat je 8 EFL hebt, heeft je wallet deze berekening dus gemaakt. Letterlijk gezien is het dus niet zo dat je dat 'hebt', maar dat de som van alle transacties op dat getal uit komt. En dat dit het bedrag is wat je kan uitgeven.
Stel dat je nu deze van deze 8 EFL er 4 gebruikt om iets te kopen. Je wallet zoekt naar de meest efficiƫnte manier om dit te doen. In dit geval maakt de wallet twee transacties aan: de wallet refereert naar een transactie van 5 EFL en zegt dat 4 hiervan verstuurd worden naar adres A, en 1 naar een eigen adres B. Dit moet gebeuren om te zorgen dat het transactionele systeem klopt. Want je balans wordt 'opgebouwd', en is niet 'hard' maar liquide. Zonder de transactie van 1 EFL naar adres B ben je deze EFL kwijt.

De hash van een transactie:
waarde: hoeveelheid:4,van:adresA,naar:adresB
hash:   af436033bf9d9ce539b4a13ad38729de93abc1f72a48c5fa938c321adb20dae5

Om te bewijzen dat degene die de adresA bezig daadwerkelijk de eigenaar is van de 4 EFL's, wordt de transactie ondertekend met behulp van de private keydie bij dat adres hoort. Er is een wiskundige verbinding tussen de public key (adresA) en de private key, die geheim moet blijven.

Stel dat de eigenaar van adresB meer wil hebben, hij past de transactie aan zodat er staat dat er 10 verstuurd moet worden en zendt deze uit naar het netwerk.
waarde: hoeveelheid:10,van:adresA,naar:adresB
hash:   27107823a23bd5330ade6a9d1dd6a566fc2d1b2e1cea1f4b9c48816d9019f960
De hash is nu anders! De handtekening klopt niet met de transactie! Deze is dus ongeldig.

Limbo
Als een transactie wordt gemaakt is deze in 'limbo' (niemand kan nog bij de coins) tot deze in een blok is opgenomen.

3.3 Mining, gedetailleerd(er)
Minen is het proces van het oplossen van zeer ingewikkelde problemen. Deze problemen zijn moeilijk op te lossen, maar makkelijk te bewijzen dat ze correct zijn opgelost. De moeilijkheidsgraad van deze problemen varieert, we willen dat er iedere 2 minuten zo'n probleem wordt opgelost. Als er relatief veel oplossingen gevonden worden zal de moeilijkheidsgraad omhoog gaan, als er relatief weinig oplossingen worden gevonden zal de moeilijkheidsgraad omlaag gaan.

Een blok bestaat uit de waardes van alle transacties die op dat moment in limbo zijn, plus de hash van het vorige blok. Hier moet alleen nog een hash op geplakt worden die past bij de huidige moeilijkheidsgraad. Om dit te realiseren moet er een variabele zijn in het blok. De zogenaamde nonce. Deze nonce bestaat uit 4 bytes (karakters) en is de enige variabele in een blok. Miners berekenen deze nonce zodat de hash van alles bij elkaar past bij de huidge moeilijkheidsgraad.

Een blok moet het vorige blok vermelden, waar dit blok op is gebouwd
Om te voorkomen dat iemand van te voren een aantal blokken kan maken en op een willekeurig moment aan het netwerk kan geven moet een blok altijd de hash van het vorige blok bevatten. Zoals ik hierboven heb laten zien veranderd de hash aanzienlijk bij zelfs een kleine verandering in de data. Je kunt dus niet vast een paar blokken maken en hier later de hashes in passen. Alle blokken die gemaakt zijn bevatten dus het resultaat van de vorige berekening. Iedere keer dat er een nieuw blok wordt gevonden begint het berekenen opnieuw.

Een blok moet gegenereerd zijn met een bepaalde moeilijkheidsgraad
We willen niet te snel blokken achter elkaar, en ook niet te weinig, de hash/nonce moet passen bij de moeilijkheidsgraad. Deze nonce wordt verpakt bij het blok en is dus bekend voor eenieder die het blok ontvangt. De ontvanger gooit alles nogmaals bij elkaar en kijkt of de hash klopt met de moeilijkheidsgraad, als dit zo is wordt het blok geaccepteerd.

3.4 Wat als er een 'fork' is?
De situatie die geschetst werd bij de simpele uitleg van de transactie kan ook gebeuren bij blokken. Het kan zijn dat er twee blokken op ongeveer hetzelfde moment gevonden worden en deze beide naar delen van het netwerk worden gestuurd. Wat nu?
De langste keten wint: sommige miners zullen op blok A gaan bouwen en anderen op blok B. Op het moment dat er eerder een blok C wordt gevonden op blok A wordt deze het netwerk in gestuurd en zullen de clients blok B niet meer zien als een geaccepteerd blok. De transacties in dat blok zullen teruggaan in de limbo totdat ze weer verpakt worden in een blok.

Dit proces kan zich onbeperkt herhalen. Een ding is dat als een bepaalde miner maar genoeg kracht heeft hij sneller blokken kan bouwen dan de rest van het netwerk en bijvoorbeeld een chain maakt van 20 blokken in de tijd dat de rest van het netwerk er maar 10 heeft gemaakt. Deze 20 blokken laat hij pas later los. Die blokken zijn dus de langste keten en de overige 10 worden vergeten. Zo kan het dus voorkomen dat een transactie met meer dan 6 bevestigingen (wat de norm is voor acceptatie) toch niet geldig is. Om deze reden is het belangrijk zoveel mogelijk te minen, zodat kwaadwillenden mee moeite moeten doen om dit te kunnen bereiken.
« Laatst bewerkt op: 13 oktober 2014, 15:25:32 door AmazingDreams »
Donate: LSVKryZR4z8v6Ca3UNDtYtbX3gbpTHB6Pi

Offline AmazingDreams

  • Administrator
  • Eindbaas
  • *****
  • Berichten: 377
  • Karma: +14/-1
    • Bekijk profiel
    • Guldenplaza.nl
Re: Wat is de e-Gulden?
« Reactie #1 Gepost op: 13 oktober 2014, 11:45:49 »
Misschien dat iemand anders nog iets kan vertellen over hoe het ondertekenen van transacties precies werkt.
Donate: LSVKryZR4z8v6Ca3UNDtYtbX3gbpTHB6Pi

Offline Nelis

  • e-Gulden, meer dan geld
  • Eindbaas
  • *****
  • Berichten: 1.331
  • Karma: +24/-10
  • Oprichter BRVC
    • Bekijk profiel
    • tBrabantsKWARTIERTJE
Re: Wat is de e-Gulden?
« Reactie #2 Gepost op: 13 oktober 2014, 12:13:12 »
Daarvoor hebben we Gerrit nodig ben ik bang
Stop met leren:Start met denken
Donaties worden gewaardeerd
Leet9yr7pqvEJhvHBvmdDnFKSVT7q2GwiV

Offline bitwise-shifted

  • Administrator
  • Eindbaas
  • *****
  • Berichten: 866
  • Karma: +30/-1
    • Bekijk profiel
Re: Hoe werkt de e-Gulden?
« Reactie #3 Gepost op: 13 oktober 2014, 13:19:16 »
 :)
efl: LSt2u7BjW2H4C7bXmwpYdMby9iQc7ZvqAr

Offline bitwise-shifted

  • Administrator
  • Eindbaas
  • *****
  • Berichten: 866
  • Karma: +30/-1
    • Bekijk profiel
Re: Hoe werkt de e-Gulden?
« Reactie #4 Gepost op: 13 oktober 2014, 20:29:58 »
Het ondertekenen van transacties gebeurt in de "catacomben" van de software en is een briljant stuk software dat niet eenvoudig is uit te leggen. Als je het echt wilt weten moet je eerst dit lezen : https://en.bitcoin.it/wiki/Transactions , Daarna dit : http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html en daarna mag je de code zelf ontrafelen op Github.

Toch even wat licht op de zaak en terug naar het verhaal van AmazingDreams :
Je bent in het bezit van e-Guldens als iemand anders een of meerdere oude transacties die hij zelf heeft binnengekregen naar jou heeft doorgestuurd (geheel of deels). Dat doorsturen gebeurt  door te bewijzen dat jij op dit moment de eigenaar bent (de bestemming van een oude transactie).

Dat bewijs kun je leveren door het principe van asymetrische versleuteling, waarmee een heel interessant spel gespeeld gespeeld kan worden, namelijk doordat je kunt bewijzen dat je de eigenaar bent van een sleutel zonder de sleutel zelf prijs te geven (http://nl.wikipedia.org/wiki/Asymmetrische_cryptografie). Dit spel gaat uit van een sleutelpaar (de public key en de private key die Amazing Systems noemde). Zo'n sleutelpaar ontstaat doordat je een groot willekeurig getal verzint (de private key, een combinatie van 51 cijfers en letters) en dat middels een wiskundige formule omzet in een een ander getal (de public key). Als je nu een willekeurig bericht versleutelt met een private key kun je dat bericht ontsleutelen met de publieke sleutel (en eventueel andersom). Het verschil tussen versleutelen en hashen (dat door Amazing systems is beschreven) is dat hashing niet omkeerbaar is en versleutelen wel.

Nu is asymetrische versleuteling een erg kostbaar proces omdat het veel rekenkracht vergt.  Daarom wordt niet de hele transactie versleuteld met de private key, maar alleen de hash van de oorspronkelijke transactie.  Die versleutelde hash kan iedereen ontsleutelen omdat met een uitgaande transactie de public key wordt meegeleverd. Na het ontsleutelen komt de hash zelf dus beschikbaar en iedereen kan dan weer controleren dat dat de werkelijke hash is van de oorspronkelijke transactie.

Het bovenstaande is slechts een eenvoudige voorstelling van zaken. Weinigen weten bijvoorbeeld dat het openbare adres (dat bij de e-Gulden met een L begint (voorlopig nog)) niet de echte public key is, maar een hash daarvan. De echte public key komt pas in beeld als een daaraan gekoppelde transactie wordt gespendeerd. Dat gebeurt uit veiligheidsoverwegingen. Hoewel het op dit moment onmogeljik is om uit een publieke sleutel een privesleutel af te leiden heeft Satoshi bedacht dat dat in een verre toekomst met quantum-computers misschien wel mogelijk gaat worden (als de public key via diverse transacties in beeld komt). Daarom komt de echte publieke sleutel pas in beeld als geld dat eraan is gekoppeld wordt gespendeerd. Dat is ook de reden dat de e-Gulden software een adres niet twee keer gebruikt. Zelfs als een grote hoeveelheid e-guldens is gekoppeld aan een adres en je geeft er een fractie van uit, dan gaan alle e-guldens naar buiten, gaat de fractie naar zijn bestemming en komt de rest terug in je portemonnee op een kersvers nieuw adres.

Een andere wetenswaardigheid is dat het bewijs dat geleverd moet worden om aan te tonen dat je de ontvanger bent/was van een transactie niet in de walletsoftware is gecodeerd maar in de transactie. De transactie bevat het programma waarmee het bewijs moet worden geleverd. Dit maakt het bitcoin-protocol geschikt voor veel meer doeleinden dan waar het momenteel voor wordt gebruikt.

Kortom, het merendeel van de mensheid moet maar geloven dat het werkt. Briljante hoofden hebben al vijf jaar geprobeerd om het protocol te dwarsbomen en hebben het geleidelijk opgegeven.  Het lijkt er sterk op dat Bitcoin (en daarmee e-Gulden) een lange veilige toekomst beschoren is.
« Laatst bewerkt op: 13 oktober 2014, 22:18:14 door Nelis »
efl: LSt2u7BjW2H4C7bXmwpYdMby9iQc7ZvqAr

Offline Nelis

  • e-Gulden, meer dan geld
  • Eindbaas
  • *****
  • Berichten: 1.331
  • Karma: +24/-10
  • Oprichter BRVC
    • Bekijk profiel
    • tBrabantsKWARTIERTJE
Re: Hoe werkt de e-Gulden?
« Reactie #5 Gepost op: 14 oktober 2014, 11:56:53 »
Erg leeerzaam verhaal en op een toegankelijke manier geschreven, als ik wat opmerkingen mag plaatsen:

De naam keuze is wel erg Nederlands, misschien een idee op een van de personen Achmed te noemen? (of iig iets meer diversiteit in de namen, als is het maar om aan te tonen dat we er mee bezig zijn)

Bij puntje 3.3 in het begin geef ik zelf altijd het voorbeeld van een sudoku, makkelijk te controleren en moeilijk om te maken en hoe beter je bent in het oplossen van een sudoku, hoe minder getalletjes er in het begin bekend zijn, zodat de oplostijd gelijk blijft.

Puntje 3.4 klinkt nu erg gevaarlijk en alsof het aan de orde van de dag is, misschien even een kanttekening plaatsen dat dit eerder uitzondering dan regel?



Stop met leren:Start met denken
Donaties worden gewaardeerd
Leet9yr7pqvEJhvHBvmdDnFKSVT7q2GwiV

Offline AmazingDreams

  • Administrator
  • Eindbaas
  • *****
  • Berichten: 377
  • Karma: +14/-1
    • Bekijk profiel
    • Guldenplaza.nl
Re: Hoe werkt de e-Gulden?
« Reactie #6 Gepost op: 14 oktober 2014, 15:36:53 »
Citaat
De naam keuze is wel erg Nederlands, misschien een idee op een van de personen Achmed te noemen? (of iig iets meer diversiteit in de namen, als is het maar om aan te tonen dat we er mee bezig zijn)

Het zijn maar namen

Citaat
Bij puntje 3.3 in het begin geef ik zelf altijd het voorbeeld van een sudoku, makkelijk te controleren en moeilijk om te maken en hoe beter je bent in het oplossen van een sudoku, hoe minder getalletjes er in het begin bekend zijn, zodat de oplostijd gelijk blijft.

Ik denk dat de vergelijking met een sudoku niet helemaal correct is. Het principe is wel hetzelfde maar het verschil is dat je met honderdduizenden tegelijk een sudoku aan het maken bent. Deze honderdduizenden mensen (hashing power) staan gelijk aan je 'ervaring' in het oplossen van sudoku.
De difficulty is dan analoog met de hoeveelheid getallen die je krijgt. Maar dit staat niet meer als er een bepaalde difficulty is bereikt. Of misschien wel, want stel je krijgt maar 1 getal, en er is maar 1 oplossing. Dan moet je gaan gokken , hoewel dan alle oplossingen correct zijn is er maar 1 die 'de krant' wil zien.

Citaat
Puntje 3.4 klinkt nu erg gevaarlijk en alsof het aan de orde van de dag is, misschien even een kanttekening plaatsen dat dit eerder uitzondering dan regel?

Of het eerder uitzondering is dan regel is aan de totale kracht van de 'good guys' op het netwerk.
Donate: LSVKryZR4z8v6Ca3UNDtYtbX3gbpTHB6Pi

Offline AmazingDreams

  • Administrator
  • Eindbaas
  • *****
  • Berichten: 377
  • Karma: +14/-1
    • Bekijk profiel
    • Guldenplaza.nl
Re: Hoe werkt de e-Gulden?
« Reactie #7 Gepost op: 14 oktober 2014, 15:37:43 »
---- KNIP ----

Ik ga kijken of ik dit verhaal nog enigszins in kan korten, eerst moet ik het nog zelf goed begrijpen.
Donate: LSVKryZR4z8v6Ca3UNDtYtbX3gbpTHB6Pi

Offline bitwise-shifted

  • Administrator
  • Eindbaas
  • *****
  • Berichten: 866
  • Karma: +30/-1
    • Bekijk profiel
Re: Hoe werkt de e-Gulden?
« Reactie #8 Gepost op: 14 oktober 2014, 21:56:13 »
Ik wijs mensen vaak op deze FAQ : https://multibit.org/faq.html
Misschien iets om te vertalen ?
efl: LSt2u7BjW2H4C7bXmwpYdMby9iQc7ZvqAr