Svårighet

Se även: mål

Vad är ”svårighet”?

Svårighet är ett mått på hur svårt det är att hitta en hash under en angivet mål.

Bitcoin-nätverket har en global svårighet att blockera. Giltiga block måste ha en hash under detta mål. Gruvpooler har också en poolspecifik andelsvårighet som anger en lägre gräns för delningar.

Hur ofta ändras nätverksproblemet?

Varje 2016 blockerar.

Vad är formeln för svårighet?

svårighet = svårighet_1_target / current_target

(målet är ett 256-bitarsnummer)

problems_1_target kan vara olika för olika sätt att mäta svårigheter. Traditionellt representerar det en hash där de främsta 32 bitarna är noll och resten är en (detta kallas ”pool-svårighet” eller ”pdiff”). Bitcoin-protokollet representerar mål som en anpassad flytpunkttyp med begränsad precision; som ett resultat uppskattar Bitcoin-klienter ofta svårigheter baserat på detta (detta kallas ”bdiff”).

Hur lagras svårigheter i block?

Varje block lagrar en packad representation ( kallas ”Bits”) för sitt verkliga hexadecimala mål. Målet kan härledas från det via en fördefinierad formel. Till exempel, om det packade målet i blocket är 0x1b0404cb (lagrat i liten endianordning: cb 04 04 1b), är det hexadecimala målet

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

Observera att detta packade format innehåller en teckenbit i den 24: e biten, och till exempel skulle negationen av ovanstående mål vara 0x1b8404cb i packat format. Eftersom mål aldrig är negativa i praktiken betyder det dock att det största juridiska värdet för de lägre 24 bitarna är 0x7fffff. Dessutom är 0x008000 det minsta lagliga värdet för de lägre 24 bitarna eftersom mål alltid lagras med lägsta möjliga exponent.

Hur beräknas svårigheten? Vad är skillnaden mellan bdiff och pdiff?

Det högsta möjliga målet (svårighet 1) definieras som 0x1d00ffff, vilket ger oss ett hex-mål på

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

Det bör noteras att poolad gruvdrift ofta använder icke-trunkerade mål, vilket sätter ”poolproblem 1” vid

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Så svårigheten vid 0x1b0404cb är därför:

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)

Och:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)

Här ”är ett snabbt sätt att beräkna bitcoin-svårigheten. Den använder en modifierad Taylor-serie för logaritmen (du kan se handledning om flipkod och wikipedia) och förlitar sig på loggar för att förändra svårighetsberäkningen:

För att se matematiken för att gå från den normala svårigheten beräkningar (som kräver stora stora inter större än utrymmet i något normalt heltal) till beräkningen ovan, här är lite python:

Vad är den aktuella svårigheten?

Nuvarande svårighet, som utdata från Bitcoins getDifficulty.

Grafer

Vad är maximalt um svårighet?

Det finns inget minimimål. Den maximala svårigheten är ungefär: maximum_target / 1 (eftersom 0 skulle resultera i oändlighet), vilket är ett löjligt stort antal (ca 2 ^ 224).

Den faktiska maximala svårigheten är när current_target = 0, men vi skulle inte kunna beräkna svårigheten om det hände. (lyckligtvis kommer det aldrig, så vi är ok.)

Kan nätverksproblemet gå ner?

Ja det kan. Se diskussionen i målet.

Vad är den minsta svårigheten?

Den minsta svårigheten, när målet är på det maximalt tillåtna värdet, är 1.

Vilken nätverkshashastighet resulterar i en given svårighet?

Svårigheten justeras varje kvartal 2016 baserat på den tid det tog att hitta de tidigare blocken 2016. Vid önskad hastighet på ett block var 10: e minut skulle det ta exakt två veckor att hitta 2016-blocken. det tog mer än två veckor att hitta, svårigheten minskades. Om de tog mindre än två veckor ökade svårigheten. Svårighetsförändringen är proportionell mot tiden över eller under två veckor som föregående 2016-block tog för att hitta .

För att hitta ett block måste hashen vara mindre än målet. Hashen är i själva verket ett slumpmässigt tal mellan 0 och 2 ** 256-1. Offset för svårighet 1 är

0xffff * 2**208

och för svårighet är D

(0xffff * 2**208)/D

Det förväntade antalet hash vi behöver beräkna för att hitta ett block med svårighet D är därför

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

eller bara

D * 2**48 / 0xffff

Svårigheten är inställd så att tidigare 2016-block skulle ha varit hittades i takt med en var 10: e minut, så vi beräknade (D * 2 ** 48 / 0xffff) hash på 600 sekunder. Det betyder att hashhastigheten för nätverket var

D * 2**48 / 0xffff / 600

jämfört med tidigare block 2016. Kan förenklas ytterligare till

D * 2**32 / 600

utan mycket förlust av noggrannhet.

Vid svårighet 1 är det cirka 7 Mhash per sekund.

I skrivande stund är svårigheten 22012.4941572, vilket innebär att under den föregående uppsättningen 2016-block hittades den genomsnittliga nätverkshashastigheten

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

Hur snart kan jag förvänta mig att generera ett block?

(Den eviga frågan.)

Medeltiden för att hitta ett block kan approximeras genom att beräkna:

time = difficulty * 2**32 / hashrate

där svårighet är den aktuella svårigheten, hashrate är antalet hashes som din gruvarbetare beräknar per sekund, och tiden är genomsnittet i sekunder mellan blocken du hittar.

Till exempel, med hjälp av Python beräknar vi den genomsnittliga tiden till generera ett block med en 1Ghash / s gruvrigg när svårigheten är 20000:

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

och upptäck att det tar knappt 24 timmar i genomsnitt.

  • Varje slipning av hashen har samma chans att ”vinna” som alla andra. Antalsspelet är hur många försök din hårdvara kan göra per sekund.
  • Du måste veta svårigheten (ovan) och din khash / sek-hastighet (rapporterad av klienten).
    • Gruvdrift Hårdvarujämförelse har viss statistik som kan hjälpa dig att förutsäga vad du kan få.
  • Besök en miniräknare eller utför matematiken själv,
    • http://www.alloscomp.com/bitcoin/calculator.php
    • http://www.vnbitcoin.org/bitcoincalculator.php
    • https://bitknock.com/calculator
  • Kom ihåg att det bara är sannolikhet! Det finns inga garantier att du vinner varje N-dag.

Relaterade länkar

  • Bitcoin-svårighetshistorik
  • Vad är Bitcoin Mining Difficulty?
  • Se även: target

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *