Kopanie (mining) BitCoin i innych kryptowalut

Kopanie czyli mining nie oznacza, że BitCoiny są surowcem kopalnym i wydobywa się je spod ziemi. Jest to umowna nazwa procesu w pełni cyfrowego. Aby zrozumieć o co chodzi z kopaniem BitCoinów należy przyjrzeć się budowie, strukturze i idei kryptowalut.

Co to znaczy kopać BitCoiny?

W przypadku banknotów jakimi się posługujemy powstają one w ramach procesu kreacji pieniądza. Pod określeniem sugerującym czary kryje się proces legalnego dodruku określonej ilości pieniędzy przez podmiot do tego upoważniony. W przypadku zdecentralizowanego systemu w jakim operuje BitCoin kreacja krytowaluty odbywa się poprzez kopanie (mining). Kryptowaluty oparte o technologię Blockchain używają zaawansowanych systemów kryptograficznych do zabezpieczeń i stabilności całego systemu. Kopanie to nic innego jak rozwiązywanie matematycznych obliczeń (na potrzeby kryptograficznych zabezpieczeń) za które kopiący otrzymują wynagrodzenie w postaci BitCoinów.

Im więcej mocy obliczeniowej podłączonej do sieci BitCoin tym stopień trudności wzrasta. Oznacza to, że wraz ze wzrostem ilości dostępnych koparek w sieci rośnie stopień komplikacji matematycznych obliczeń. Protokół BitCoin został tak napisany, że każdy nowy blok wykopywany jest w interwałach co 10 minut. To sprawia, ze poziom trudności jest dopasowywany do ilości dostępnej mocy obliczeniowej. Ten 10 minutowy interwał wymusza dostosowanie stopnia komplikacji matematycznych obliczeń do dostępnej obecnie mocy. Tak działają wszystkie kryptowaluty oparte na konsensusie proof of work (PoW).

Nagroda kopiących maleje zatem z dwóch powodów. Pierwszym z nich jest upływ czasu. W miarę rozwoju sieci otrzymują oni coraz mniej BTC za swoją pracę. Drugim czynnikiem jest wzrost ilości mocy obliczeniowej stąd naturalnie nagroda musi być dzielona n większą liczbę zainteresowanych.

Jaki sprzęt jest najlepszy do kopania BitCoinów?

Dlaczego do budowy wydajnych koparek używa się kart graficznych zamiast procesorów? Współczesne procesory komputerowe choć projektowane są z myślą szerokim zastosowaniu najlepiej radzą sobie z wykonywaniem konkretnych operacji matematycznych. Procesory świetnie radzą sobie z mniejszymi porcjami danych i szybką ich obróbką matematyczną. Karty graficzne w odróżnieniu od procesorów komputerowych są wyspecjalizowane w bardziej złożonych obliczeniach.

Obecnie układy graficzne są często wykorzystywane w motoryzacji do monitorowania i rozpoznawania sytuacji drogowych. Jest to trochę naturalne, skoro karta graficzna potrafi stworzyć skomplikowany obraz 3D to też świetnie sobie radzi z inżynierią wsteczną takiego obrazu. Karty graficzne znajdują też zastosowanie w medycynie i superkomputerach oraz w sieciach neuronowych. Dzieje się tak z uwagi na budowę układów graficznych, które potrafią być stukrotnie bardziej wydajne niż procesory.

Dlaczego karty graficzne (GPU)?

Głównym czynnikiem sprawiającym, że karty graficzne są wyposażone w pamięć o wysokiej przepustowości. Układy GPU są projektowane z myślą o pobieraniu większych partii danych co zmusza do stworzenia szybszych magistral pamięci. Układy CPU z kolei świetnie radzą sobie z szybkim przetwarzaniem mniejszych porcji danych. Gdyby zmusić kartę graficzną do przetwarzania małych ilości danych w dużej liczbie interwałów procesory okazałyby się dużo bardziej wydajne. Najlepsze procesory wspierają prędkość pamięci na poziomie 50GB/s podczas gdy najszybsze układy graficzne mają przepustowość na poziomie 750GB/s.

Pozostaje jeszcze jeden problem jakim jest opóźnienie pobierania danych, gdy sama pamięć to nie wszystko. Procesory graficzne w odróżnieniu od CPU wyposażone są w znacznie większą ilość rdzeni co sprawia, że są nieporównywalnie szybsze w kontekście równoległego przetwarzania wątków.

Karty graficzne posiadają pakiet rejestrów, które są znacznie większe niż te w przypadku CPU, poza tym są też szybsze. Zbudowanie uniwersalnego procesora, tak szybkiego jak obecne karty graficzne jest bardzo trudne. Karty graficzne z powodu większych i szybszych zasobów oraz możliwościom niskopoziomowego dostępu do tych zasobów stały się bardziej uniwersalnym kalkulatorem do skomplikowanych obliczeń niż znane nam dłużej CPU.