Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 12893|Răspunde: 1

Principiul protocolului stratum pentru comunicarea dintre mașinile miniere și piscinele miniere

[Copiază linkul]
Postat pe 22.01.2018 10:23:14 | | | |
Protocolul stratum este în prezent cel mai utilizat protocol de comunicare TCP între mineri și pool-uri de minerit. Să explicăm pe scurt arhitectura rețelelor în minerit.


1. Arhitectura rețelei de minerit


Bitcoin este o arhitectură de rețea descentralizată care redirecționează noi tranzacții și blocuri prin instalarea de noduri cu demoni Bitcoin. Mașinile de minerit și pool-urile de minerit formează, de asemenea, o altă rețea, pe care o numim rețeaua minerilor.

Rețeaua de mineri este împărțită în mai multe părți principale, cum ar fi mașini de minerit, pool-uri de minerit, portofele etc., iar uneori software-ul pool-ului de mining este instalat împreună cu portofelul, ceea ce poate fi denumit colectiv pool de minerit.

Protocolul de comunicare dintre mașina de mining și software-ul pool-ului de mining este stratum, în timp ce comunicarea dintre software-ul pool-ului de mining și portofel este interfața bitcoinrpc.

stratum este formatul de date JSON, iar protocolul specific este următorul:



2. Acordul stratului


1. Abonament la sarcini

Când mașina de minerit pornește, se conectează mai întâi la pool-ul de minerit folosind metoda mining.subscribe pentru a se abona la lucrare.

Pool-ul returnează numărul de abonament, ExtraNonce1, și ExtraNonce2_size în mining.notify.

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

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

Printre acestea:

AE6812eb4cd7735a302a8a9dd95CF71F este numărul de abonament;

08000002 este ExtraNonce1, care este folosit pentru a construi tranzacții coibase;

ExtraNonce2_size este 4, numărul de octeți al contorului miner ExtraNonce2.

2. Alocarea sarcinilor

Această comandă este trimisă periodic minerului de către pool-ul de minerit, iar când mașina de minerit se înregistrează cu metoda mining.subscribe, pool-ul ar trebui să returneze imediat sarcina ca mining.notify.

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

Printre acestea:

Numărul sarcinii: "bf";

Blocul anterior HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

Coinbase Partea I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Partea 2:

"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac00000000";

Lista ID-urilor tranzacțiilor:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"];

Numărul versiunii blocului: "00000002";

nBit:”1c2ac4af”;

Ora actuală: "504e86b9";

Sarcini de curățare: Dacă este adevărat, minerul va anula toate sarcinile și va începe imediat o nouă sarcină. Dacă este fals, așteaptă până se termină sarcina curentă înainte de a începe o nouă sarcină.

3. Autentificare la mașina de minerit

Minerul folosește metoda mining.authorize pentru a se conecta în pool-ul de minerit cu un anumit cont și parolă, parola poate fi goală, iar pool-ul de minerit revine corect pentru a se conecta cu succes. Această metodă trebuie făcută imediat după inițializarea conexiunii, altfel minerul nu va primi sarcina pool-ului.

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

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

4. Trimiteți rezultatele

Când un miner găsește o cotă legitimă, trimite o sarcină către pool folosind metoda "mining.submit". Dacă pool-ul returnează true, commit-ul este reușit, iar dacă eșuează, există un motiv specific pentru eroare.

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

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

Printre acestea:

Nume de utilizator: "miner1";

Numărul sarcinii: "bf";

ExtraNonce2:"00000001";

Ora actuală: "504e86ed";

nonce:”b2957c02″;

5. Ajustarea dificultății

Ajustarea dificultății este emisă de pool-ul de minerit către mașina de minerit pentru a ajusta dificultatea mining.set_difficulty mod, iar valoarea dificultății este în parametri.

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

Minerul va aplica noua dificultate la următoarea sarcină, iar pool-ul va emite uneori o nouă sarcină imediat și va seta sarcina de curățare pe true, astfel încât minerul să poată lucra imediat la noua dificultate.



3. Procesul general de comunicare


Procesul general de comunicare între mașina de minerit și pool-ul de minerit este următorul:

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com