93 / 736SV1

Stratum V1

Jak urządzenie wydobywcze porozumiewa się z pulą

Stratum V1 to wspólny język urządzenia wydobywczego i puli: przekazuje zadania, zwraca wyniki i pozwala mierzyć wykonaną pracę. W 2012 roku przedstawił go Marek Palatinus, znany jako Slush.

Stratum V1 jest protokołem komunikacji przy wspólnym wydobywaniu Bitcoina. Pula wysyła zadania przez utrzymywane połączenie, a urządzenia odsyłają wyniki. Sam protokół nie ustala wynagrodzenia ani zasad ważności bitcoinowych bloków.

Ewa podłączyła ASIC, urządzenie przeznaczone do wydobywania Bitcoina, do puli wydobywczej. Pula koordynuje pracę górników szukających kolejnego bloku, czyli pakietu transakcji, który zostanie dodany do historii Bitcoina. Sama moc obliczeniowa nie wystarcza: maszyna potrzebuje zadania, a pula musi rozpoznać wkład Ewy. Tę rozmowę obsługuje Stratum V1. Pula przesyła dane do poszukiwania kolejnego bloku; maszyna oblicza i odsyła wyniki pośrednie. Podobnie jak język rozmowy telefonicznej protokół pozwala obu stronom się zrozumieć. Nie ustala ceny pracy. Robią to odrębne zasady wynagradzania puli, a ważność znalezionego bloku sprawdzają węzły Bitcoina. [4] [2]

Wraz ze wzrostem wydajności urządzeń starszy getwork stawał się niewygodny. Dostarczał małe porcje pracy, więc trzeba było często prosić o następne. Marek Palatinus przedstawił nową propozycję 11 września 2012 roku. Stratum utrzymuje połączenie otwarte: pula może wysłać zmianę zadania bez czekania na kolejne zapytanie. Zmniejsza to narzut komunikacyjny. Nie zastępuje jednak wszystkich elementów wydobycia. Pula nadal może pobierać projekt bloku od węzła Bitcoina metodą getblocktemplate opisaną w BIP 22. [11] [3] [5]

Oprogramowanie sterujące zwykle najpierw wysyła mining.subscribe, czyli prośbę o otrzymywanie pracy. Dostaje dane połączenia oraz informacje odróżniające jego obliczenia. mining.authorize przypisuje następnie urządzenie do konta. Worker oznacza tu identyfikator maszyny lub połączenia, nie pracownika. Ewa może dzięki temu rozpoznawać kilka maszyn pod jednym kontem. Ewentualne hasło w tej wiadomości samo nie potwierdza tożsamości serwera ani nie szyfruje komunikacji. Udane logowanie nie dowodzi więc bezpieczeństwa połączenia. [2] [13]

mining.notify przynosi zadanie oznaczone job_id. Zawiera powiązanie z poprzednim blokiem, dane dotyczące transakcji, czas i inne informacje nagłówka, czyli zwięzłego zestawu danych o bloku. Ważny jest znacznik clean_jobs. Wartość true nakazuje porzucić stare zadania; false pozwala jeszcze kontynuować poprzednie, przechodząc do nowego. Nie każda nowa wiadomość automatycznie unieważnia zatem wszystkie wyniki w toku. Samo zadanie jest dopiero propozycją do obliczeń, a nie gotowym, ważnym blokiem. [2] [13]

Ta część jest techniczna; zwykłe podłączenie urządzenia nie wymaga znajomości wszystkich pól. Pula dostarcza dwie części transakcji coinbase, za pomocą której wypłacana jest nagroda za blok; nie chodzi o giełdę o tej samej nazwie. Oprogramowanie wstawia między nie extranonce1 przydzielony przez pulę i własny extranonce2, uzyskując kolejne warianty pracy. Z tej transakcji i otrzymanych Merkle branches, pośrednich wartości drzewiastego podsumowania transakcji, oblicza Merkle root. Wraz z odwołaniem do poprzedniego bloku, wersją, czasem i zakodowaną granicą wymaganą dla hasha stanowi on podstawę nagłówka o długości 80 bajtów. ASIC wielokrotnie oblicza jego hash, liczbowy odcisk, zmieniając nonce, czyli liczbę pozwalającą na kolejne próby. [2] [4] [13] [14]

Cały blok znajduje się rzadko. Pula ustala więc łatwiejszy próg wyniku, zwany target. Wynik spełniający ten warunek to mining share, dowód wykonanej pracy. Większość shares nie spełnia ostrzejszego progu sieci Bitcoin; czasem jednak się to udaje i wynik może posłużyć do utworzenia ważnego bloku. mining.set_difficulty oraz automatyczna regulacja vardiff zmieniają trudność shares, aby docierały z rozsądną częstotliwością. Nie zmieniają trudności sieci. Spełnienie trudniejszego warunku wymaga średnio więcej obliczeń, więc taki wynik ma większą wagę przy mierzeniu pracy. Mniejsza liczba trudniejszych shares sama nie oznacza niższego wynagrodzenia: liczy się ich waga i zasady puli. [2] [4] [13]

Przez mining.submit urządzenie wysyła identyfikator workera, job_id, extranonce2, nTime (znacznik czasu w nagłówku) i nonce. Pula odtwarza wynik i go sprawdza. duplicate oznacza powtórne zgłoszenie tej samej pracy, low difficulty wynik niewystarczający, a stale pracę nad zadaniem, którego już się nie przyjmuje. Ewa obserwuje więc odrzucenia i opóźnienia połączenia, nie tylko szybkość maszyny. Nawet zaakceptowany share nie jest jeszcze wypłatą do portfela: Stratum przekazuje pracę, natomiast naliczanie i wypłacanie nagród podlega osobnym zasadom. [2] [13]

BIP 310 z 2018 roku opisuje uzgadnianie dodatkowych możliwości za pomocą mining.configure. Dokument sprawdzony 17 października 2026 roku nadal ma status Draft, czyli projektu. Version-rolling pozwala zmieniać wyłącznie uzgodnione bity wersji nagłówka; po jego uzgodnieniu mining.submit otrzymuje szóste pole. Nie upoważnia to do dowolnej zmiany zasad Bitcoina. minimum-difficulty i subscribe-extranonce dotyczą żądanej minimalnej trudności shares oraz powiadomień o nowych wartościach extranonce. Uzgodnienie możliwości zapobiega nieporozumieniom między programami, ale samo nie zapewnia szyfrowania. [6]

V1 często korzysta z nieszyfrowanego TCP. Bez dodatkowej ochrony ktoś na trasie połączenia może czytać lub zmieniać wiadomości i próbować przekierować pracę. Badanie Hardening Stratum z 2017 roku praktycznie przeanalizowało te zagrożenia. Dotyczą połączenia maszyny z pulą, a nie złamania Bitcoina. W typowej konfiguracji pula wybiera także transakcje do bloku. Ewa jest właścicielką sprzętu, ale nie oznacza to, że ustala zawartość bloku. Węzły Bitcoina nadal odrzucą blok naruszający zasady, nawet jeśli stworzyła go duża pula. [7] [4]

Stratum V2 wprowadza oszczędniejsze wiadomości binarne i połączenie chronione kryptograficznie. Osobny element Job Declaration może pozwalać górnikowi proponować własny zestaw transakcji do bloku, jeżeli obie strony go obsługują i używają. Translator V1/V2 ani sam napis V2 tego nie dowodzi. Ewa powinna sprawdzić obsługę w oprogramowaniu urządzenia, adres serwera, ochronę połączenia, odrzucane wyniki i połączenia zapasowe. Główna myśl V1 jest prosta: dostarczyć zadanie, wykazać obliczenia i oddzielić to od wyboru zawartości bloku oraz wypłaty. [8] [12] [10]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Bitcoin, Wydobywanie, Mining Pool, Braiins, Braiins Pool, Marek „Slush” Palatinus. Do tego hasła prowadzą również odsyłacze z Mining Pool, Marek „Slush” Palatinus, Braiins, Braiins Pool.

DOC · 001Original Stratum mining protocol announcementŹródło pierwotne DOC · 002Bitcoin Wiki — Stratum mining protocolDokumentacja DOC · 003Braiins — Past and future of mining protocolsŹródło pierwotne DOC · 004Bitcoin Developer Guide — Pooled MiningDokumentacja DOC · 005BIP 22 — getblocktemplate fundamentalsŹródło pierwotne DOC · 006BIP 310 — Stratum protocol extensionsŹródło pierwotne DOC · 007Hardening Stratum research paperŹródło pierwotne DOC · 008Stratum V2 Mining Protocol specificationŹródło pierwotne DOC · 009Galaxy Research — Future of Bitcoin mining protocolsDokumentacja DOC · 010Braiins Academy — Stratum V2 ManualDokumentacja DOC · 011Slush — Stratum proposal, 11 September 2012Źródło pierwotne DOC · 012Stratum V2 — Job Declaration ProtocolŹródło pierwotne DOC · 013Original Stratum protocol specification (archived)Źródło pierwotne DOC · 014Bitcoin Developer Reference — Block HeadersŹródło pierwotne
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna