Sværhedsgrad

Se også: mål

Hvad er “vanskelighed”?

Sværhedsgrad er et mål for, hvor svært det er at finde en hash under en givet mål.

Bitcoin-netværket har en global blokproblemer. Gyldige blokke skal have en hash under dette mål. Minepuljer har også en poolspecifik andelsproblemer, der indstiller en nedre grænse for delinger.

Hvor ofte ændres netværksproblemerne? 2016 blokerer.

Hvad er formlen for vanskeligheder?

vanskeligheder = vanskeligheder_1_target / current_target

(målet er et 256 bit tal)

vanskeligheder_1_target kan være forskelligt på forskellige måder at måle vanskeligheder. Traditionelt repræsenterer det en hash, hvor de førende 32 bits er nul, og resten er en (dette kaldes “poolvanskelighed” eller “pdiff”). Bitcoin-protokollen repræsenterer mål som en brugerdefineret flydepunkttype med begrænset præcision som et resultat tilnærmer Bitcoin-klienter ofte vanskeligheder baseret på dette (dette kaldes “bdiff”).

Hvordan lagres vanskeligheder i blokke?

Hver blok gemmer en pakket repræsentation ( kaldet “Bits”) for dets faktiske hexadecimale mål. Målet kan afledes fra det via en foruddefineret formel. For eksempel, hvis det pakkede mål i blokken er 0x1b0404cb (gemt i lille endian rækkefølge: cb 04 04 1b), er det hexadecimale mål

0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000

Bemærk, at dette pakkede format indeholder en tegnbit i den 24. bit, og for eksempel vil negationen af ovenstående mål være 0x1b8404cb i pakket format. Da mål aldrig er negative i praksis, betyder det dog, at den største juridiske værdi for de nederste 24 bit er 0x7fffff. Derudover er 0x008000 den mindste lovlige værdi for de nederste 24 bits, da mål altid er gemt med den lavest mulige eksponent.

Hvordan beregnes vanskeligheder? Hvad er forskellen mellem bdiff og pdiff?

Det højest mulige mål (vanskelighed 1) er defineret som 0x1d00ffff, hvilket giver os et hex-mål på

0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

Det skal bemærkes, at pooled mining ofte bruger ikke-afkortede mål, hvilket sætter “pool-vanskelighed 1” ved

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Så vanskeligheden ved 0x1b0404cb er derfor:

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)

Og:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)

Her “er en hurtig måde at beregne bitcoin-sværhedsgrad. Den bruger en modificeret Taylor-serie til logaritmen (du kan se tutorials om flipcode og wikipedia) og er afhængig af logfiler for at omdanne sværhedsberegningen:

For at se matematikken gå fra den normale sværhedsgrad beregninger (som kræver store store inter større end pladsen i ethvert normalt heltal) til beregningen ovenfor, her er noget python:

Hvad er den aktuelle vanskelighed?

Nuværende vanskelighed, som output fra Bitcoins getDifficulty.

Grafer

Hvad er maksimum um sværhedsgrad?

Der er ikke noget minimumsmål. Den maksimale sværhedsgrad er omtrent: maximum_target / 1 (da 0 ville resultere i uendelighed), hvilket er et latterligt stort antal (ca. 2 ^ 224).

Den faktiske maksimale sværhedsgrad er når current_target = 0, men vi ville ikke være i stand til at beregne vanskeligheden, hvis det skete. (heldigvis vil det aldrig, så vi er ok.)

Kan netværksproblemerne gå ned?

Ja det kan. Se diskussionen i målet.

Hvad er den mindste vanskelighed?

Den mindste vanskelighed, når målet er på den maksimalt tilladte værdi, er 1.

Hvilken netværkshashrate resulterer i en given vanskelighed?

Vanskeligheden justeres hver 2016-blok baseret på den tid, det tog at finde de forrige 2016-blokke. Med den ønskede hastighed på en blok hver 10 minutter, ville det tage nøjagtigt to uger at finde 2016-blokke, hvis de foregående 2016-blokke tog mere end to uger at finde, sværhedsgraden er reduceret. Hvis de tog mindre end to uger, øges sværhedsgraden. Ændringen i sværhedsgrad er i forhold til den tid over eller under to uger, som de foregående 2016-blokke tog for at finde .

For at finde en blok skal hashen være mindre end målet. Hashen er faktisk et tilfældigt tal mellem 0 og 2 ** 256-1. Offset for vanskelighed 1 er

0xffff * 2**208

og for vanskeligheder er D

(0xffff * 2**208)/D

Det forventede antal hashes, vi skal beregne for at finde en blok med vanskelighed D, er derfor

D * 2**256 / (0xffff * 2**208)

eller bare

D * 2**48 / 0xffff

Vanskeligheden er indstillet således, at de foregående 2016-blokke ville have været fundet med en hastighed på hvert 10. minut, så vi beregner (D * 2 ** 48 / 0xffff) hashes på 600 sekunder. Det betyder, at netværkets hash-hastighed var

D * 2**48 / 0xffff / 600

i forhold til de foregående 2016-blokke. Kan forenkles yderligere til

D * 2**32 / 600

uden meget tab af nøjagtighed.

Ved vanskelighed 1 er det omkring 7 Mhash pr. Sekund.

I skrivende stund er vanskeligheden 22012.4941572, hvilket betyder, at den gennemsnitlige hash-hastighed over det foregående sæt af 2016-blokke var

22012.4941572 * 2**32 / 600 = around 157 Ghashes per second.

Hvor hurtigt kan jeg forvente at generere en blok?

(Det evige spørgsmål.)

Den gennemsnitlige tid til at finde en blok kan tilnærmes ved at beregne:

time = difficulty * 2**32 / hashrate

hvor vanskelighed er den aktuelle vanskelighed, hashrate er antallet af hashes, som din miner beregner pr. sekund, og tiden er gennemsnittet i sekunder mellem de blokke, du finder.

For eksempel beregner vi den gennemsnitlige tid til at bruge Python til generere en blok ved hjælp af en 1Ghash / s minedrift, når vanskeligheden er 20000:

$ python -c "print 20000 * 2**32 / 10**9 / 60 / 60.0"23.85

og find ud af, at det tager lidt under 24 timer i gennemsnit.

  • Enhver slibning af hash har samme chance for at “vinde” som enhver anden. Antalsspillet er, hvor mange forsøg din hardware kan gøre pr. Sekund.
  • Du skal kende vanskeligheden (ovenfor) og din khash / sek-hastighed (rapporteret af klienten).
    • Minedrift Hardware sammenligning har nogle statistikker, der kan hjælpe dig med at forudsige, hvad du kan få.
  • Besøg en lommeregner eller udfør matematikken selv,
    • http://www.alloscomp.com/bitcoin/calculator.php
    • http://www.vnbitcoin.org/bitcoincalculator.php
    • https://bitknock.com/calculator
  • Husk, det er bare sandsynlighed! Der er ingen garantier for, at du vinder hver N dag.

Relaterede links

  • Bitcoin-vanskelighedshistorie
  • Hvad er Bitcoin Mining-vanskeligheder?
  • Se også: target

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *