Stratum protokolas šiuo metu yra dažniausiai naudojamas TCP ryšio protokolas tarp kalnakasių ir kasybos baseinų. Trumpai paaiškinkime kasybos tinklo architektūrą.
1. Kasybos tinklo architektūra
Bitcoin yra decentralizuota tinklo architektūra, kuri perduoda naujas operacijas ir blokus, įdiegdama mazgus su Bitcoin demonais. Kasybos mašinos ir kasybos baseinai taip pat sudaro kitą tinklą, kurį vadiname kalnakasių tinklu.
Kalnakasių tinklas yra padalintas į kelias pagrindines dalis, tokias kaip kasybos mašinos, kasybos baseinai, piniginės ir kt., o kartais kasybos baseino programinė įranga įdiegiama kartu su pinigine, kurią bendrai galima vadinti kasybos baseinu.
Ryšio protokolas tarp kasybos mašinos ir kasybos baseino programinės įrangos yra sluoksnis, o ryšys tarp kasybos baseino programinės įrangos ir piniginės yra bitcoinrpc sąsaja.
sluoksnis yra JSON duomenų formatas, o konkretus protokolas yra toks:
2. Sluoksnio susitarimas
1. Užduočių prenumerata
Kai kasybos mašina paleidžiama, ji pirmiausia prisijungia prie kasybos baseino naudodama mining.subscribe metodą, kad užsiprenumeruotų darbą.
Telkinys grąžina prenumeratos numerį ExtraNonce1 ir ExtraNonce2_size mining.notify.
Client:{"id":1,"method":"mining.subscribe","params":[]}
Server:{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null} Tarp jų:
ae6812eb4cd7735a302a8a9dd95cf71f yra prenumeratos numeris;
08000002 yra ExtraNonce1, kuris naudojamas coibase operacijoms kurti;
ExtraNonce2_size yra 4, kalnakasio ExtraNonce2 skaitiklio baitų skaičius.
2. Užduočių paskirstymas
Šią komandą kasybos baseinas periodiškai siunčia kalnakasiui, o kai kasybos mašina užsiregistruoja mining.subscribe metodu, kasybos baseinas turėtų nedelsdamas grąžinti užduotį kaip mining.notify.
Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"} Tarp jų:
Užduoties numeris: "bf";
Ankstesnis blokas HASH:
"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000"; Coinbase I dalis:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008"; Coinbase 2 dalis:
"072f736c7573682f00000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac0000000"; Operacijų ID sąrašas:
["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"]; Bloko versijos numeris: "00000002";
nBit:”1c2ac4af”;
Dabartinis laikas: "504e86b9";
Valymo užduotys: Jei tiesa, kalnakasys nutrauks visas užduotis ir nedelsdamas pradės naują užduotį. Jei klaidinga, prieš pradėdami naują užduotį palaukite, kol baigsis dabartinė užduotis.
3. Kasybos mašinos prisijungimas
Kalnakasys naudoja mining.authorize metodą, kad prisijungtų prie kasybos baseino su tam tikra paskyra ir slaptažodžiu, slaptažodis gali būti tuščias, o kasybos baseinas grįžta teisingai, kad sėkmingai prisijungtų. Šis metodas turi būti atliekamas iškart po ryšio inicijavimo, kitaip kalnakasys negaus baseino užduoties.
Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}
Server:{"error":null,"id":2,"result":true} 4. Pateikite rezultatus
Kai kalnakasys randa teisėtą akciją, jis pateikia užduotį baseinui naudodamas "mining.submit" metodą. Jei telkinys grąžina teisingą, patvirtinimas sėkmingas, o jei nepavyksta, yra konkreti klaidos priežastis.
Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}
Server:{"error":null,"id":4,"result":true} Tarp jų:
Vartotojo vardas: "miner1";
Užduoties numeris: "bf";
ExtraNonce2:"00000001";
Dabartinis laikas: "504e86ed";
nonce:”b2957c02″;
5. Sunkumų reguliavimas
Kasybos baseinas išduoda sunkumo reguliavimą kasybos mašinai, kad mining.set_difficulty būdu sureguliuotų sunkumą, o sunkumo vertė yra parametruose.
Server:{"id":null,"method":"mining.set_difficulty","params":[2]} Kalnakasys pritaikys naują sunkumą kitai užduočiai, o telkinys kartais iš karto pateiks naują užduotį ir nustatys valymo užduotį į teisingą, kad kalnakasys galėtų iš karto dirbti su nauju sunkumu.
3. Bendras bendravimo procesas
Bendras kasybos mašinos ir kasybos baseino ryšio procesas yra toks:
|