ASICBoost to optymalizacja wydobycia bitcoinów, która ponownie wykorzystuje część pracy przy obliczaniu hashy, cyfrowych odcisków nagłówków bloków. Obniża niektóre koszty prób, ale nie łagodzi warunku, który musi spełnić udany hash. Wymaga odpowiedniego przygotowania zadań i konstrukcji układu obliczeniowego.
Przy podobnych zamówieniach wspólne dane można przygotować raz, choć każde zamówienie nadal trzeba zakończyć osobno. Tak można przybliżyć ideę ASICBoost. Timo Hanke opisał ją w 2016 roku, wskazując współpracę z Sergiem Demianem Lernerem. ASIC to układ przeznaczony do konkretnego zadania obliczeniowego; zmiana organizacji pracy ogranicza powtórzenia. Nie zmienia ani SHA-256, używanej funkcji skrótu, ani reguł sieci Bitcoin. Końcowy podwójny hash nagłówka nadal musi być nie większy niż wartość docelowa, a cały blok musi być poprawny. [1]
Bajt to jednostka służąca do mierzenia rozmiaru danych cyfrowych. Nagłówek jest krótkim podsumowaniem danych bloku i zajmuje 80 bajtów. Pierwsze hashowanie przetwarza 64 bajty, a następnie pozostałe 16 wraz z wymaganym dopełnieniem. Merkle root, wspólny odcisk transakcji, przecina tę granicę: ostatnie 4 bajty znajdują się w drugiej części. Obok są czas, bits, czyli zwarty zapis celu wydobycia, oraz nonce, licznik zmieniany między próbami. Od zmienianych pól zależy więc, które obliczenia można ponownie wykorzystać. [1]
Hanke nazywa odpowiednio dobrane zadania colliding work items. Ich pierwsze części nagłówków różnią się i dają różne midstate, czyli pośrednie stany obliczeń. Identyczna pozostaje część określona jako Message. Dla wybranego nonce można współdzielić message schedule, zestaw pomocniczych wartości do przetwarzania drugiej części pierwszego SHA-256. Dalej obliczenia biegną oddzielnie od różnych stanów pośrednich. Nie oznacza to identycznych końcowych hashy ani złamania funkcji. Kolizja dotyczy tu wybranego fragmentu danych wejściowych; pierwsze części nagłówków są różne. [1]
Sergio Demian Lerner rozróżnia overt i covert ASICBoost. Overt zmienia dozwolone bity nVersion, pola wersji nagłówka, bez szukania częściowej zgodności Merkle root. Covert jej szuka: ostatnie 4 bajty Merkle root pozostają takie same, a pierwsza część się zmienia. Można zmieniać dozwolone dane transakcji lub ich kolejność, zachowując zależności między transakcjami oraz zgodność zapisanych odcisków z danymi bloku. Same różne wersje nagłówka nie dowodzą konkretnej oszczędności energii ani tożsamości operatora. [2]
Pool koordynuje pracę górników. Jego serwer, czyli usługa komputerowa, z którą komunikuje się urządzenie, przyjmuje wyniki zgodnie z uzgodnionymi warunkami. Urządzenie Piotra nie może dowolnie zmieniać nagłówka. Dokument oznaczony numerem BIP310 opisuje uzgodnienie przez mining.configure: version-rolling.mask wskazuje zmienialne bity, a odpowiedź wybiera wspólną część możliwości górnika i serwera. Maska pokazuje dozwolone pozycje, nie obiecuje większej szybkości. Warunek version_bits & ~last_mask == 0 oznacza, że przesyłane bity muszą mieścić się w ostatniej ważnej masce. Komunikat mining.set_version_mask obowiązuje natychmiast, bez czekania na następne zadanie. Firmware, czyli oprogramowanie sterujące urządzeniem, musi przestrzegać tej umowy. [3]
BIP320 proponuje 16 ogólnych bitów nVersion; BIP323, proponowany następca, opisuje 24 bity. Przy tej kontroli redakcyjnej oba dokumenty mają status Draft, czyli projektu. Sam status nie mówi ani że niczego nie wdrożono, ani że wszystkie pule to obsługują. Dokument opisuje zamierzone użycie pola; konkretne połączenie zależy od rzeczywistej maski i oprogramowania. Piotr nie może wywodzić uprawnień urządzenia z numeru BIP ani traktować projektu jako automatycznej zmiany reguł sieci. [4] [5]
Hanke zapisuje oszczędność modelową jako x × (n − 1) / n. Symbol x oznacza udział pracy, którą można współdzielić, a n liczbę odpowiednich zadań. Dla x = 25% i n = 4 otrzymujemy 18.75%. Wspólną część przygotowujemy razem zamiast powtarzać dla każdego zadania. Wynik dotyczy tego modelu obliczeń, nie automatycznie takiego samego spadku poboru mocy dowolnego urządzenia. Inne obwody i warunki pracy także wpływają na zużycie. Bez pomiarów nie wolno przenosić tego procentu na prognozę wydajności czy przychodu. [1]
Piotr najpierw sprawdza obsługę w układzie, firmware i współpracę z pulą. Potem kontroluje przyjmowanie pracy przez pulę i mierzy całe urządzenie w porównywalnych warunkach. J/TH oznacza dżule na terahash, czyli energię potrzebną na bilion prób hashowania. Porównywane pomiary muszą obejmować te same części urządzenia i ten sam okres. Nazwa ASICBoost nie zastępuje pomiaru. Nie jest też synonimem podkręcania, czyli zwiększania częstotliwości pracy, i nie gwarantuje znalezienia bloku ani zysku. Pozwala oszczędniej wykonać część pracy, jeżeli wspiera ją cała konfiguracja. [1] [3]
Pełniejszy obraz uzyskasz, czytając to hasło razem z ASIC Miner, Wydobywanie, Block Header, Proof of Work, Bitcoin, SHA-256. Do tego hasła prowadzą również odsyłacze z Mining Firmware.