Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 12893|Odpověď: 1

Princip protokolu stratum pro komunikaci mezi těžebními stroji a těžebními pooly

[Kopírovat odkaz]
Zveřejněno 22.01.2018 10:23:14 | | | |
Protokol stratum je v současnosti nejčastěji používaným komunikačním protokolem TCP mezi těžaři a těžebními pooly. Pojďme stručně vysvětlit síťovou architekturu těžby.


1. Síťová architektura těžby


Bitcoin je decentralizovaná síťová architektura, která přeposílá nové transakce a blokuje instalací uzlů s bitcoinovými démony. Těžební stroje a těžební bazény také tvoří další síť, kterou nazýváme těžební síť.

Těžební síť je rozdělena do několika hlavních částí, jako jsou těžební stroje, těžební pooly, peněženky atd., a někdy je software těžebního poolu instalován společně s peněženkou, což lze souhrnně nazývat těžebním poolem.

Komunikační protokol mezi těžebním strojem a softwarem těžebního poolu je stratum, zatímco komunikace mezi těžebním poolem a peněženkou je rozhraní bitcoinrpc.

stratum je formát JSON a konkrétní protokol je následující:



2. Dohoda o vrstvách


1. Předplatné úkolů

Když těžební stroj startuje, nejprve se připojí k těžebnímu poolu pomocí metody mining.subscribe, aby se přihlásil k odběru díla.

Pool vrací číslo předplatného, ExtraNonce1, a ExtraNonce2_size v mining.notify.

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

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

Mezi nimi:

ae6812eb4cd7735a302a8a9dd95cf71f je číslo předplatného;

08000002 je ExtraNonce1, který se používá k tvorbě coibase transakcí;

ExtraNonce2_size je 4, což je počet bajtů čítače těžaře ExtraNonce2.

2. Přidělení úkolů

Tento příkaz je pravidelně posílán těžebnímu poolu a když se těžební stroj zaregistruje metodou mining.subscribe, těžební pool by měl okamžitě vrátit úkol jako mining.notify.

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

Mezi nimi:

Číslo úkolu: "bf";

Předchozí blokový HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e000000000";

Coinbase část I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase část 2:

"072f736c7573682f00000000000100f2052a0100000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac000000000";

Seznam identifikátorů transakcí:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b4181ed961ee52ae75527df9e80043fd2f12"];

Číslo blokové verze: "00000002";

nBit:”1c2ac4af”;

Aktuální čas: "504e86b9";

Úklidové úkoly: Pokud je to pravda, těžač všechny úkoly ukončí a ihned začne s novým úkolem. Pokud není pravda, počkejte, až současný úkol skončí, než začnete nový úkol.

3. Přihlášení těžebního stroje

Těžař používá metodu mining.authorize k přihlášení do těžebního poolu s určitým účtem a heslem, heslo může být prázdné a těžební pool se vrátí true, aby se přihlásil úspěšně. Tato metoda musí být provedena ihned po inicializaci připojení, jinak těžař nedostane úkol poolu.

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

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

4. Odevzdat výsledky

Když těžař najde legitimní podíl, odešle úkol do poolu pomocí metody "mining.submit". Pokud pool vrátí true, commit je úspěšný, a pokud selže, existuje specifický důvod chyby.

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

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

Mezi nimi:

Uživatelské jméno: "miner1";

Číslo úkolu: "bf";

ExtraNonce2:"00000001";

Aktuální čas: "504e86ed";

nonce:”b2957c02″;

5. Úprava obtížnosti

Úprava obtížnosti je vydána těžebním poolem těžebnímu stroji, aby se obtížnost mining.set_difficulty upravila, a hodnota obtížnosti je v parametrech.

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

Těžař aplikuje novou obtížnost na další úkol a pool někdy okamžitě vydá nový úkol a nastaví úkol úklidu na true, aby mohl těžař pracovat na nové obtížnosti okamžitě.



3. Obecný komunikační proces


Obecný komunikační proces mezi těžebním strojem a těžebním bazénem je následující:

Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com