Vad är det för gruvarbeten, vad löser bitcoingruvarbetarna egentligen? Jag läste att de löser hash, men vad betyder det egentligen. Kan vi se vad de löser? Kan någon ge ett exempel på vad en bitcoinbrytningsmaskin ser att lösa?
Kommentarer
- Relaterat: bitcoin.stackexchange.com/q/148/153
- Okej, VILKA data bryter vi! Ingen verkar veta det. Jag bryr mig inte ’ hur det fungerar. Jag vill veta var data kommer ifrån att bitbrytning är dekryptering eller kryptering.
Svar
De försöker hitta en slumpmässig nonce (lite slumpmässiga data) som går in i ett block och gör att blocket har en (SHA256) hash som (i binär ) börjar med en viss mängd av 0 ”s. Ju fler nollar desto mer sällsynt hash är. Ett bra hash” -resultat är inte förutsägbart, och så måste du försöka många gånger för att hitta en bra nonce.
Mängden nollor baseras på hur svårt det är tänkt att vara att hitta ett block. I Bitcoin anpassar den sig till att ha ett nytt block var tionde minut (i genomsnitt, med tanke på den takt med vilken tidigare block hittas).
Intressant: eftersom hasharna är oförutsägbara spelar det ingen roll hur nonce ändras ! För det mesta är det bara ett tal som räknas uppåt från 0!
Svar
Här är en extremt förenklad skiss av problemet, men det borde ge en ganska bra uppfattning om vad problemet är.
Data:
Detta är hash för det senaste blocket (förkortat till 30 tecken):
00000000000001adf44c7d69767585
Dessa är hasharna av några giltiga transaktioner som väntar på att inkluderas (förkortas).
5572eca4dd4 db7d0c0b845
Och det här är en speciell transaktion som du just skapade, vilket ger 25BTC (den nuvarande belöningen) till dig själv:
916d849af76
Bygga nästa block:
Nu ska vi använda en grov approximation av hur ett nytt block kan se ut (det verkliga använder binärt format). Den innehåller hash från föregående block och hash för de tre transaktionerna:
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
Låt oss nu göra gruvdrift för hand! Vårt mål är att slutföra detta blockera med en nonce (en bit sopor) så att hash för det nya blocket börjar med 13 nollor (med tanke på föregående hash, verkar det som om 13 nollor är den aktuella svårigheten!).
= ”9d62b17471”>
Gruvdrift (försöker slutföra detta block):
Låt oss försöka med nonce = 1 och beräkna hash av blocket (jag använder md5-haschalgoritmen, men Bitcoin använder dubbel sha256):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac
Inte tur, hashen börjar inte med en 0 … Låt oss försöka med nonce = 2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90
Ingen tur …
…
Om vi strävar efter tills nonce = 16, vi får vår första ledande nolla.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3
För nonce = 208 får vi två ledande nollor!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a
Fortsätt så här … Om du äntligen hittar en hash som har 13 ledande nollor … du är en vinnare! Andra gruvarbetare kommer nu att bygga på ditt block, du har precis fått 25BTC.
Men du måste vara snabb!
Tillbaka till steg 1…
Om någon lyckas bygga ett block innan du gör det, måste du börja om från början med det nya blocket ”s hash (den av vinnaren).
Kommentarer
- Även ditt exempel går konceptuellt i rätt riktning, men den verkliga framgången är när rubriken sha256 är mindre än målet. Exempelmål:
00000000000001ae00000000000000
är större än00000000000001adf44c7d69767585
< – detta skulle vara en giltig hash . - @Reonarudo, inte exakt, det här är en mycket förenklad skiss av vad som faktiskt görs. Transaktioner görs med skript som ofta görs från adresser, du kan hitta mer information på Bitcoin-wiki.
- Detta låter i grund och botten som en trevlig (förenklad) sammanfattning, men vid vilken tidpunkt accepterar bitcoin-nätverket detta som nästa giltiga block, och vad händer i det (osannolika) fallet att två olika gruvarbetare lyckades skicka in ett giltigt block nästan samtidigt?
- Wow, bra svar! Det finns ’ ett par saker som jag fortfarande inte kunde ’ men jag kan inte ta mitt huvud: Låt ’ säger att du ’ har letat efter en lösning i 6 minuter och det kommer en ny transaktion. 1) vad händer nu? om jag måste börja om, låter det som om alla måste börja om. Hur kan blockchain då garantera att hitta ett block på ~ 10 minuter? 2) Hur kommer transaktionen till mig ändå?3) Vad händer om jag hittar en lösning för detta block och då kommer en ny transaktion till mig från någon annan nod som accepterade det för blocket som jag precis stängde?
- 1) Ja, alla börjar om, om du bygger ovanpå ett gammalt block finns ’ liten chans att dina block kommer att vara en del av den längre kedjan och de kommer att bortses från resten av nätverket. Det finns ingen garanti för att ett block hittas inom tio minuter, det ’ är bara ett genomsnittligt statistiskt resultat. 2) Vilken transaktion? Block sänds av den som bryter dem och vidarebefordras av andra noder. 3) Ingenting tvingar dig att inkludera alla väntande transaktioner, men ju fler transaktioner du inkluderar desto fler avgifter kan du samla in.
Svar
Följande är en beskrivning av det globala, statistiska spel som spelas var tionde minut eller så. Intervallet för spelet styrs av svårigheten som säger hur många ”hashes” som behövs per intervall.
Med andra ord, difficulty
och target
definierar ”husets odds” mot din chans att få en vinnande SHA-hash. nonce
är ”repa av” -området.
Varje hash förbrukar elektricitet och avger värme, vilket kräver ytterligare kylning.
Detta görs med varje hash:
Steg 1
På hög nivå tar gruvarbetaren en lista över aktiva transaktioner och grupperar dem sedan i något som kallas ett ”block”.
Eller mer exakt angivet: Gruvmjukvaran täcker alla transaktioner i en sammanfattningsvy som kallas ”merkle root” och hasar den, vilket är representativ för transaktionerna.
Steg 2
Sedan omvandlar gruvprogramvara detta till ett binärt format som kallas en Blockhuvud , som också refererar till tidigare block (kallas även en kedja).
Field Purpose Updated when... Size (Bytes) Version Block version number You upgrade the software and 4 it specifies a new version hashPrevBlock 256-bit hash of the previous A new block comes in 32 block header hashMerkleRoot 256-bit hash based on all A transaction is accepted 32 the transactions in the block Time Current timestamp as seconds Every few seconds 4 since 1970-01-01T00:00 UTC Bits Current target in compact format The difficulty is adjusted 4 Nonce 32-bit number (starts at 0) A hash is tried (increments) 4
Steg 3:
Minerhårdvaran ändrar en liten del av detta block som kallas ”nonce” .
Steg 4:
Blockhuvudet hashas och jämfört med målet som om det helt enkelt vore ett stort antal som 10 000 000> 7 000 000 (de verkliga siffrorna är mycket större och i hex). Målet komprimeras och lagras i varje block i ett fält som kallas bitar.
Ett utökat mål ser ut så här:
Target 0000000000000083ef00000000000000000000000000000000000000000000000
Och Målet är att se till att SHA256-hash för blocket är mindre än detta värde. I exemplet nedan är ”83ee
” mindre än ”83ef
”
För att förenkla detta koncept kan du ballparkera målet genom att räkna de ledande nollorna (som det andra svaret här förklarar). Här är ett exempel:
Här är ett exempelblock med transaktioner som du kan se på BlockChain.info. Titta i det övre högra hörnet på webbsidan för denna hash:
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
Den tidigare hash var från idag och har 14 ledande nollor. Låt oss jämföra det med vad som behövdes för 3 år sedan med block 100 som har 8 ledande nollor.
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
Sammanfattning
Så i slutet av dagen gör allt en gruvarbetare är:
- Ta en blockrubrik som inmatning
- Ändra Nonce
- Testa om blockrubriken hash är mindre än målet. Om det är så vinner du.
- Gå till steg 2 (eller gå till steg 1 om någon annan vann blocket)
Vill du se vad Bitcoin-QT gör när det hittar ett block? … Jag publicerade det här. . Informationen i det här inlägget kommer att hjälper dig att förstå vad som hände.
Kommentarer
- Är inte ’ t nonce (32 bitar) långt för liten för att kunna hitta en hash som måste börja med 14 ledande nollor (14×4 = 56 bitar)? Att hitta en sådan hash kräver i genomsnitt 2 ^ 56/2 försök och med 32 bitar nej nce endast 2 ^ 32 försök är möjliga innan alla möjliga nonce-värden är uttömda. Redigera: med tiden som ändras varje sekund antar jag att detta bara gäller om hashfrekvensen överstiger 4 GH / sek (vilket jag tror det gör …)
- Yup, du ’ är rätt, … från URL: en i blockhuvudet:
Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.
Svar
Gruvdrift ger ett sätt att nå enighet om hur transaktionsboken ska se ut och veta att ingen fuskar.
Det är den icke-tekniska definitionen av gruvdrift .
”Auktoriteten” för dubbla utgifter är blockchain. Blockchain består av historiken för alla block i blockchain plus nästa block av transaktioner. Belöningssubventionen är för närvarande 25 BTC till den part som skickar nästa block. Men hej … du skulle vilja att 25 BTC (värt för närvarande cirka $ 825) som jag skulle som alla andra. Så hur gör du det så att jag inte kan fuska och göra anspråk på blocket själv?
Tja, du sätter in ett system som du och jag måste tävla med. – det gör det så att när jag gör anspråk på belöningen är det lätt att bevisa att jag verkligen utförde arbetet. Så för att jag ska ha 2% chans att lösa ett block måste jag lägga in 2% av gruvarbetet. Det finns inget sätt för mig att lägga in mindre än 2% av allt arbete och fortfarande lösa block åtminstone 2% av tiden (i genomsnitt).
Således som ett resultat, när ett transaktionsblock inlämnas, verifierar alla kollegor att det inte fanns några dubbla utgifter, att rätt stödbelopp krävdes och att inlämnaren verkligen använde det arbete som var nödvändigt för den lösningen. Med de tre reglerna behöver det inte vara en central myndighet som hanterar processen eller kan kontrollera resultatet.