Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 12893|Antwoord: 1

Het principe van het stratumprotocol voor communicatie tussen mijnmachines en mijnpools

[Link kopiëren]
Geplaatst op 22-01-2018 10:23:14 | | | |
Het stratumprotocol is momenteel het meest gebruikte TCP-communicatieprotocol tussen miners en mining pools. Laten we kort de netwerkarchitectuur van mining uitleggen.


1. Netwerkarchitectuur van mining


Bitcoin is een gedecentraliseerde netwerkarchitectuur die nieuwe transacties en blokken doorstuurt door nodes met Bitcoin-damonen te installeren. Miningmachines en miningpools vormen ook een ander netwerk, dat we het minernetwerk noemen.

Het minernetwerk is verdeeld in verschillende hoofdonderdelen, zoals miningmachines, mining pools, wallets, enzovoort, en soms wordt de mining pool-software samen met de wallet geïnstalleerd, die gezamenlijk een mining pool kan worden genoemd.

Het communicatieprotocol tussen de miningmachine en de mining pool-software is stratum, terwijl de communicatie tussen de mining pool-software en de wallet de bitcoinrpc-interface is.

stratum is een JSON-dataformaat, en het specifieke protocol is als volgt:



2. Stratumovereenkomst


1. Taakabonnement

Wanneer de miningmachine start, maakt deze eerst verbinding met de mining pool via de mining.subscribe-methode om zich op het werk te abonneren.

De pool geeft het abonnementsnummer, ExtraNonce1 en ExtraNonce2_size terug in mining.notify.

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

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

Onder andere:

AE6812EB4CD7735A302A8a9DD95CF71F is het abonnementsnummer;

08000002 is ExtraNonce1, dat wordt gebruikt om coibase-transacties te bouwen;

ExtraNonce2_size is 4, het aantal bytes van de miner ExtraNonce2-teller.

2. Taaktoewijzing

Dit commando wordt periodiek door de mining pool naar de miner gestuurd, en wanneer de miningmachine registreert met de mining.subscribe-methode, zou de mining pool onmiddellijk de taak moeten teruggeven als mining.notify.

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

Onder andere:

Taaknummer: "bf";

Vorige blok HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e000000000";

Coinbase Deel I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Deel 2:

"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac00000000";

Transactie-ID Lijst:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961e52ae75527df9e80043fd2f12"];

Blokversienummer: "00000002";

nBit:”1c2ac4af”;

Huidige tijd: "504e86b9";

Reinigingstaken: Als dat zo is, zal de miner alle taken afbreken en direct een nieuwe taak starten. Als het niet klopt, wacht dan tot de huidige taak is afgelopen voordat je een nieuwe taak begint.

3. Inloggegevens van miningmachine

De miner gebruikt de mining.authorize methode om in te loggen op de mining pool met een bepaald account en wachtwoord, het wachtwoord kan leeg zijn en de mining pool geeft true terug om succesvol in te loggen. Deze methode moet direct na het initialiseren van de verbinding worden uitgevoerd, anders krijgt de miner de pooltaak niet.

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

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

4. Dien de resultaten in

Wanneer een miner een legitiem aandeel vindt, dient hij een taak in bij de pool met behulp van de methode "mining.submit". Als de pool true teruggeeft, is de commit succesvol, en als het mislukt, is er een specifieke reden voor de fout.

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

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

Onder andere:

Gebruikersnaam: "miner1";

Taaknummer: "bf";

ExtraNonce2:"00000001";

Huidige tijd: "504e86ed";

nonce:”b2957c02″;

5. Moeilijkheidsaanpassing

De moeilijkheidsaanpassing wordt door de mijnpool aan de mijnmachine gegeven om de moeilijkheidsgraad op mining.set_difficulty manier aan te passen, en de moeilijkheidswaarde staat in de parameters.

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

De miner past de nieuwe moeilijkheidsgraad toe op de volgende taak, en de pool geeft soms direct een nieuwe taak en zet de opruimtaak op waar, zodat de miner direct aan de nieuwe moeilijkheidsgraad kan werken.



3. Algemeen communicatieproces


Het algemene communicatieproces tussen de miningmachine en de mining pool verloopt als volgt:

Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com