A stratum protokoll jelenleg a leggyakrabban használt TCP kommunikációs protokoll a bányászok és a bányászati medencék között. Röviden magyarázzuk el a bányászat hálózati architektúráját.
1. A bányászat hálózati architektúrája
A Bitcoin egy decentralizált hálózati architektúra, amely új tranzakciókat és blokkokat továbbít azáltal, hogy Bitcoin démonokkal rendelkező csomópontokat telepít. A bányászgépek és a bányászati medencék szintén alkotnak egy másik hálózatot, amit bányász hálózatnak hívunk.
A bányászhálózat több fő részre oszlik, mint például bányászati gépek, bányászati medencék, pénztárcák stb., és néha a bányászpool szoftvert a tárcával együtt telepítik, amelyet együttesen bányászati medencének nevezhetünk.
A bányászgép és a bányászati pool szoftver közötti kommunikációs protokoll stratum, míg a bányászati pool szoftver és a pénztárca közötti kommunikáció a bitcoinrpc interfész.
stratum a JSON adatformátum, és a konkrét protokoll a következő:
2. Stratum megállapodás
1. Feladat előfizetés
Amikor a bányászati gép elindul, először a mining.subscribe módszerrel csatlakozik a bányászati medencéhez, hogy feliratkozzon a munkára.
A pool visszaadja az előfizetési számot, az ExtraNonce1-et és a ExtraNonce2_size-t a mining.notify oldalon.
Client:{"id":1,"method":"mining.subscribe","params":[]}
Server:{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null} Közöttük:
az ae6812eb4cd7735a302a8a9dd95cf71f az előfizetési szám;
08000002 az ExtraNonce1, amelyet coibase tranzakciók építésére használnak;
ExtraNonce2_size 4, az ExtraNonce2 bányász számláló bájtainak száma.
2. Feladatkiosztás
Ezt a parancsot a bányászati pool időről időre elküldi a bányásznak, és amikor a bányászgép regisztrál a mining.subscribe módszerrel, a bányászati poolnak azonnal vissza kell adnia a feladatot mining.notify néven.
Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"} Közöttük:
Feladatszám: "bf";
Előző blokk HASH:
"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e0000000"; Coinbase I. rész:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008"; Coinbase 2. rész:
"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed98ac00000000"; Tranzakcióazonosító lista:
["c5bd77249e27c2d3a3602dd35c3364a7983900b64a3464d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"]; Blokk verziószám: "00000002";
nBit:”1c2ac4af”;
Jelenlegi idő: "504e86b9";
Takarítási feladatok: Ha igaz, a bányász minden feladatot megszakít, és azonnal új feladatot indít. Ha hamis, várd meg, amíg a jelenlegi feladat véget ér, mielőtt új feladatot kezdenél.
3. Bányászgép bejelentkezése
A bányász a mining.authorize módszert használja, hogy egy adott fiókkal és jelszóval jelentkezzen be a bányászati poolba, a jelszó üres lehet, és a bányászati pool visszatér a sikeres bejelentkezéshez. Ezt a módszert azonnal a kapcsolat incializálása után kell végrehajtani, különben a bányász nem kapja meg a pool feladatot.
Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}
Server:{"error":null,"id":2,"result":true} 4. Küldd be az eredményeket
Ha egy bányász talál egy legitim részvényt, a "mining.submit" módszerrel küld be egy feladatot a poolba. Ha a pool igazat ad, a commit sikeres lesz, és ha megbukik, akkor van egy konkrét oka a hibának.
Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}
Server:{"error":null,"id":4,"result":true} Közöttük:
Felhasználónév: "miner1";
Feladatszám: "bf";
ExtraNonce2:"00000001";
Jelenlegi idő: "504e86ed";
nonce:”b2957c02″;
5. Nehézségi beállítás
A nehézségi beállítást a bányászati pool adja ki a bányászgépnek, hogy mining.set_difficulty módon állítsa a nehézséget, és a nehézségi érték a paraméterekben van.
Server:{"id":null,"method":"mining.set_difficulty","params":[2]} A bányász az új nehézségi szintet a következő feladatra alkalmazza, és a pool néha azonnal új feladatot ad, és a takarítási feladatot valóra állítja, hogy a bányász azonnal dolgozhasson az új nehézségen.
3. Általános kommunikációs folyamat
A bányászati gép és a bányászati medence közötti általános kommunikációs folyamat a következő:
|