Mit oldanak meg valójában a bitcoin bányászok?

A bányászathoz hasonlóan mit is oldanak meg valójában a bitcoin bányászok? Olvastam, hogy hashokat oldanak meg, de mit is jelent ez valójában. Láthatjuk, mit oldanak meg? Mondhat valaki példát arra, amit egy bitcoin bányászgép lát megoldani?

Megjegyzések

  • Kapcsolódó: bitcoin.stackexchange.com/q/148/153
  • Ok, de MILYEN adatokat bányászunk! Úgy tűnik, senki sem tudja. Nem ‘ nem érdekel, hogy működik, szeretném tudni, hogy az adatok honnan származnak abból a bitbányászatból, ami visszafejtés vagy titkosítás.

Válasz

Megpróbálnak találni egy véletlen nonce-t (egy kis véletlenszerű adatot), amely egy blokkba kerül, és a blokknak van egy (SHA256) hash-ja, amely (bináris ) bizonyos mennyiségű 0 “s-mal kezdődik. Minél több nulla van, annál ritkább a hash. A jó hash” kimenetel nem kiszámítható, ezért sokszor meg kell próbálni egy jó nonce megtalálásához.

A nullák összege azon alapul, hogy állítólag nehéz blokkot találni. A Bitcoin-ban úgy állítja be, hogy minden 10 percben új blokk legyen (átlagosan, figyelembe véve az előző blokkok megtalálási sebességét).

Érdekes: mivel a hashek kiszámíthatatlanok, nem számít, hogy a nonce hogyan változik ! Legtöbbször csak egy szám számít felfelé 0-tól!

Válasz

Itt van egy rendkívül a probléma egyszerűsített vázlata, de elég jó képet kell adnia arról, hogy mi a probléma.

Az adatok:

Ez a legújabb blokk kivonata (30 karakterre rövidítve):

00000000000001adf44c7d69767585 

Ezek néhány érvényes tranzakció kivonata, amelyek várnak felvételre (rövidítve).

5572eca4dd4 db7d0c0b845 

És ez egy speciális tranzakció hashja, amelyet most készítettél, ami 25BTC (a jelenlegi jutalom) magadnak:

916d849af76 

A következő blokk felépítése:

Most használjuk bruttó közelítést arra, hogy milyen lehet egy új blokk (a valódi bináris formátumot használ). Tartalmazza az előző blokk kivonatát és ennek a 3 tranzakciónak a kivonatát:

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

Most végezzük kézzel a bányászatot! Célunk ennek kiteljesítése blokkoljon egy nonce-t (egy darab szemetet) úgy, hogy az új blokk hashja 13 nullával kezdődjön (az előző hash-t figyelembe véve úgy tűnik, hogy a 13 nulla az aktuális nehézség!).

Bányászat (megpróbálja véglegesíteni ezt a blokkot):

Próbálkozzunk a nonce = 1 értékkel, és számítsuk ki a kivonatot a blokkból (I “m az md5 hash algoritmust használom, de a Bitcoin kettős sha256-ot használ):

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

Nincs szerencse, a hash nem 0-val kezdődik … Próbálkozzunk a nonce = 2

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

Nincs szerencsével …

Ha addig folytatjuk nonce = 16, megkapjuk az első vezető nullánkat.

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

A nonce = 208 esetében két vezető nullát kapunk!

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

Folytassa így … Ha végre talál egy hash-ot, amelynek 13 vezető nullája van … győztes vagy! Más bányászok most építenek a blokkjára, most kaptál 25BTC-t.

De gyorsnak kell lenned!

Vissza az 1. lépésre …

Ha valakinek sikerül egy blokkot felépítenie, mielőtt ezt megtenné, akkor újra kell kezdenie az elejétől az új blokkkal “s hash (az egyik nyertes).

Megjegyzések

  • A példád is fogalmilag jó irányba halad, de az igazi siker amikor a fejléc sha256 hash-ja kisebb, mint a cél. Példa cél: 00000000000001ae00000000000000 nagyobb, mint 00000000000001adf44c7d69767585 < – ez érvényes hash lenne .
  • @Reonarudo, nem pontosan, ez egy nagyon leegyszerűsített vázlat arról, hogy mi történik valójában. A tranzakciókat olyan szkriptekkel hajtják végre, amelyek gyakran címekből készülnek, további információkat talál a Bitcoin wikiről.
  • Ez alapvetően szép (egyszerűsített) összefoglalónak hangzik, de a bitcoin hálózat melyik ponton fogadja el ezt mint a következő érvényes blokk, és mi történik abban az (valószínűtlen) eseményben, amikor két különböző bányásznak szinte egyszerre sikerült érvényes blokkot benyújtania?
  • Hú, nagyszerű válasz! ‘ re néhány dolog, amit még mindig nem tudtam ‘ átvenni, bár: ‘ s azt mondja, hogy ‘ 6 percig keresett megoldást, és új tranzakció érkezik. 1) Mi történik most? ha elölről kell kezdenem, akkor ez úgy hangzik, mintha mindenkinek elölről kellene kezdenie. Akkor hogyan garantálja a blokklánc, hogy ~ 10 perc alatt megtalálja a blokkot? 2) Hogyan jön nekem egyáltalán az a tranzakció?3) Mi van, ha találok megoldást erre a blokkra, majd új tranzakció érkezik egy másik csomóponttól, aki elfogadta az imént bezárt blokkhoz?
  • 1) Igen, mindenki újrakezdi, ha építesz egy régi blokk tetején ‘ kicsi az esélye, hogy blokkjai a hosszabb lánc részei lesznek, és a hálózat többi része figyelmen kívül hagyja őket. Nincs garancia arra, hogy egy blokk 10 percen belül megtalálható, ez ‘ csak egy átlagos statisztikai eredmény. 2) Milyen ügylet? A blokkokat az sugározza, aki bányászta őket, és más csomópontok közvetítették őket. 3) Semmi nem kényszeríti az összes függőben lévő tranzakció felvételére, de minél több tranzakciót tartalmaz, annál több díjat szedhet be.

Válasz

Az alábbiakban leírjuk a globális, statisztikai szerencsejátékot, amelyet körülbelül 10 percenként játszanak. A játék intervallumát a nehézség szabályozza, amely megmondja, hogy hány “hash” -ra van szükség intervallumonként.

Más szavakkal, a difficulty és a target meghatározza a “ház esélyét” annak esélye ellen, hogy megszerezze egy nyertes SHA hash. A nonce a “karcolás” terület.

Minden hash áramot fogyaszt és hőt bocsát ki, ami további hűtést igényel.

Ez történik az egyes hash-okkal:

1. lépés

Magas szinten a bányászszoftver felveszi az aktív tranzakciók listáját, majd egy úgynevezett “blokkba” csoportosítja őket.

Vagy pontosabban megfogalmazva: A bányász szoftver az összes tranzakciót összefoglaló nézetbe foglalja, amelyet “merkle root” -nak hívnak, és kivonatolja, amely reprezentálja a tranzakciókat.

2. lépés

Ezután a bányászati szoftver ezt bináris formátumúra konvertálja Blokkfejléc , amely hivatkozik az előző blokkokra (más néven láncra).

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 

3. lépés:

A bányász hardver megváltoztatja ennek a blokknak a “nonce” nevű kis részét .

4. lépés:

A blokkfejléc kivonatolva és a Célhoz képest , mintha egyszerűen nagy szám lenne, például 10 000 000> 7 000 000 (a valós számok) sokkal nagyobbak, és hatszögben). A célt tömörítik és minden blokkban tárolják egy bit nevű mezőben.

A kibővített cél így néz ki:

 Target 0000000000000083ef00000000000000000000000000000000000000000000000 

És a A cél az, hogy megbizonyosodjon arról, hogy a blokk SHA256 kivonata kevesebb, mint ez az érték. Az alábbi példában a “83ee” kisebb, mint a “83ef

A koncepció leegyszerűsítése érdekében ballparkolhat a cél a vezető nullák megszámlálásával (amint azt a másik válasz magyarázza). Íme egy példa:

Itt van egy példa blokk tranzakciókkal, amelyeket a BlockChain.info oldalon tekinthet meg. Nézze meg a jobb felső sarokban ennek a hashnak a weboldala:

 Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf 

Ez az előző hash a mai naptól származik, és 14 vezető nullával rendelkezik. Hasonlítsuk össze a 3 évvel ezelőtti szükségességgel a 100. blokkkal , amelynek 8 elülső nullája van.

 Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899 

Összegzés

Tehát a nap végén minden bányász a következő:

  1. vegyen egy blokkfejlécet bemenetként
  2. módosítsa a Nonce
  3. tesztelését, hogy a blokkfejléc hash értéke kisebb, mint a cél. Ha igen, akkor nyer.
  4. Folytassa a 2. lépéssel (vagy folytassa az 1. lépéssel, ha valaki más nyerte a blokkot)

Szeretné megnézni, hogy mit csinál a Bitcoin-QT, ha blokkot talál? … Ide tettem. . A bejegyzésben szereplő információk segít megérteni, mi történt.

Megjegyzések

  • Nem ‘ nincs messze a nonce (32 bit) túl kicsi ahhoz, hogy megtalálhassunk egy kivonatot, amelynek 14 vezető nullával kell kezdődnie (14×4 = 56 bit)? Egy ilyen kivonat megtalálása átlagosan 2 ^ 56/2 kísérletet igényel, és 32 bites nem Csak 2 ^ 32 kísérlet lehetséges, mielőtt az összes lehetséges nonce érték kimerülne. Szerkesztés: mivel az idő másodpercenként változik, azt hiszem, ez csak akkor érvényes, ha a kivonatolási arány meghaladja a 4 GH / sec értéket (ami szerintem igen …)
  • Igen, te ‘ igaza van, … a blokk fejlécében található URL-ből: Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.

Válasz

A bányászat lehetővé teszi a konszenzus elérését abban, hogy milyen legyen a tranzakciós főkönyv, és tudják, hogy senki nem csal.

Ez a bányászat nem technikai meghatározása .

A kettős költés “hatósága” a blokklánc. A blokklánc a blokklánc összes blokkjának előzményeiből, valamint a tranzakciók következő blokkjából áll. A jutalom-támogatás jelenleg 25 BTC annak a félnek, amely benyújtja a következő blokkot. De hé … tetszene ez a 25 BTC (jelenleg kb. 825 USD), ahogy én is, mint mindenki más. Tehát hogyan csinálod, hogy én ne “csalhassam meg és ne igényelhessem magam a blokkot?

Nos, beiktattál egy rendszert, amelyben neked és nekem versenyeznünk kell. Ezt teszi a munka bizonyítéka – ez azt teszi, hogy amikor a jutalmat követelem, könnyen bebizonyítható, hogy valóban elvégeztem az ezzel járó munkát. Tehát ahhoz, hogy 2% esélyem legyen egy blokk megoldására, be kell tennem a bányamunka 2% -át. Nincs mód arra, hogy az összes munka kevesebb, mint 2% -át betegyem, és az idő legalább 2% -át blokkokkal oldjam meg (átlagosan).

Ennek eredményeként, amikor egy tranzakció blokkol benyújtják, minden társ ellenőrzi, hogy nem történt-e kettős kiadás, a megfelelő összegű támogatást igényelték-e, és hogy a benyújtó valóban elköltötte-e a megoldáshoz szükséges munkát. Ezzel a három szabállyal nem kell a folyamatot irányító vagy az eredményt irányítani képes központi hatóság.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük