Hvad løser bitcoin minearbejdere virkelig?

Hvad med minearbejdere, som med minedrift, løser egentlig? Jeg læste, de løser hash, men hvad betyder det virkelig. Kan vi se, hvad de løser? Kan nogen give et eksempel på, hvad en bitcoin-minedrift ser at løse?

Kommentarer

  • Relateret: bitcoin.stackexchange.com/q/148/153
  • Ok, men hvilke data udvinder vi! Ingen ser ud til at vide det. Jeg bryder mig ikke ‘ hvordan det fungerer. Jeg vil gerne vide, hvor dataene kommer fra, at bit mining er dekryptering eller kryptering.

Svar

De forsøger at finde en tilfældig nonce (lidt tilfældige data), der går ind i en blok og får blokken til at have en (SHA256) hash (binær ) starter med en vis mængde på 0 “s. Jo flere nuller jo mere sjælden hash er. Et godt hash” -resultat er ikke forudsigeligt, og så du skal prøve mange gange for at finde en god nonce.

Mængden af nuller er baseret på hvor svært det formodes at være at finde en blok. I Bitcoin tilpasser det sig at have en ny blok hvert 10. minut (i gennemsnit i betragtning af den hastighed, hvormed tidligere blokke findes).

Interessant: fordi hashen er uforudsigelig, betyder det ikke noget, hvordan nonce ændres ! Det meste af tiden er det bare et tal, der tæller opad fra 0!

Svar

Her er en ekstremt forenklet skitse af problemet, men det skal give en ret god idé om, hvad problemet er.

Dataene:

Dette er hash for den sidste blok (forkortet til 30 tegn):

00000000000001adf44c7d69767585 

Disse er hash af et par gyldige transaktioner, der venter på inkludering (forkortet).

5572eca4dd4 db7d0c0b845 

Og dette hash af en speciel transaktion, som du lige har lavet, hvilket giver 25BTC (den aktuelle belønning) til dig selv:

916d849af76 

Opbygning af næste blok:

Lad os nu bruge en grov tilnærmelse af, hvordan en ny blok kan se ud (den virkelige bruger binært format). Den indeholder hash fra den foregående blok og hashes af disse 3 transaktioner:

00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76-- 

Lad os nu lave minedrift i hånden! Vores mål er at gennemføre dette blok med en nonce (et stykke affald), således at hash af den nye blok starter med 13 nuller (i betragtning af den forrige hash ser det ud til, at 13 nuller er den aktuelle vanskelighed!).

Minedrift (forsøger at færdiggøre denne blok):

Lad os prøve med nonce = 1 og beregne hash af blokken (jeg bruger md5-hash-algoritmen, men Bitcoin bruger dobbelt sha256):

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac 

Intet held, hashen starter ikke med en 0 … Lad os prøve med nonce = 2

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90 

Intet held …

Hvis vi forfølger indtil nonce = 16, vi får vores første førende nul.

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3 

For nonce = 208 får vi to førende nuller!

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a 

Fortsæt sådan … Hvis du endelig finder en hash, der har 13 førende nuller … du er en vinder! Andre minearbejdere bygger nu på din blok, du har lige fået 25BTC.

Men du skal være hurtig!

Tilbage til trin 1…

Hvis nogen formår at opbygge en blok, før du gør det, skal du starte igen fra starten med den nye blok “s hash (en af vinderen).

Kommentarer

  • Også dit eksempel går konceptuelt i den rigtige retning, men den virkelige succes er når sha256-hash af overskriften er mindre end målet. Eksempelmål: 00000000000001ae00000000000000 er større end 00000000000001adf44c7d69767585 < – dette ville være et gyldigt hash .
  • @Reonarudo, ikke ligefrem, dette er en meget forenklet skitse af, hvad der faktisk gøres. Transaktioner foretages med scripts, der ofte er lavet fra adresser, du kan finde mere info på Bitcoin wiki.
  • Dette lyder grundlæggende som en flot (forenklet) oversigt, men på hvilket tidspunkt accepterer bitcoin-netværket dette som den næste gyldige blok , og hvad sker der i det (usandsynlige) tilfælde, at to forskellige minearbejdere formåede at indsende en gyldig blok næsten samtidigt?
  • Wow, godt svar! Der er ‘ et par ting, som jeg stadig ikke kunne ‘ ikke får mit hoved rundt: Lad ‘ s siger, at du ‘ har søgt efter en løsning i 6 minutter, og der kommer en ny transaktion. 1) hvad sker der nu? hvis jeg skal starte forfra, lyder det som om alle skal starte forfra. Så hvordan kan blockchain garantere at finde en blok på ~ 10 minutter? 2) Hvordan kommer den transaktion alligevel til mig?3) Hvad hvis jeg finder en løsning til denne blok, og så kommer en ny transaktion til mig fra en anden knude, der accepterede den for den blok, jeg lige lukkede?
  • 1) Ja, alle starter forfra, hvis du bygger oven på en gammel blok er ‘ lille chance for, at dine blokke vil være en del af den længere kæde, og de vil blive ignoreret af resten af netværket. Der er ingen garanti for, at en blok finder inden for 10 minutter, det ‘ er bare et gennemsnitligt statistisk resultat. 2) Hvilken transaktion? Blokke udsendes af den, der udvinder dem, og videreformidles af andre noder. 3) Intet tvinger dig til at medtage alle ventende transaktioner, men jo flere transaktioner du inkluderer, jo flere gebyrer kan du opkræve.

Svar

Det følgende er en beskrivelse af det globale, statistiske spil, der spilles hvert 10. eller deromkring minut. Intervallet for spillet styres af vanskeligheden , der siger, hvor mange “hashes” der er behov for pr. Interval.

Med andre ord definerer difficulty og target “husets odds” mod din chance for at få en vindende SHA-hash. nonce er området “ridse af”.

Hver hash forbruger elektricitet og udsender varme, hvilket kræver yderligere køling.

Dette gøres med hver hash:

Trin 1

På et højt niveau tager minearbejdersoftwaren en liste over aktive transaktioner og grupperer dem derefter sammen i noget, der kaldes en “blok”.

Eller mere præcist angivet: Minearmsoftwaren dækker alle transaktionerne i en oversigtsvisning kaldet en “merkle root” og hasher den, hvilket er repræsentativ for transaktionerne.

Trin 2

Så konverterer minesoftware dette til et binært format kaldet en Block Header , som også henviser til de foregående blokke (også kaldet en kæde).

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 

Trin 3:

Minearbejderens hardware ændrer en lille del af denne blok kaldet en “nonce” .

Trin 4:

Blokoverskrift er hash og sammenlignet med målet som om det simpelthen var et stort antal som 10.000.000> 7.000.000 (de reelle tal er meget større og i hex). Målet komprimeres og lagres i hver blok i et felt kaldet bits.

Et udvidet mål ser sådan ud:

 Target 0000000000000083ef00000000000000000000000000000000000000000000000 

Og Målet er at sikre, at SHA256-hash for blokken er mindre end denne værdi. I eksemplet nedenfor er “83ee” mindre end “83ef

For at forenkle dette koncept kan du ballparkere målet ved at tælle de førende nuller (som det andet svar her forklarer). Her er et eksempel:

Her er en prøveblok med transaktioner, du kan se på BlockChain.info. Se i øverste højre hjørne af websiden til denne hash:

 Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf 

Den tidligere hash var fra i dag og har 14 førende nuller. Lad os sammenligne det med det, der var nødvendigt for 3 år siden med blok 100 , som har 8 nuller, der fører foran.

 Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899 

Resumé

Så i slutningen af dagen gør alt en minearbejder er:

  1. Tag en blokoverskrift som input
  2. Skift nonce
  3. Test om blokoverskrift hash er mindre end målet. Hvis det er tilfældet, vinder du.
  4. Gå til trin 2 (eller gå til trin 1, hvis en anden vandt blokken)

Vil du se, hvad Bitcoin-QT gør, når den finder en blok? … Jeg sendte den her. . Oplysningerne i dette indlæg vil hjælper dig med at forstå, hvad der skete.

Kommentarer

  • Er ikke ‘ t nonce (32 bits) langt for lille til at kunne finde en hash, der skal starte med 14 førende nuller (14×4 = 56 bit)? At finde en sådan hash vil i gennemsnit kræve 2 ^ 56/2 forsøg og med en 32 bit nej nce kun 2 ^ 32 forsøg er mulige, før alle mulige nonce-værdier er opbrugt. Rediger: når tiden skifter hvert sekund, antager jeg, at dette kun gælder, hvis hashhastigheden overstiger 4 GH / sek (hvilket jeg tror, det gør …)
  • Yup, du ‘ har ret, … fra URLen på blokoverskriften: Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.

Svar

Minedrift giver en måde at nå konsensus om, hvordan transaktionsbogen skal se ud og vide, at ingen snyder.

Det er den ikke-tekniske definition af minedrift .

“autoriteten” til dobbelt udgift er blockchain. Blockchain består af historikken for alle blokke i blockchain plus den næste blok af transaktioner. Belønningsstøtten er i øjeblikket 25 BTC til den part, der sender den næste blok. Men hej … du vil gerne have de 25 BTC (værd i øjeblikket ca. $ 825), ligesom jeg ville gøre som alle andre. Så hvordan får du det til, at jeg ikke kan snyde og hævde blokken selv?

Nå, du sætter et system ind, som du og jeg er nødt til at konkurrere. Det er hvad beviset på arbejde gør – det gør det så, at når jeg hævder belønningen, er det let at bevise, at jeg virkelig gjorde det involverede arbejde. Så for mig at have en 2% chance for at løse en blok, skal jeg lægge 2% af minearbejdet. Der er ingen måde for mig at lægge mindre end 2% af alt arbejdet på og stadig løse blokke mindst 2% af tiden (i gennemsnit).

Således som et resultat, når en transaktionsblok indsendes, kontrollerer alle jævnaldrende, at der ikke var nogen dobbelte udgifter, at der blev krævet det rigtige subsidiebeløb, og at indsenderen virkelig brugte det arbejde, der var nødvendigt for den løsning. en central myndighed, der styrer processen eller er i stand til at kontrollere resultatet.

Skriv et svar

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