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í:
|