Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 12893|Risposta: 1

Il principio del protocollo strato per la comunicazione tra macchine da estrazione e pool di estrazione

[Copiato link]
Pubblicato su 22/01/2018 10:23:14 | | | |
Il protocollo stratum è attualmente il protocollo di comunicazione TCP più comunemente utilizzato tra miner e pool di mining. Spieghiamo brevemente l'architettura di rete dell'estrazione mineraria.


1. Architettura di rete dell'estrazione mineraria


Bitcoin è un'architettura di rete decentralizzata che inoltra nuove transazioni e blocchi installando nodi con daemon Bitcoin. Le macchine minerarie e i pool minerari formano anche un'altra rete, che chiamiamo la rete miner.

La rete miner è suddivisa in diverse parti principali, come macchine di mining, pool di mining, wallet, ecc., e talvolta il software del mining pool viene installato insieme al wallet, che può essere collettivamente chiamato mining pool.

Il protocollo di comunicazione tra la macchina di mining e il software del pool di mining è stratum, mentre la comunicazione tra il software del mining pool e il wallet è l'interfaccia bitcoinrpc.

stratum è il formato dati JSON, e il protocollo specifico è il seguente:



2. Accordo dello strato


1. Abbonamento al compito

Quando la macchina da estrazione si avvia, si collega prima al pool di mining utilizzando il metodo mining.subscribe per sottoscrivere il lavoro.

Il pool restituisce il numero di abbonamento, ExtraNonce1, e ExtraNonce2_size in mining.notify.

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

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

Tra questi:

AE6812EB4CD7735A302A8A9Dd95CF71F è il numero di abbonamento;

08000002 è ExtraNonce1, che viene utilizzato per costruire transazioni coibase;

ExtraNonce2_size è 4, il numero di byte del contatore ExtraNonce2 del miner.

2. Assegnazione dei compiti

Questo comando viene inviato periodicamente al miner dal pool di mining e, quando la macchina da mining si registra con il metodo mining.subscribe, il pool di mining dovrebbe restituire immediatamente il compito come mining.notify.

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

Tra questi:

Numero compito: "ragazzo";

Blocco precedente HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

Coinbase Parte I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Parte 2:

"072f736c7573682f00000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac0000000";

Elenco degli ID transazioni:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"];

Numero di versione del blocco: "00000002";

nBit:”1c2ac4af”;

Ora attuale: "504e86b9";

Compiti di pulizia: Se è vero, il miner interromperà tutti i compiti e ne inizierà immediatamente uno nuovo. Se falso, aspetta che il compito attuale termini prima di iniziarne un nuovo.

3. Accesso alla macchina di mining

Il miner utilizza il metodo mining.authorize per accedere al pool di mining con un certo account e password, la password può rimanere vuota e il pool di mining restituisce correttamente l'accesso con successo. Questo metodo deve essere eseguito immediatamente dopo aver inizializzato la connessione, altrimenti il miner non riceverà il compito del pool.

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

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

4. Inviare i risultati

Quando un miner trova una quota legittima, invia un compito al pool utilizzando il metodo "mining.submit". Se il pool restituisce true, il commit è riuscito, e se fallisce, c'è una ragione specifica per l'errore.

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

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

Tra questi:

Nome utente: "miner1";

Numero compito: "ragazzo";

ExtraNonce2:"00000001";

Tempo attuale: "504e86ed";

nonce:”b2957c02″;

5. Regolazione della difficoltà

L'aggiustamento della difficoltà viene emesso dal pool minerario alla macchina mineraria per regolare la difficoltà in mining.set_difficulty modo, e il valore di difficoltà è nei parametri.

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

Il miner applicherà la nuova difficoltà al compito successivo, e il pool a volte assegnerà immediatamente un nuovo compito impostando il compito di pulizia su true, così che il miner possa lavorare subito sulla nuova difficoltà.



3. Processo generale di comunicazione


Il processo generale di comunicazione tra la macchina mineraria e il pool minerario è il seguente:

Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com