woensdag, april 04, 2018

Puzzelen voor bitcoins

Er wordt geframed dat de miners die de bitcoins delven, voor complexe problemen staan. Alsof voor het oplossen daarvan intelligentie nodig is. Maar alles behalve dat: het gaat om brute kracht. Het is een spel dat ook nog eens veel energie kost. De schatting is, dat het totale energieverbruik overeenkomt met het verbruik van een land als Denemarken.

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:

Anoniem zei

"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

DIXI zei


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.

Anoniem zei

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

DIXI zei

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).

Anoniem zei

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

DIXI zei

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

Anoniem zei

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

DIXI zei

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.

Anoniem zei

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

DIXI zei

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.

Anoniem zei

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

DIXI zei

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".

Anoniem zei

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