Ce rezolvă cu adevărat minerii de bitcoin?

La fel ca în cazul mineritului, ce rezolvă cu adevărat minerii bitcoin? Am citit că rezolvă hashuri, dar ce înseamnă asta cu adevărat. Putem vedea ce rezolvă? Poate cineva să dea un exemplu despre ceea ce vede o soluție de extragere a bitcoinului?

Comentarii

  • În legătură: bitcoin.stackexchange.com/q/148/153
  • Ok, dar ce date extragem! Nimeni nu pare să știe. ‘ nu-mi pasă cum funcționează. Vreau să știu de unde provin datele de pe acel bit de extragere sau decriptare.

Răspuns

Încearcă să găsească un nonce aleatoriu (puține date aleatorii) care intră într-un bloc și face blocul să aibă un hash (SHA256) care ) începe cu o anumită cantitate de 0 „s. Cu cât este mai mult zero, cu atât este mai rar hash. Un rezultat bun de hash” nu este previzibil și, prin urmare, trebuie să încercați de multe ori pentru a găsi o nonce bună.

Cantitatea de zerouri se bazează pe cât de greu ar trebui să fie găsirea unui bloc. În Bitcoin se ajustează pentru a avea un bloc nou la fiecare 10 minute (în medie, având în vedere rata la care se găsesc blocurile anterioare).

Interesant: deoarece hashurile sunt imprevizibile, nu contează cum se modifică nonce ! De cele mai multe ori este doar un număr care crește de la 0!

Răspuns

Iată un extrem schiță simplificată a problemei, dar ar trebui să ofere o idee destul de bună despre care este problema.

Datele:

Acesta este hash-ul ultimului bloc (scurtat la 30 de caractere):

00000000000001adf44c7d69767585 

sunt hashurile câtorva tranzacții valabile care așteaptă includerea (scurtate).

5572eca4dd4 db7d0c0b845 

Și acesta este hash-ul unei tranzacții speciale pe care tocmai ați creat-o, care oferă 25BTC (recompensa actuală) pentru tine:

916d849af76 

Construirea următorului bloc:

Acum, să folosim o aproximare brută a aspectului unui bloc nou (cel real folosește formatul binar). Conține hash-ul blocului anterior și hash-urile celor 3 tranzacții:

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

Acum, să facem mineritul manual! Obiectivul nostru este să finalizăm acest lucru bloc cu un nonce (o bucată de gunoi) astfel încât hash-ul noului bloc începe cu 13 zerouri (având în vedere hash-ul anterior, se pare că 13 zero este dificultatea actuală!).

Mining (încercând să finalizăm acest bloc):

Să încercăm cu nonce = 1 și să calculăm hashul a blocului (folosesc algoritmul hash md5, dar Bitcoin folosește sha256 dublu):

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

Niciun noroc, hash-ul nu începe cu un 0 … Să încercăm cu nonce = 2

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

Fără noroc …

Dacă urmărim până la nonce = 16, primim primul nostru zero zero.

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

Pentru nonce = 208, obținem două zerouri principale!

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

Continuați așa … Dacă găsiți în sfârșit un hash care are 13 zero-uri … ești câștigător! Alți mineri vor construi acum pe blocul tău, tocmai ai 25BTC.

Dar va trebui să fii rapid!

Înapoi la pasul 1 …

Dacă cineva reușește să construiască un bloc înainte de a face acest lucru, va trebui să începeți din nou de la început cu noul bloc „s hash (cel al câștigătorului).

Comentarii

  • De asemenea, exemplul dvs. se îndreaptă conceptual în direcția corectă, dar succesul real este când hash-ul sha256 al antetului este mai mic decât ținta. Exemplu de țintă: 00000000000001ae00000000000000 este mai mare decât 00000000000001adf44c7d69767585 < – acesta ar fi un hash valid .
  • @Reonarudo, nu exact, aceasta este o schiță foarte simplificată a ceea ce se face în mod real. Tranzacțiile se fac cu scripturi care sunt adesea făcute din adrese, puteți găsi mai multe informații pe wiki-ul Bitcoin.
  • Practic sună ca un rezumat frumos (simplificat), dar în ce moment rețeaua bitcoin acceptă acest lucru ca următorul bloc valid și ce se întâmplă în cazul (puțin probabil) în care doi mineri diferiți au reușit să trimită un bloc valid aproape simultan?
  • Uau, răspuns grozav! Există ‘ câteva lucruri pe care încă nu le-am putut ‘ să-mi învârt capul: Să ‘ s spun că ‘ căutați o soluție de 6 minute și vine o nouă tranzacție. 1) ce se întâmplă acum? dacă trebuie să o iau de la capăt, atunci sună de parcă toată lumea trebuie să o ia de la capăt. Atunci cum poate garanta blockchain-ul pentru a găsi un bloc în aproximativ 10 minute? 2) Cum îmi vine acea tranzacție?3) Ce se întâmplă dacă găsesc o soluție pentru acest bloc și apoi îmi vine o nouă tranzacție de la un alt nod care l-a acceptat pentru blocul pe care tocmai l-am închis?
  • 1) Da, toată lumea începe de la capăt, dacă construiești deasupra unui bloc vechi există ‘ puține șanse ca blocurile dvs. să facă parte din lanțul mai lung și vor fi ignorate de restul rețelei. Nu există nicio garanție că un bloc este găsit în decurs de 10 minute, ‘ este doar un rezultat statistic mediu. 2) Ce tranzacție? Blocurile sunt transmise de oricine le-a extras și retransmise de alte noduri. 3) Nimic nu vă obligă să includeți toate tranzacțiile în așteptare, dar cu cât includeți mai multe tranzacții, cu atât puteți percepe mai multe taxe.

Răspuns

Următoarea este o descriere a jocului de noroc global, statistic, care se joacă la fiecare aproximativ 10 minute. Intervalul jocului este controlat de dificultate , care spune câte „hashuri” sunt necesare pe interval.

Cu alte cuvinte, difficulty și target definesc „șansele casei” împotriva șanselor de a obține un hash SHA câștigător. nonce este zona „zero off”.

Fiecare hash consumă electricitate și emite căldură, ceea ce necesită răcire suplimentară.

Iată ce se face cu fiecare hash:

Pasul 1

La un nivel ridicat, software-ul minerului ia o listă de tranzacții active, apoi le grupează împreună în ceva numit „bloc”.

Sau mai precis: Software-ul minerului acoperă toate tranzacțiile într-o vizualizare sumară denumită „rădăcină merkle” și o elimină, care este reprezentativă pentru tranzacții.

Pasul 2

Apoi, software-ul de minerit îl convertește într-un format binar numit a Antet bloc , care face trimitere și la blocurile anterioare (numite și lanț).

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 

Pasul 3:

Hardware-ul minerului modifică o mică porțiune din acest bloc numită „nonce” .

Pasul 4:

Antetul blocului este hash și comparativ cu ținta ca și cum ar fi pur și simplu un număr mare, cum ar fi 10.000.000> 7.000.000 (numerele reale sunt mult mai mari și în hex). Ținta este comprimată și stocată în fiecare bloc într-un câmp numit biți.

O țintă extinsă arată astfel:

 Target 0000000000000083ef00000000000000000000000000000000000000000000000 

Și obiectivul este să vă asigurați că SHA256 hash al blocului este mai mic decât această valoare. În exemplul de mai jos „83ee” este mai mic decât „83ef

Pentru a simplifica acest concept, puteți face un parc țintă prin numărarea zerourilor din partea de sus (așa cum explică celălalt răspuns de aici). Iată un exemplu:

Iată un exemplu de bloc cu tranzacții pe care le puteți vizualiza pe BlockChain.info. Căutați în colțul din dreapta sus a paginii web pentru acest hash:

 Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf 

Acel hash anterior a fost de astăzi și are 14 zerouri principale. Să comparăm acest lucru cu ceea ce era necesar acum 3 ani cu blocul 100 care are 8 zerouri din partea de sus.

 Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899 

Rezumat

Deci, la sfârșitul zilei, tot ceea ce face un miner este:

  1. Luați un antet de bloc ca intrare
  2. Modificați Nonce
  3. Testați dacă antetul blocului hash este mai mic decât Ținta. Dacă este, veți câștiga.
  4. Treceți la pasul 2 (sau treceți la pasul 1 dacă altcineva a câștigat blocul)

Vrei să vezi ce face Bitcoin-QT când găsește un bloc? … L-am postat aici. . Informațiile din această postare vor fi vă ajută să înțelegeți ce s-a întâmplat.

Comentarii

  • Nu este ‘ t nonce (32 biți) departe prea mic pentru a putea găsi un hash care trebuie să înceapă cu 14 zerouri (14×4 = 56 biți)? Găsirea unui astfel de hash ar necesita în medie 2 ^ 56/2 încercări și cu un 32 bit nu doar 2 ^ 32 încercări sunt posibile înainte ca toate valorile posibile nonce să fie epuizate. Editați: odată cu schimbarea timpului în fiecare secundă, cred că acest lucru se aplică numai dacă rata de hash depășește 4 GH / sec (ceea ce cred că face …)
  • Da, tu ‘ e drept, … de la adresa URL din antetul Blocare: Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.

Răspuns

Exploatarea minieră oferă o modalitate de a ajunge la un consens cu privire la ar trebui să arate registrul tranzacțiilor și să știe că nimeni nu înșală.

Aceasta este definiția non-tehnică a mineritului .

„Autoritatea” pentru cheltuielile duble este blockchain-ul. Blockchain-ul constă din istoricul tuturor blocurilor din blockchain plus următorul bloc de tranzacții. Subvenția de recompensă este în prezent de 25 BTC părții care depune următorul bloc. Dar hei … ți-ar plăcea cei 25 de BTC (în prezent, în valoare de aproximativ 825 de dolari), așa cum aș face la fel ca toți ceilalți. Deci, cum reușești ca să nu pot înșela și să revendic eu însumi blocajul?

Ei bine, ai pus într-un sistem pe care tu și cu mine trebuie să concurăm. Asta face dovada muncii. – face ca atunci când cer recompensa să fie ușor să demonstrez că am făcut cu adevărat munca implicată. Deci, pentru ca eu să am o șansă de 2% de a rezolva un bloc, trebuie să introduc 2% din munca minieră. Nu există nicio modalitate pentru mine de a depune mai puțin de 2% din toată munca și de a rezolva blocuri cel puțin 2% din timp (în medie).

Prin urmare, atunci când un bloc de tranzacție este depus, toți colegii verifică dacă nu au existat cheltuieli duble, că s-a solicitat suma corectă a subvenției și că solicitantul a cheltuit cu adevărat munca necesară pentru acea soluție. Cu aceste trei reguli, atunci nu este necesar să existe o autoritate centrală care gestionează procesul sau care poate controla rezultatul.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *