Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 12893|Odgovoriti: 1

Načelo protokola stratum za komunikacijo med rudarskimi stroji in rudarskimi bazeni

[Kopiraj povezavo]
Objavljeno na 22. 01. 2018 10:23:14 | | | |
Protokol stratum je trenutno najpogosteje uporabljen TCP komunikacijski protokol med rudarji in rudarskimi bazeni. Na kratko razložimo omrežno arhitekturo rudarjenja.


1. Omrežna arhitektura rudarjenja


Bitcoin je decentralizirana omrežna arhitektura, ki posreduje nove transakcije in blokira z nameščanjem vozlišč z Bitcoin demoni. Rudarski stroji in rudarski bazeni tvorijo tudi drugo omrežje, ki ga imenujemo rudarsko omrežje.

Rudarsko omrežje je razdeljeno na več glavnih delov, kot so rudarske naprave, rudarski bazeni, denarnice itd., včasih pa je programska oprema rudarskega bazena nameščena skupaj z denarnico, ki jo lahko skupaj imenujemo rudarski bazen.

Komunikacijski protokol med rudarsko napravo in programsko opremo rudarskega bazena je stratum, medtem ko je komunikacija med programsko opremo rudarskega bazena in denarnico vmesnik bitcoinrpc.

Stratum je JSON podatkovni format, specifičen protokol pa je naslednji:



2. Dogovor o sloju


1. Naročnina na naloge

Ko se rudarski stroj zažene, se najprej poveže z rudarskim bazenom z metodo mining.subscribe, da se naroči na delo.

Bazen vrne naročniško številko ExtraNonce1 in ExtraNonce2_size v rudarjenju.notify.

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

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

Med njimi:

ae6812eb4cd7735a302a8a9dd9cf71f je naročniška številka;

08000002 je ExtraNonce1, ki se uporablja za gradnjo transakcij na bazi;

ExtraNonce2_size je 4, število bajtov rudarskega števca ExtraNonce2.

2. Dodeljevanje nalog

Ta ukaz rudarju občasno pošlje rudarski bazen, in ko se rudarski stroj registrira z metodo mining.subscribe, mora rudarski bazen takoj vrniti nalogo kot mining.notify.

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

Med njimi:

Številka naloge: "bf";

Prejšnji blok HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e000000000";

Coinbase, del I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase, 2. del:

"072f736c7573682f0000000000100f2052a0100000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac000000000";

Seznam ID transakcij:

["c5bd77249e27c2d3a3602dd35c33664a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"];

Številka različice bloka: "00000002";

nBit:”1c2ac4af”;

Trenutni čas: "504e86b9";

Čistilna opravila: Če je to res, rudar prekine vse naloge in takoj začne novo. Če ni res, počakaj, da trenutna naloga konča, preden začneš novo nalogo.

3. Prijava rudarskega stroja

Rudar uporablja metodo mining.authorize za prijavo v rudarski sklad z določenim računom in geslom, geslo je lahko prazno, rudarski bazen pa se vrne true in uspešno prijavi. To metodo je treba izvesti takoj po inicializaciji povezave, sicer rudar ne bo dobil naloge skupine.

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

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

4. Predložite rezultate

Ko rudar najde legitimen delež, pošlje nalogo v sklad z uporabo metode "mining.submit". Če pool vrne true, je commit uspešen, in če ne uspe, obstaja poseben razlog za napako.

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

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

Med njimi:

Uporabniško ime: "miner1";

Številka naloge: "bf";

ExtraNonce2:"00000001";

Trenutni čas: "504e86ed";

nonce:”b2957c02″;

5. Prilagajanje težavnosti

Prilagoditev težavnosti rudarski bazen izda rudarskemu stroju, da prilagodi težavnost na mining.set_difficulty način, vrednost težavnosti pa je v parametrih.

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

Rudarje bo novo težavnost uporabil za naslednjo nalogo, skupina pa bo včasih takoj dodelila novo nalogo in nastavila čiščenje na true, da lahko rudar takoj začne z novo težavnostjo.



3. Splošni komunikacijski proces


Splošni komunikacijski proces med rudarskim strojem in rudarskim bazenom je naslednji:

Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com