Protokol stratum je v súčasnosti najčastejšie používaným TCP komunikačným protokolom medzi ťažiarmi a ťažobnými poolmi. Poďme stručne vysvetliť sieťovú architektúru ťažby.
1. Sieťová architektúra ťažby
Bitcoin je decentralizovaná sieťová architektúra, ktorá preposiela nové transakcie a blokuje inštaláciou uzlov s bitcoinovými démonmi. Ťažobné stroje a ťažobné bazény tiež tvoria ďalšiu sieť, ktorú nazývame ťažobná sieť.
Ťažobná sieť je rozdelená na niekoľko hlavných častí, ako sú ťažobné stroje, ťažobné pooly, peňaženky a pod., a niekedy je softvér ťažobného poolu nainštalovaný spolu s peňaženkou, ktorú možno spoločne nazvať ťažobným poolom.
Komunikačný protokol medzi ťažobným strojom a softvérom ťažobného poolu je stratum, zatiaľ čo komunikácia medzi softvérom ťažobného poolu a peňaženkou je rozhranie bitcoinrpc.
stratum je dátový formát JSON a konkrétny protokol je nasledovný:
2. Stratum dohoda
1. Predplatné úlohy
Keď sa ťažobný stroj spustí, najprv sa pripojí k ťažobnému poolu pomocou metódy mining.subscribe, aby sa prihlásil na odber diela.
Pool vráti predplatné číslo 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} Medzi nimi:
ae6812eb4cd7735a302a8a9dd95cf71f je predplatné číslo;
08000002 je ExtraNonce1, ktorý sa používa na tvorbu coibase transakcií;
ExtraNonce2_size je 4, čo je počet bajtov čítača ťažiarstva ExtraNonce2.
2. Prideľovanie úloh
Tento príkaz je periodicky odosielaný ťažobníkovi ťažobným poolom a keď sa ťažobný stroj zaregistruje metódou mining.subscribe, ťažobný pool by mal okamžite vrátiť úlohu ako mining.notify.
Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"} Medzi nimi:
Číslo úlohy: "bf";
Predchádzajúci blokový HASH:
"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000"; Coinbase časť I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008"; Coinbase Časť 2:
"072f736c7573682f0000000000100f2052a0100000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac000000000"; Zoznam identifikátorov transakcií:
["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b4181ed961ee52ae75527df9e80043fd2f12"]; Číslo blokovej verzie: "00000002";
nBit:”1c2ac4af”;
Aktuálny čas: "504e86b9";
Čistiace úlohy: Ak je to pravda, ťažiar všetky úlohy preruší a okamžite začne s novou. Ak nie je pravda, počkajte, kým aktuálna úloha skončí, než začnete novú úlohu.
3. Prihlásenie do ťažobného stroja
Ťažiar používa metódu mining.authorize na prihlásenie do ťažobného poolu s určitým účtom a heslom, heslo môže byť prázdne a ťažobný pool sa vráti true, aby sa prihlásil úspešne. Táto metóda musí byť vykonaná okamžite po inicializácii spojenia, inak ťažiar nedostane úlohu poolu.
Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}
Server:{"error":null,"id":2,"result":true} 4. Predložiť výsledky
Keď ťažiar nájde legitímny podiel, odošle úlohu do poolu pomocou metódy "mining.submit". Ak pool vráti true, commit je úspešný, a ak zlyhá, existuje špecifický dôvod chyby.
Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}
Server:{"error":null,"id":4,"result":true} Medzi nimi:
Používateľské meno: "miner1";
Číslo úlohy: "bf";
ExtraNonce2:"00000001";
Aktuálny čas: "504e86ed";
nonce:”b2957c02″;
5. Úprava obtiažnosti
Úprava obtiažnosti je vydaná ťažobným poolom do ťažobného stroja, aby mining.set_difficulty upravila obtiažnosť, a hodnota obtiažnosti je v parametroch.
Server:{"id":null,"method":"mining.set_difficulty","params":[2]} Ťažiar aplikuje novú obtiažnosť na ďalšiu úlohu a pool niekedy okamžite vydá novú úlohu a nastaví čistiacu úlohu na true, aby mohol ťažiar okamžite pracovať na novej obtiažnosti.
3. Všeobecný komunikačný proces
Všeobecný komunikačný proces medzi ťažobným strojom a ťažobným bazénom je nasledovný:
|