Co těžař bitcoinů, stejně jako těžba, ve skutečnosti řeší? Četl jsem, že řeší hashe, ale co to ve skutečnosti znamená. Můžeme vidět, co řeší? Může někdo uvést příklad toho, co vidí těžební bitcoinový stroj vyřešit?
Komentáře
- Související: bitcoin.stackexchange.com/q/148/153
- ok, ale JAKÁ data těžíme! Zdá se, že to nikdo neví. Nezajímá mě ‚ jak to funguje Chci vědět, odkud data pocházejí z této bitové těžby, je dešifrování nebo šifrování.
Odpověď
Pokouší se najít náhodnou nonce (malá náhodná data), která jde do bloku a způsobí, že blok má hash (SHA256), který (v binární podobě) ) začíná určitým množstvím 0 „s. Čím více nul, tím vzácnější hash je. Dobrý hash“ výsledek není předvídatelný, a proto musíte mnohokrát zkusit najít dobrou nonce.
Množství nul je založeno na tom, jak obtížné má být najít blok. V bitcoinu se upravuje tak, aby měl nový blok každých 10 minut (v průměru vzhledem k rychlosti, jakou se nacházejí předchozí bloky).
Zajímavé: protože hashe jsou nepředvídatelné, nezáleží na tom, jak se mění nonce ! Většinou je to jen číslo, které se počítá od 0!
Odpověď
Zde je extrémně zjednodušený náčrt problému, ale měl by poskytnout docela dobrou představu o tom, v čem je problém.
Data:
Toto je hash posledního bloku (zkrácen na 30 znaků):
00000000000001adf44c7d69767585
Tyto jsou hash několika platných transakcí čekajících na zařazení (zkráceno).
5572eca4dd4 db7d0c0b845
A toto je hash jedné speciální transakce, kterou jste právě vytvořili, což dává 25 BTC (aktuální odměna) pro sebe:
916d849af76
Budování dalšího bloku:
Nyní použijme hrubou aproximaci toho, jak může nový blok vypadat (ten skutečný používá binární formát). Obsahuje hash předchozího bloku a hash těchto 3 transakcí:
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
Nyní pojďme těžbu provést ručně! Naším cílem je toto dokončit blok s nonce (kusem odpadu), takže hash nového bloku začíná 13 nulami (s ohledem na předchozí hash se zdá, že aktuální obtížnost je 13 nul!).
Těžba (pokus o dokončení tohoto bloku):
Pojďme to zkusit s nonce = 1 a spočítat hash bloku (používám hash algoritmus md5, ale bitcoin používá dvojitý sha256):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac
Nemám štěstí, hash nezačíná 0 … Zkusme to s nonce = 2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90
Nemám štěstí …
…
Pokud budeme pokračovat do nonce = 16, dostaneme první úvodní nulu.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3
Pro nonce = 208 dostaneme dvě úvodní nuly!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a
Pokračovat takto … Pokud konečně najdete hash, který má 13 úvodních nul … jsi vítěz! Na vašem bloku nyní budou stavět další horníci, právě jste dostali 25 BTC.
Ale vy musíte být rychlí!
Zpět na krok 1…
Pokud se někomu podaří postavit blok dříve než vy, budete muset začít znovu od začátku s novým blokem „s hash (jeden z vítězů).
Komentáře
- Váš příklad také koncepčně směřuje správným směrem, ale skutečný úspěch je když je hash sha256 záhlaví menší než cíl. Příklad cíle:
00000000000001ae00000000000000
je větší než00000000000001adf44c7d69767585
< – to by byl platný hash . - @Reonarudo, ne přesně, toto je velmi zjednodušený náčrt toho, co se skutečně děje. Transakce se provádějí pomocí skriptů, které jsou často vytvářeny z adres, další informace najdete na bitcoinové wiki.
- To v podstatě zní jako pěkné (zjednodušené) shrnutí, ale kdy to bitcoinová síť akceptuje jako další další platný blok a co se stane v (nepravděpodobném) případě, že se dvěma různým horníkům podařilo předložit platný blok téměř současně?
- Páni, skvělá odpověď! Je tu ‚ několik věcí, které se mi stále nedaří ‚ nechat si obejít: Nechť ‚ říkají, že jste ‚ hledali řešení po dobu 6 minut a přichází nová transakce. 1) co se stane teď? pokud musím začít znovu, pak to zní, jako by každý musel začít znovu. Jak tedy může blockchain zaručit nalezení bloku za ~ 10 minut? 2) Jak ke mně ta transakce vůbec přijde?3) Co když najdu řešení pro tento blok a pak mi přijde nová transakce z nějakého jiného uzlu, který ho přijal pro blok, který jsem právě uzavřel?
- 1) Ano, každý začíná znovu, pokud stavíte nad starým blokem je ‚ malá šance, že vaše bloky budou součástí delšího řetězce a zbytek sítě je ignoruje. Neexistuje záruka, že je blok nalezen do 10 minut, je to ‚ pouze průměrný statistický výsledek. 2) Jaká transakce? Bloky vysílá kdokoli, kdo je těžil, a přenáší je dalšími uzly. 3) Nic vás nutí zahrnout všechny nevyřízené transakce, ale čím více transakcí zahrnete, tím více poplatků můžete inkasovat.
Odpovědět
Následuje popis globálního statistického hazardu, který se hraje každých přibližně 10 minut. Interval hry je řízen obtížností , která říká, kolik „hashů“ je na interval potřeba.
Jinými slovy difficulty
a target
definují „šance domu“ na vaši šanci na získání vítězný hash SHA. Oblast nonce
je oblast „stírání“.
Každý hash spotřebovává elektřinu a vydává teplo, které vyžaduje další chlazení.
Takto se provádí každý hash:
Krok 1
Na vysoké úrovni báňský software vezme seznam aktivních transakcí a poté je seskupí do něčeho, čemu se říká „blok“.
Nebo přesněji řečeno: Software pro těžbu pokrývá všechny transakce do souhrnného pohledu, který se nazývá „kořen merkle“, a hashuje jej, což je reprezentativní pro transakce.
Krok 2
Software pro těžbu to poté převede na binární formát zvaný a Záhlaví bloku , které také odkazuje na předchozí bloky (nazývané také řetěz).
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
Krok 3:
Hardware minerů mění malou část tohoto bloku zvanou „nonce“ .
Krok 4:
Záhlaví bloku je hašováno a ve srovnání s Targetem , jako by to bylo prostě velké číslo jako 10 000 000> 7 000 000 (skutečná čísla jsou mnohem větší a v šestnáctce). Cíl je komprimován a uložen v každém bloku v poli zvaném bity.
Rozšířený cíl vypadá takto:
Target 0000000000000083ef00000000000000000000000000000000000000000000000
A cílem je zajistit, aby hash SHA256 bloku byl menší než tato hodnota. V níže uvedeném příkladu je „83ee
“ menší než „83ef
“
Chcete-li tento koncept zjednodušit, můžete použít ballpark cíl spočítáním úvodních nul (jak vysvětluje druhá odpověď zde). Zde je příklad:
Zde je ukázkový blok s transakcemi, které si můžete prohlédnout na BlockChain.info. Podívejte se do pravého horního rohu webové stránky pro tento hash:
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
Ten předchozí hash byl ze dneška a má 14 úvodních nul. Porovnejme to s tím, co bylo potřeba před 3 lety s blokem 100 , který má 8 úvodních nul.
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
Souhrn
Takže na konci dne vše, co horník dělá je:
- Vezměte záhlaví bloku jako vstup
- Změňte Nonce
- Otestujte, zda záhlaví bloku hash je menší než Target. Pokud ano, vyhráváte.
- Přejděte na krok 2 (nebo přejděte na krok 1, pokud blok vyhrál někdo jiný)
Chcete zjistit, co dělá Bitcoin-QT, když najde blok? … Zveřejnil jsem to zde. . Informace v tomto příspěvku budou pomůže vám pochopit, co se stalo.
Komentáře
- Není ‚ daleko nonce (32 bitů) daleko příliš malý na to, aby bylo možné najít hash, který musí začínat 14 úvodními nulami (14×4 = 56 bitů)? Najít takový hash by vyžadovalo průměrně 2 ^ 56/2 pokusů a s 32 bitem ne Před vyčerpáním všech možných hodnot nonce je možné pouze 2 ^ 32 pokusů. Upravit: s časem měnícím se každou sekundu, myslím, že to platí pouze v případě, že hash rychlost překročí 4 GH / s (což si myslím, že ano …)
- Ano, vy ‚ máte pravdu, … z adresy URL v záhlaví bloku:
Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.
odpověď
Těžba poskytuje způsob, jak dosáhnout shody ohledně toho, jak by měla účetní kniha transakcí vypadat, a vědět, že nikdo nepodvádí.
To je netechnická definice těžby .
„Oprávněním“ pro zdvojnásobení výdajů je blockchain. Blockchain se skládá z historie všech bloků v blockchainu plus dalšího bloku transakcí. Dotace na odměnu je v současné době 25 BTC straně, která předloží další blok. Ale hej … chtěli byste těch 25 BTC (v současné době v hodnotě přibližně 825 $), stejně jako já stejně jako všichni ostatní. Jak to tedy udělat, abych nemohl „podvádět a sám si nárokovat blok?“
No, vložíte systém, který vy a já musíme konkurovat. To je to, co dělá důkaz práce – je to tak, že když si nárokuji odměnu, je snadné dokázat, že jsem skutečně vykonal práci, která s tím souvisí. Takže abych měl 2% šanci na vyřešení bloku, musím dát 2% těžební práce. Neexistuje způsob, jak dát do méně než 2% veškeré práce a přesto vyřešit bloky alespoň 2% času (v průměru).
Tedy ve výsledku, když blok transakcí je předloženo, všichni kolegové ověří, že nedošlo k dvojímu utrácení, že byla požadována správná výše dotace a že zadavatel skutečně vynaložil práci nezbytnou pro toto řešení. S těmito třemi pravidly pak není třeba ústřední orgán spravující proces nebo schopný kontrolovat výsledek.