Zagadka bez skrótów
Kopalnia bitcoina polega na brutalnym przeszukiwaniu liczby – nonce’u – takiego, że haszowanie zawartości bloku wraz z tym nonce’em za pomocą SHA-256 generuje wynik poniżej określonego progu. SHA-256 jest funkcją skrótu kryptograficznego: deterministyczna (dla tych samych danych wejściowych zawsze daje ten sam wynik), ale nieznana w żaden sposób, aby przewidzieć lub odwrócić proces i określić, które dane wejściowe dają który wynik. Jedynym znanym sposobem na znalezienie działającego nonce’u jest próbowanie kandydatów jeden po drugim i sprawdzanie.
SHA256( SHA256( block_header || nonce ) ) < target
block_header = previous block hash, Merkle root of transactions, timestamp, difficulty bits, nonce
target = a 256-bit number; smaller target = harder puzzle
(equivalently: hash must start with enough leading zero bits)
Dlaczego dostosowanie to trudności, a nie wysiłku
Ponieważ SHA-256's output jest, w tym celu, niezrównanie do losowej liczby 256-bitowej dla każdego nonce próbowanego, znalezienie hashu poniżej danego celu to doświadczenie Bernoulliego powtarzane raz za razem: każdy atak ma ustaloną, niewielką prawdopodobieństwo p sukcesu równe target/2²⁵⁶ i ataki są niezależne, więc liczba prób potrzebna do znalezienia prawidłowego nonce jest rozkładem geometrycznym. Oczekiwana liczba prób hashu w celu znalezzenia prawidłowego nonce to dokładnie 1/p — nie ma sposobu na szukanie sprytniej, tylko szybciej (więcej prób na sekundę) lub równolegle na wielu maszynach, co jest dokładnie tym, dlaczego sprzęt do wydobywania ewoluował z CPU do GPU do specjalnie zaprojektowanych ASICów polujących na czysty hash-rate.
Cel targetu 10-minutowego i automatycznej regulacji trudności
Protokoł Bitcoina celuje w nowy blok mniej więcej co 10 minut, niezależnie od tego, ile całkowitej mocy obliczeniowej (sieciowy hashrate) jest skierowane na sieć w danym momencie. Robi to za pomocą samoregulującego się mechanizmu zwrotnego: co 2016 bloków (około dwóch tygodni przy celu 10 minutowym), sieć ponownie oblicza cel trudności, opierając się o to, jak długo poprzednich 2016 bloków zajęło znalezienie.
nowy_target = old_target × (actual_time_for_2016_blocks / expected_time_of_20160_min) hashrate rośnie → bloki znalezione szybciej niż 10 min → target się zmniejsza → zagadka staje się trudniejsza hashrate spada → bloki znalezionie wolniej niż 10 min → target rośnie → zagadka staje się łatwiejsza Jest to bezpośrednia pętla sprzężona zwrotna na powyższej formule oczekiwanych prób, ponieważ oczekiwane próby skalują się jako 1/target, zmniejszanie celu bezpośrednio zwiększa oczekiwaną pracę na blok dokładnie o czynnik potrzebny do zrównoważenia wzrostu sieciowego średniego hashrate, utrzymując średni czas bloku blisko 10 minut niezależnie od tego, czy sieć ma dziesięć komputerów, czy też dziesięć milionów skierowanych na nią.
new_target = old_target × (actual_time_for_2016_blocks / expected_time_of_20160_min) hashrate rises → blocks found faster than 10 min → target shrinks → puzzle gets harder hashrate falls → blocks found slower than 10 min → target grows → puzzle gets easier
Dlaczego dowód pracy zabezpiecza łańcuch
Argument bezpieczeństwa dotyczy w całości kosztów, a nie tajemnic. Każde nagłówek bloku zawiera hash poprzedniego bloku, więc zmiana jakiegokolwiek poprzedniego bloku zmieniłby jego hash, łamiąc połączenie łańcucha z każdym blokiem po nim — atakujący musiałby ponownie wykonać dowód pracy dla tego bloku i każdego następnego bloku, wyprzedzając w tym tempie cały, uczciwy sieć hashrate zanim ich alternatywny łańcuch zostanie nawet zaakceptowany (zasada Bitcoina mówi o podążaniu się za dowolnym ważnym łańcuchem reprezentującym największą sumę dowodu pracy). Dla obecnej sieci Bitcoin, ponowne wykonanie nawet niewielkiej ilości bloków w tempie szybszym niż reszta świata sprzętu górniczego jest ekonomicznie i fizycznie niedorzeczny — bezpieczeństwo nie pochodzi z zagadnienia, że łamigłówka jest nierozwiązywalna, tylko z faktu, że jest tak kosztowne, aby rozwiązać ją w wymaganej skali, że uczciwa górnictwo zawsze jest bardziej opłacalną strategią.
Co animacja w rzeczywistości przedstawia
Ta animacja ilustruje dokładnie proces poszukiwania nonce, który opisano powyżej: próba nonce, jej haszowanie, sprawdzanie, czy jest zgodne z celem, inkrementacja i powtórzenie tego procesu miliony lub miliardy razy na sekundę na rzeczywistych maszynach górniczych, tutaj wizualizowane w sposób zrozumiały dla nas. Obok niej widzimy skalowany, zmniejszony o 2016 blok, mechanizm automatycznej regulacji trudności, który realnie wykonuje sieć Bitcoin, aby można było obserwować, jak cel się kurczy lub rozszerza wraz ze zmianą symulowanego hashowania, utrzymując średni czas między blokami blisko 10 minut niezależnie od tego, czy górnictwo odbywa się szybko, czy wolno.
Frequently asked questions
Dlaczego szybszy komputer nie może po prostu zgadnąć poprawnego nonce bezpośrednio?
Ponieważ SHA-256 jest funkcją skrótu kryptograficznym, której nie ma znanych obejść: jej wyjście dla danego wejścia jest, w praktyce, niezmienne i wygląda jak równomiernie losowe. Jedynym sposobem na znalezienie nonce, które generuje hash poniżej celu, jest wyczerpujące próbowanie i błędy — zwiększona moc obliczeniowa jedynie pozwala na próbę większej liczby kandydatów na sekundę, a nie inteligentniejsze zgadywanie.
Dlaczego Bitcoin dostosowuje trudność wydobywania?
Aby utrzymać średni czas między blokami bliski 10 minutom, nawet gdy całkowita moc obliczeniowa skierowana na sieć zmienia się w czasie. Co 2016 bloków protokół porównuje rzeczywisty czas trwania tej partii z docelowym 2-tygodniowym i skaluje trudność proporcjonalnie — trudniejszą, jeśli bloki pojawiały się zbyt szybko, łatwiejszą, jeśli pojawiały się zbyt wolno.
Co w rzeczywistości sprawia, że łańcuch bloków jest bezpieczny przed manipulacją?
Koszt, a nie tajemnica. Każdy blok linkuje się do poprzedniego za pomocą swojego hasha, więc zmiana starego bloku psuje wszystkie hasze po nim, zmuszając atakującego do przeprowadzania dowodu pracy dla tego bloku i wszystkich kolejnych w wystarczającym tempie, aby prześcignąć sumę hashrate uczciwej sieci. Dla jakiejkolwiek realnej sumy hashrate, jest to ekonomicznie niedorzeczny, co stanowi całą gwarancję bezpieczeństwa — nie że zagadka może być rozwiązana, ale że fałszywe rozwiązywanie jej szybciej niż wszyscy inni w połączeniu jest niemożliwe.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Bitcoin Mining i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Bitcoin Mining