Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 12893|Odpowiedź: 1

Zasada protokołu stratum do komunikacji między maszynami górniczymi a pulami górniczymi

[Skopiuj link]
Opublikowano 22.01.2018 10:23:14 | | | |
Protokół stratum jest obecnie najczęściej stosowanym protokołem komunikacji TCP między górnikami a pulami górniczymi. Wyjaśnijmy krótko architekturę sieciową w kopaniu.


1. Architektura sieciowa w wydobyciu


Bitcoin to zdecentralizowana architektura sieci, która przekazuje nowe transakcje i blokuje poprzez instalację węzłów z daemonami Bitcoina. Maszyny górnicze i pule górnicze tworzą także inną sieć, którą nazywamy siecią górników.

Sieć górników podzielona jest na kilka głównych części, takich jak maszyny górnicze, pule górnicze, portfele itp., a czasami oprogramowanie do puli górniczej jest instalowane razem z portfelem, który można zbiorczo nazwać pulą kopalnianą.

Protokół komunikacji między maszyną górniczą a oprogramowaniem puli górniczej to stratum, natomiast komunikacja między oprogramowaniem puli górniczej a portfelem to interfejs bitcoinrpc.

stratum to format danych JSON, a konkretny protokół jest następujący:



2. Umowa warstwowa


1. Subskrypcja zadań

Gdy maszyna górnicza się uruchamia, najpierw łączy się z pulą wydobywczą za pomocą metody mining.subscribe, aby subskrybować dzieło.

Pula zwraca numer subskrypcji, ExtraNonce1, oraz ExtraNonce2_size w mining.notify.

Client:{"id":1,"method":"mining.subscribe","params":[]}

Server:{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null}

Wśród nich:

ae6812eb4cd7735a302a8a9dd95cf71f to numer subskrypcyjny;

08000002 to ExtraNonce1, który służy do budowy transakcji coibase;

ExtraNonce2_size wynosi 4, czyli liczba bajtów licznika górnika ExtraNonce2.

2. Przydział zadań

To polecenie jest okresowo wysyłane do górnika przez pulę górniczą, a gdy maszyna wydobywcza rejestruje się metodą mining.subscribe, pula górnicza powinna natychmiast zwrócić zadanie jako mining.notify.

Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"}

Wśród nich:

Numer zadania: "bf";

Poprzedni blok HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e000000000";

Coinbase Część I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Część 2:

"072f736c7573682f00000000000100f2052a0100000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed98ac000000000";

Lista identyfikatorów transakcji:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b4181ed961ee52ae75527df9e80043fd2f12"];

Numer wersji blokowej: "00000002";

nBit:”1c2ac4af”;

Aktualny czas: "504e86b9";

Zadania sprzątania: Jeśli to prawda, górnik przerwie wszystkie zadania i natychmiast rozpocznie nowe. Jeśli nieprawda, poczekaj, aż aktualne zadanie się zakończy, zanim rozpoczniesz nowe.

3. Logowanie do maszyny górniczej

Górnik korzysta z metody mining.authoriz, aby zalogować się do puli górniczej z określonym kontem i hasłem, hasło może być puste, a pula wydobywcza wraca true, aby się pomyślnie zalogować. Metoda ta musi być wykonana natychmiast po inicjalizacji połączenia, w przeciwnym razie górnik nie otrzyma zadania puli.

Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}

Server:{"error":null,"id":2,"result":true}

4. Przedstaw wyniki

Gdy górnik znajduje legalną udział, przesyła zadanie do puli za pomocą metody "mining.submit". Jeśli pula zwraca true, commit jest udany, a jeśli się nie powiedzie, istnieje konkretny powód błędu.

Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}

Server:{"error":null,"id":4,"result":true}

Wśród nich:

Nazwa użytkownika: "miner1";

Numer zadania: "bf";

ExtraNonce2:"00000001";

Aktualny czas: "504e86ed";

nonce:”b2957c02″;

5. Regulacja trudności

Dostosowanie trudności jest wydawane przez pulę górniczą maszynie górniczej, aby dostosować poziom trudności w mining.set_difficulty sposób, a wartość trudności jest w parametrach.

Server:{"id":null,"method":"mining.set_difficulty","params":[2]}

Górnik nałoży nowy poziom trudności na kolejne zadanie, a pula czasem natychmiast wyda nowe zadanie i ustawi zadanie sprzątania na true, aby górnik mógł od razu zająć się nowym poziomem trudności.



3. Ogólny proces komunikacji


Ogólny proces komunikacji między maszyną górniczą a pulą górniczą wygląda następująco:

Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com