De opgave is: vindt een hash met bijv. 4 nullen aan
het begin. Het getal 00000a12f….* voldoet daaraan. Wie als eerste een hash
vindt die voldoet, krijgt 12.5 bitcoin uitbetaald.
M.b.v. een hash-algoritme wordt aan een verzameling
transacties (op te vatten als tekst) –bij wijze van samenvatting- een bepaald
getal (hash, digest) toegevoegd. De kleinste verandering levert al een geheel
ander getal op, want de kans dat verschillende teksten dezelfde hash opleveren,
is uitermate klein (1 op de 16 tot de zoveelste).
De crux is dat in de tekst (=verzameling transacties met
meta-gegevens) de rubriek nonce is opgenomen. Je vult 0 in en berekent
de hash. Staan de vereiste nullen aan het begin dan ben je klaar. Zo niet, dan
probeer je 1 uit etc.
Het zoeken via trial&error kost tijd en wel gemiddeld 10
minuten en dat is ook zo gewild. De logica daarvan is, dat bij meer of minder
men de eigen markt zou bederven. Dus als de pc’s sneller worden en/of meer pc’s
worden ingeschakeld dan wordt moeilijkheidsgraad gewoon verhoogd door
het vereiste aantal nullen aan het begin van de hash te verhogen.
Ik word hier niet vrolijk van.
*Hier wordt
gebruik gemaakt van het 16-tallig stelsel. De lengte is 64.
rkh, 04-04-2018
13 opmerkingen:
"De opgave is: vindt een hash met bijv. 4 nullen aan het begin. Het getal 00000a12f….* voldoet daaraan. Wie als eerste een hash vindt die voldoet, krijgt 12.5 bitcoin uitbetaald."
Enkele vragen:
1) wat is "een hash" ? Ik ken alleen het woord "de hash" = hashiesh.
2) Wie betaalt die 12.5 bitcoin ?
3) Hoe kwam de eerste bitcoin tot stand en hoe breidt het aantal bitcoins uit ?
PJ te N
1. Volgende alinea niet voldoende? Voorbeeld:
stel 1- 26 staat voor a-z.
Dus tekst "acdeg" staat voor 13457. Stel het algoritme is: optellen en delen door 7 en neem daarvan de rest (klokrekenen 13=1).
Resultaat: 20/7, wat overblijft is 6. Dit is de hash.
2. Het systeem. Het is puur geldschepping, zoals ook de ECB dan kan doen.
3. Door "het probleem" op te lossen en dat gebeurt dus om de 10 minuten.
Ik ben waarschijnlijk te dom hiervoor. Maar ik waag nog een vraag.
Wat is het verschil tussen de hash 6 en de hash 00006 ? Met andere woorden: hoe kun je een hash niet vinden die met 4 nullen begint, wanneer er geen verschil is tussen 6 en 00006 ? Je zet die 4 nullen toch voor elk willekeurig getal et voila: een hash die met 4 nullen begint.
PJ te N
De lengte van de cijferreeks moet hetzelfde zijn, dus moet je 00006 vergelijken met bijv. 62709.
Stel een cijferreeks van nullen en enen, ter lengte van 5.
Dat zijn dus 32 permutaties (die niet mooi op volgorde liggen mogen).
Eis je geen beginnul dan zijn er 32 mogelijkheden. Altijd raak dus.
Eis je één nul aan het begin, daaraan voldoen 16 permutaties.
2 nullen, 8 permutaties.
Het wordt dus steeds moeilijker de juiste er uit te pikken
n.b.: 16^8 is al 4.294.967.296 (bij 56 nullen vooraf).
Dit brengt mij tot de volgende domme vraag:
Als een hash bijvoorbeeld 6 is, hoe bepaal je dan de lengte van de cijferreeks? Oftewel, hoe weet je hoeveel nullen er voor die 6 moeten komen ?
PJ te N
De lengte van alfanumerieke tekst bepaal je zelf.
Hoe? Bijv. met klokrekenen: 25 mod 12= 1 , lengte is 2, 00 ...... 11
getal mod 23467 = .... De uitkomst is 00000 .... 02457 .... of 23466
Het blijft allemaal adacadabra voor mijn in mist gehulde geest. Kan het zijn dat ik de context waarbinnen deze spelregels gelden, niet ken ?
PJ te N
Je wilt aan een tekst een unieke alfanumerieke string (a09cd ...) koppelen. Je trekt daarvoor de tekst door een programma. Wordt de tekst verandert dan levert dat een andere string op.
In het programma maak je een array van bepaalde lengte aan.
Je vult dat met initiële waarden (altijd dezelfde natuurlijk).
Op basis van de tekst (elke letter en karakter heeft een ascii-waarde) en de bezetting/state van de array verandert die array steeds.
Bytes worden geroteerd, bits schuiven op en worden aangevuld met nullen. etc. etc.
Uiteindelijk zet je getalswaarden om in een string.
En dat is het dan.
Als het mag, wil ik net zo lang vragen stellen tot het mij enigszins begint te dagen.
Stel dat iemand besluit om aan de tekst "van harte gefeliciteerd" een unieke alfanumerieke string te kopelen.
Vraag 1: wat zou een motief kunnen zijn om dit te willen ?
Vraag 2: waarom deze unieke string en niet een andere ?
Vraag 3: Wat kun je bijvoorbeeld voor moois verwachten als je "van harte gefeliciteerd" aan zo'n string hebt gekoppeld ?
PJ te N
1. weet ik niet.
2. Dat komt door het programma. Dat is een volstrekt deterministisch algoritme dat a.h.w. zelf toeval genereert. "van harte gefeliciteerd" levert altijd en overal met dat programma dezelfde uitkomst op.
3. weet ik niet.
Dus als je een tekst in genoemd deterministisch algoritme stopt, komt deze er exact weer zo uit ? Dan heb je dus energie gestoken in iets dat niets toevoegt. Zonde van die energie.
Nooit doen dus, lijkt mij.
PJ te N
Dus als je een tekst in genoemd deterministisch algoritme stopt, komt deze er exact weer zo uit ?
Waar precies heb zo iets onnozels gesteld? Betrek in je antwoord ook "hash".
Ik leid dat af uit : "Dat komt door het programma. Dat is een volstrekt deterministisch algoritme dat a.h.w. zelf toeval genereert. "van harte gefeliciteerd" levert altijd en overal met dat programma dezelfde uitkomst op."
Vraag: als je er "hash" in betrekt, levert dat dan een andere uitkomst op ?
Met excuses voor mijn domheid.
PJ te N
Een reactie posten