Jak właściwie działa kopacz?

Początkujący
Posty: 19
Rejestracja: 19 marca 2012
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Jak właściwie działa kopacz?

Postautor: phaxe » poniedziałek, 19 marca 2012, 13:19

Mam minera na kompie. Podłączam się do poola np. do api2.bitcoin.cz. Kopacz zaczyna liczyć jakieś skróty i co jakiś czas pokazuje, że mam jakieś nowe udziały (shares). Za to dostanę jakieś ułamki bitcoinów. Ale ja mam takie techniczne pytanie - jak "od środka" działa taki kopacz?
1) co to za skróty które liczy?
2) jakie informacje są wymieniane między minerem na moim kompie a poolem?
3) za co dostaję udziały (shares)?
4) czy jest gdzieś w sieci opisany algorytm działania takiego minera (nawet takiego kopacza cpu)

pozdrawiam
phaxe

Weteran
Awatar użytkownika
Posty: 1495
Rejestracja: 7 czerwca 2011
Reputacja: 1
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: Jak właściwie działa kopacz?

Postautor: Przemo » poniedziałek, 19 marca 2012, 15:02

Miner bierze dane szukanego bloku i wszystkie transakcje oczekujące, dodaje do nich jakiś losowy ciąg znaków (NONCE) i wykonuje na tym ciągu znaków funkcję skrótu: SHA256 i w wyniku tego powstaje skrót (hash) na przykład: d8a928b2043db77e340b523547bf16cb4aa483f0645fe0a290ed1f20aab76257
Jeżeli ten skrót będzie się zaczynał od np. czterech zer: 000028b20... to wtedy będzie poniżej targetu poola i dostaniesz udział a jeżeli będzie poniżej targetu 13 zer: : 000000000000028b20 to wtedy twój miner znajdzie blok i cały pool dostanie 50BTC

Żeby znaleźć tak niskie skróty trzeba sprawdzić metodą brute force miliardy hashy dodając losowe nonce.

Między poolem a minerem są wymieniane tylko informacje o aktualnym bloku oraz dostajesz od poola jakiś zakres losowych nonce, które masz sprawdzać, po to aby nie było sytuacji, że wielu minerów w poolu sprawdza te same nonce bo wtedy robota się marnuje.

W poolu udział dostajesz za to jak wyślesz hash poniżej targetu poola, jest to target o wiele łatwiejszy do znalezienia niż target całego bloku. Na tej podstawie pool liczy twoją moc obliczeniową i udowadniasz, że pracujesz, że szukasz bloku.

Każdy wysłany hash z pasującym nonce jest sprawdzany przez pool tak aby nie było sytuacji, że Ty liczysz blok za który nagroda pójdzie na inny adres bitcoin niż adres poola.

Kiedy w sieci bitcoin pojawia się nowy blok znaleziony przez kogos innego, wtedy pool szybko informuje o tym kopaczy aby liczyli nowy blok. Jednak poprzez opóźnienia sieci niektórzy kopacze i tak wysyłają do poola udziały dla starego bloku i to jest zmarnowana praca, nazywa się "stale shares" i wynosi z reguły 0.5% całości.

Sercem programu do kopania jest tylko malutki kawałeczek kodu obliczający hash SHA256 nazywa się to kernel, chodzi w nim o to aby jak najszybciej potrafił obliczyć hash bloku, niezależnie od programu do kopania są używane kernele: phatk, diablo, poclbm - to sa najszybsze kernele i każdy z nich działa najlepiej na specyficznej konfiguracji, na przykład jedne działają szybciej na SDK 2.4 niż 2.6.
Jako, że na sekundę jest liczonych tysiące hashy więc kod kernela musi być dopracowany do perfekcji, mała drobna zmiana algorytmu obliczeń wpływa znacznie na całkowitą szybkość kopania.

Początkujący
Posty: 19
Rejestracja: 19 marca 2012
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: Jak właściwie działa kopacz?

Postautor: phaxe » wtorek, 20 marca 2012, 22:09

Trochę rozumiem, trochę się pogubiłem.

Odpaliłem Wiresharka i zobaczyłem co dostaje miner od serwera. Są to komunikaty JSON w takiej formie:

{"id": "1", "result": {"hash1": "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000", "data": "00000001804dd229d33c0b1a16f3fe175f81b1b6e6090f964ac013fd000003a00000000098a9f97361e9b5d43b68d7a4f44370af4df93ffa2951dc65c585cb00478214a84f68e8b01a0b328700000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000", "midstate": "1372b67c5e382c1f2490d35ee3121ef8f519b8cf24464a3277a93e5016198d2c", "target": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000"}, "error": null}

Co oznaczają poszczególne wartości (hash1, data, midstate, target)?
Do czego w powyższym przykładzie dodawany jest NONCE i z czego liczony jest skrót SHA-256?

Weteran
Awatar użytkownika
Posty: 1495
Rejestracja: 7 czerwca 2011
Reputacja: 1
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: Jak właściwie działa kopacz?

Postautor: Przemo » środa, 21 marca 2012, 03:10

W powyzszym przykladzie sa wysylane jakies identyfikatory bloku, moze tez zakresy nonce'ów. Nie wiem tego nei znam protokolu komunikacji minera z serwerem.

Miner liczy SHA256 z danych bloku, tutaj go nie ma, pewnie dane bloku miner ma w pamieci a tutaj np. dostal kolejna porcje nonc'ów. To jest nieistotne, miner moze miec tez dane bloku z sieci.
Dane bloku wygladaja tak: http://blockexplorer.com/rawblock/00000 ... 7637f66078
I jest tam tez nonce. Jak zrobisz z tego bloku SHA256 to dostaniesz wlasnie hash: 0000000000000529a5295530f70d102aa60393c9a59c038aab0d5b7637f66078

Wróć do „Kopacze (miners)”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości