Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 12893|Svar: 1

Principen om stratumprotokollet för kommunikation mellan gruvmaskiner och gruvpooler

[Kopiera länk]
Publicerad på 2018-01-22 10:23:14 | | | |
Stratumprotokollet är för närvarande det mest använda TCP-kommunikationsprotokollet mellan gruvarbetare och miningpooler. Låt oss kort förklara nätverksarkitekturen för mining.


1. Nätverksarkitektur för gruvdrift


Bitcoin är en decentraliserad nätverksarkitektur som vidarebefordrar nya transaktioner och block genom att installera noder med Bitcoin-daemoner. Gruvmaskiner och gruvpooler bildar också ett annat nätverk, som vi kallar gruvnätverket.

Minernätverket är uppdelat i flera huvuddelar, såsom miningmaskiner, miningpools, plånböcker med mera, och ibland installeras mining pool-mjukvaran tillsammans med plånboken, som tillsammans kan kallas en mining pool.

Kommunikationsprotokollet mellan miningmaskinen och mining pool-mjukvaran är stratum, medan kommunikationen mellan miningpool-mjukvaran och plånboken är bitcoinrpc-gränssnittet.

stratum är JSON-dataformat, och det specifika protokollet är följande:



2. Stratumöverenskommelse


1. Uppgiftsprenumeration

När miningmaskinen startar ansluter den först till miningpoolen med mining.subscribe-metoden för att prenumerera på arbetet.

Poolen returnerar prenumerationsnumret, ExtraNonce1 och ExtraNonce2_size i mining.notify.

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

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

Bland dem:

AE6812EB4CD7735A302A8a9DD95CF71F är prenumerationsnumret;

08000002 är ExtraNonce1, som används för att bygga coibase-transaktioner;

ExtraNonce2_size är 4, antalet bytes för minerns ExtraNonce2-räknare.

2. Uppgiftsfördelning

Detta kommando skickas periodiskt till minern av miningpoolen, och när miningmaskinen registrerar med mining.subscribe-metoden bör miningpoolen omedelbart returnera uppgiften som mining.notify.

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

Bland dem:

Uppgiftsnummer: "bf";

Föregående block HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000";

Coinbase Del I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Del 2:

"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac00000000";

Transaktions-ID-lista:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961e52ae75527df9e80043fd2f12"];

Blockversionsnummer: "00000002";

nBit:”1c2ac4af”;

Nuvarande tid: "504e86b9";

Rengöringsuppgifter: Om det stämmer avbryter gruvarbetaren alla uppgifter och startar en ny uppgift omedelbart. Om det är falskt, vänta tills den aktuella uppgiften är slut innan du startar en ny uppgift.

3. Inloggning till gruvmaskinen

Minern använder mining.authorize-metoden för att logga in i miningpoolen med ett visst konto och lösenord, lösenordet kan vara tomt och miningpoolen återvänder true för att logga in framgångsrikt. Denna metod måste göras omedelbart efter att anslutningen initierats, annars får inte minern pool-uppgiften.

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

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

4. Lämna in resultaten

När en gruvarbetare hittar en legitim andel skickar den in en uppgift till poolen med metoden "mining.submit". Om poolen returnerar true är commit framgångsrikt, och om det misslyckas finns det en specifik orsak till felet.

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

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

Bland dem:

Användarnamn: "miner1";

Uppgiftsnummer: "bf";

ExtraNonce2:"00000001";

Nuvarande tid: "504e86ed";

nonce:”b2957c02″;

5. Justering av svårighetsgrad

Svårighetsjusteringen ges av gruvpoolen till gruvmaskinen för att justera svårighetsgraden på mining.set_difficulty sätt, och svårighetsvärdet finns i parametrarna.

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

Gruvarbetaren tillämpar den nya svårighetsgraden på nästa uppgift, och poolen ger ibland en ny uppgift direkt och sätter saneringsuppgiften på sanna så att gruvarbetaren kan arbeta med den nya svårighetsgraden direkt.



3. Allmän kommunikationsprocess


Den allmänna kommunikationsprocessen mellan gruvmaskinen och gruvpoolen är följande:

Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com