Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 12893|Svar: 1

Princippet om stratumprotokollen for kommunikation mellem minemaskiner og minepuljer

[Kopier link]
Opslået på 22/01/2018 10.23.14 | | | |
Stratum-protokollen er i øjeblikket den mest anvendte TCP-kommunikationsprotokol mellem minere og mining-pools. Lad os kort forklare netværksarkitekturen for mining.


1. Netværksarkitektur for minedrift


Bitcoin er en decentraliseret netværksarkitektur, der videresender nye transaktioner og blokke ved at installere noder med Bitcoin-dæmoner. Miningmaskiner og miningpools danner også et andet netværk, som vi kalder minernetværket.

Minernetværket er opdelt i flere hoveddele, såsom mining-maskiner, mining-pools, wallets osv., og nogle gange installeres mining pool-softwaren sammen med walleten, som samlet kan kaldes en mining pool.

Kommunikationsprotokollen mellem miningmaskinen og mining pool-softwaren er stratum, mens kommunikationen mellem mining pool-softwaren og wallet'en er bitcoinrpc-grænsefladen.

stratum er JSON-dataformat, og den specifikke protokol er som følger:



2. Stratum-aftale


1. Opgaveabonnement

Når miningmaskinen starter, forbinder den først til mining-poolen ved hjælp af mining.subscribe-metoden for at abonnere på arbejdet.

Poolen returnerer abonnementsnummeret, ExtraNonce1 og ExtraNonce2_size i mining.notify.

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

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

Blandt dem:

AE6812EB4CD7735A302A8A9DD95CF71F er abonnementsnummeret;

08000002 er ExtraNonce1, som bruges til at bygge coibase-transaktioner;

ExtraNonce2_size er 4, antallet af bytes for minerens ExtraNonce2-tæller.

2. Opgavefordeling

Denne kommando sendes periodisk til mineren af mining-poolen, og når mining-maskinen registrerer sig med mining.subscribe-metoden, bør mining-poolen straks returnere opgaven som mining.notify.

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

Blandt dem:

Opgavenummer: "bf";

Forrige blok HASH:

"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e000000000";

Coinbase Del I:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008";

Coinbase Del 2:

"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac00000000";

Transaktions-ID-liste:

["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961e52ae75527df9e80043fd2f1f12"];

Blokversionsnummer: "00000002";

nBit:”1c2ac4af”;

Nuværende tid: "504e86b9";

Rengøringsopgaver: Hvis det er sandt, vil mineren afbryde alle opgaver og starte en ny opgave med det samme. Hvis det er falsk, vent til den nuværende opgave slutter, før du starter en ny opgave.

3. Login til minemaskinen

Mineren bruger mining.authorize-metoden til at logge ind i mining-poolen med en bestemt konto og adgangskode, adgangskoden kan være tom, og mining-poolen returnerer true for at logge ind med succes. Denne metode skal udføres umiddelbart efter initialiseringen af forbindelsen, ellers får mineren ikke pool-opgaven.

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

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

4. Indsend resultaterne

Når en miner finder en legitim andel, indsender den en opgave til puljen ved hjælp af metoden "mining.submit". Hvis poolen returnerer true, lykkes commiten, og hvis den fejler, er der en specifik årsag til fejlen.

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

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

Blandt dem:

Brugernavn: "miner1";

Opgavenummer: "bf";

ExtraNonce2:"00000001";

Nuværende tid: "504e86ed";

nonce:”b2957c02″;

5. Justering af sværhedsgrad

Sværhedsgradsjusteringen gives af minepoolen til minemaskinen for at justere sværhedsgraden på mining.set_difficulty måde, og sværhedsgraden er i parametrene.

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

Mineren vil anvende den nye sværhedsgrad på den næste opgave, og poolen vil nogle gange straks udstede en ny opgave og sætte oprydningsopgaven til sand, så mineren kan arbejde på den nye sværhedsgrad med det samme.



3. Generel kommunikationsproces


Den generelle kommunikationsproces mellem minemaskinen og minepuljen er som følger:

Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com