Se også: mål
Hva er «vanskeligheter»?
Vanskelighetsgrad er et mål på hvor vanskelig det er å finne en hash under en gitt mål.
Bitcoin-nettverket har en global blokkproblematikk. Gyldige blokker må ha en hash under dette målet. Mining-bassenger har også en bassengspesifikk delingsproblematikk som setter en nedre grense for delinger.
Hvor ofte endres nettverksproblemene? 2016 blokkerer.
Hva er formelen for vanskeligheter?
vanskeligheter = vanskelighetsgrad_1_mål / nåværende mål
(målet er et 256-bit tall)
Vanskelighets_1_mål kan være forskjellig for forskjellige måter å måle vanskeligheter på. Tradisjonelt representerer den en hash hvor de ledende 32 bitene er null og resten er en (dette er kjent som «bassengproblemer» eller «pdiff»). Bitcoin-protokollen representerer mål som en tilpasset flytpunktstype med begrenset presisjon; som et resultat tilnærmer Bitcoin-klienter ofte vanskeligheter basert på dette (dette kalles «bdiff»).
Hvordan lagres vanskeligheter i blokker?
Hver blokk lagrer en fullstendig representasjon ( kalt «Bits») for sitt faktiske heksadesimale mål. Målet kan avledes fra det via en forhåndsdefinert formel. Hvis for eksempel det pakkede målet i blokken er 0x1b0404cb (lagret i liten endian rekkefølge: cb 04 04 1b
), er det heksadesimale målet
0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000
Merk at dette pakkede formatet inneholder en tegnbit i den 24. biten, og for eksempel vil negasjonen av målet ovenfor være 0x1b8404cb i pakket format. Siden mål aldri er negativt i praksis, betyr det imidlertid at den største juridiske verdien for de nedre 24 bitene er 0x7fffff. I tillegg er 0x008000 den minste lovlige verdien for de nedre 24 bitene, siden mål alltid er lagret med lavest mulig eksponent.
Hvordan beregnes vanskeligheter? Hva er forskjellen mellom bdiff og pdiff?
Det høyest mulige målet (vanskelighetsgrad 1) er definert som 0x1d00ffff, noe som gir oss et heksemål på
0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
Det skal bemerkes at samlet gruvedrift ofte bruker ikke-avkortede mål, noe som setter «bassengproblematikk 1» ved
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Så vanskeligheten ved 0x1b0404cb er derfor:
0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)
Og:
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)
Her «er en rask måte å beregne bitcoin-vanskeligheter. Den bruker en modifisert Taylor-serie for logaritmen (du kan se veiledninger om flipcode og wikipedia) og er avhengig av logger for å transformere vanskelighetsberegningen:
For å se matematikken for å gå fra den normale vanskeligheten beregninger (som krever store store inter større enn plassen i et normalt heltall) til beregningen ovenfor, her er litt python:
Hva er den nåværende vanskeligheten?
Nåværende vanskelighetsgrad, som utdata fra Bitcoins getDifficulty.
Grafer
Hva er maksimum um vanskeligheter?
Det er ikke noe minimumsmål. Maksimal vanskelighetsgrad er omtrent: maximum_target / 1 (siden 0 ville resultere i uendelig), som er et latterlig stort tall (ca. 2 ^ 224).
Den faktiske maksimale vanskeligheten er når current_target = 0, men vi ville ikke være i stand til å beregne vanskeligheten hvis det skjedde. (heldigvis vil det aldri, så vi er ok.)
Kan nettverksproblemene gå ned?
Ja det kan. Se diskusjonen i målet.
Hva er den minste vanskeligheten?
Minimumsvanskeligheten, når målet er på den maksimalt tillatte verdien, er 1.
Hvilken hashhastighet på nettverket resulterer i en gitt vanskelighetsgrad?
Vanskeligheten justeres hver 2016-blokk ut fra tiden det tok å finne de forrige 2016-blokkene. Med ønsket hastighet på en blokk hvert tiende minutt, vil det ta nøyaktig to uker å finne 2016-blokker. tok mer enn to uker å finne, reduseres vanskeligheten. Hvis det tok mindre enn to uker, økes vanskeligheten. Endringen i vanskeligheter er proporsjonal med tiden over eller under to uker de forrige 2016-blokkene tok å finne .
For å finne en blokk må hasjen være mindre enn målet. Hashen er faktisk et tilfeldig tall mellom 0 og 2 ** 256-1. Offset for vanskelighetsgrad 1 er
0xffff * 2**208
og for vanskelighetsgrad er D
(0xffff * 2**208)/D
Det forventede antall hashes vi trenger å beregne for å finne en blokk med vanskelighetsgrad D er derfor
D * 2**256 / (0xffff * 2**208)
eller bare
D * 2**48 / 0xffff
Vanskeligheten er satt slik at de forrige 2016-blokkene ville vært funnet med en hastighet på hvert 10. minutt, så vi beregnet (D * 2 ** 48 / 0xffff) hashes på 600 sekunder. Det betyr at hash-hastigheten til nettverket var
D * 2**48 / 0xffff / 600
over de forrige 2016-blokkene. Kan forenkles videre til
D * 2**32 / 600
uten mye tap av nøyaktighet.
Ved vanskelighetsgrad 1 er det rundt 7 Mhash per sekund.
I skrivende stund er vanskeligheten 22012.4941572, som betyr at i løpet av forrige sett med 2016-blokker fant den gjennomsnittlige nettverkshash-hastigheten
22012.4941572 * 2**32 / 600 = around 157 Ghashes per second.
Hvor snart kan jeg forvente å generere en blokk?
(Det evige spørsmålet.)
Gjennomsnittlig tid for å finne en blokk kan tilnærmes ved å beregne:
time = difficulty * 2**32 / hashrate
der vanskeligheten er den nåværende vanskeligheten, er hashrate antall hashes miner som min beregner per sekund, og tiden er gjennomsnittet i sekunder mellom blokkene du finner.
For eksempel beregner vi gjennomsnittlig tid til å bruke Python til generer en blokk ved hjelp av en 1Ghash / s gruvedrift når vanskeligheten er 20000:
$ python -c "print 20000 * 2**32 / 10**9 / 60 / 60.0"23.85
og finn at det tar litt under 24 timer i gjennomsnitt.
- Enhver sliping av hasjen har samme sjanse for å «vinne» som alle andre. Tallspillet er hvor mange forsøk maskinvaren din kan gjøre per sekund.
- Du må vite vanskeligheten (ovenfor) og khash / sek-hastigheten din (rapportert av klienten).
- Gruvedrift Maskinvaresammenligning har noen statistikker som kan hjelpe deg med å forutsi hva du kan få.
- Besøk en kalkulator eller utfør matematikken selv,
- http://www.alloscomp.com/bitcoin/calculator.php
- http://www.vnbitcoin.org/bitcoincalculator.php
- https://bitknock.com/calculator
- Husk at det bare er sannsynlighet! Det er ingen garantier for at du vil vinne hver N dag.
Relaterte lenker
- Bitcoin-vanskelighetshistorie
- Hva er Bitcoin Mining Vanskelighetsgrad?
- Se også: target