Το πρωτόκολλο στρώματος είναι επί του παρόντος το πιο συχνά χρησιμοποιούμενο πρωτόκολλο επικοινωνίας TCP μεταξύ ανθρακωρύχων και δεξαμενών εξόρυξης. Ας εξηγήσουμε εν συντομία την αρχιτεκτονική δικτύου της εξόρυξης.
1. Αρχιτεκτονική δικτύου εξόρυξης
Το Bitcoin είναι μια αποκεντρωμένη αρχιτεκτονική δικτύου που προωθεί νέες συναλλαγές και μπλοκ εγκαθιστώντας κόμβους με δαίμονες Bitcoin. Οι μηχανές εξόρυξης και οι δεξαμενές εξόρυξης σχηματίζουν επίσης ένα άλλο δίκτυο, το οποίο ονομάζουμε δίκτυο εξόρυξης.
Το δίκτυο εξόρυξης χωρίζεται σε πολλά κύρια μέρη, όπως μηχανές εξόρυξης, πισίνες εξόρυξης, πορτοφόλια κ.λπ., και μερικές φορές το λογισμικό της πισίνας εξόρυξης εγκαθίσταται μαζί με το πορτοφόλι, το οποίο μπορεί να ονομαστεί συλλογικά πισίνα εξόρυξης.
Το πρωτόκολλο επικοινωνίας μεταξύ της μηχανής εξόρυξης και του λογισμικού της πισίνας εξόρυξης είναι στρωματικό, ενώ η επικοινωνία μεταξύ του λογισμικού της πισίνας εξόρυξης και του πορτοφολιού είναι η διεπαφή bitcoinrpc.
Το στρώμα είναι η μορφή δεδομένων JSON και το συγκεκριμένο πρωτόκολλο έχει ως εξής:
2. Συμφωνία στρώματος
1. Συνδρομή εργασιών
Όταν ξεκινά η μηχανή εξόρυξης, συνδέεται πρώτα με την πισίνα εξόρυξης χρησιμοποιώντας τη μέθοδο mining.subscribe για να εγγραφείτε στην εργασία.
Ο χώρος συγκέντρωσης επιστρέφει τον αριθμό συνδρομής, ExtraNonce1 και ExtraNonce2_size στο mining.notify.
Client:{"id":1,"method":"mining.subscribe","params":[]}
Server:{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null} Ανάμεσα τους:
ae6812eb4cd7735a302a8a9dd95cf71f είναι ο αριθμός συνδρομής.
08000002 είναι το ExtraNonce1, το οποίο χρησιμοποιείται για τη δημιουργία συναλλαγών coibase.
ExtraNonce2_size είναι 4, ο αριθμός των byte του μετρητή ExtraNonce2 του miner.
2. Κατανομή εργασιών
Αυτή η εντολή αποστέλλεται περιοδικά στον εξορύκτη από την ομάδα εξόρυξης και όταν η μηχανή εξόρυξης εγγραφεί με τη μέθοδο mining.subscribe, η ομάδα εξόρυξης θα πρέπει να επιστρέψει αμέσως την εργασία ως mining.notify.
Server:{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", "010000000100000000000000000000000000000000000000000000000000000000000000 00ffffffff20020862062f503253482f04b8864e5008", "072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"} Ανάμεσα τους:
Αριθμός εργασίας: "bf";
Προηγούμενο μπλοκ HASH:
"4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000"; Coinbase Μέρος Ι:
"010000000100000000000000000000000000000000000000000000000 00000000000000000ffffffff20020862062f503253482f04b8864e5008"; Coinbase Μέρος 2:
"072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7 e756a64a7a9688ef9903327048ed988ac00000000"; Λίστα αναγνωριστικών συναλλαγών:
["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"]; Αριθμός έκδοσης αποκλεισμού: "00000002";
nBit:”1c2ac4af”;
Τρέχουσα ώρα: "504e86b9";
Εργασίες καθαρισμού: Εάν ισχύει, ο εξορύκτης θα ματαιώσει όλες τις εργασίες και θα ξεκινήσει αμέσως μια νέα εργασία. Εάν είναι ψευδές, περιμένετε μέχρι να τελειώσει η τρέχουσα εργασία πριν ξεκινήσετε μια νέα εργασία.
3. Είσοδος μηχανής εξόρυξης
Ο εξορύκτης χρησιμοποιεί τη μέθοδο mining.authorize για να συνδεθεί στην πισίνα εξόρυξης με συγκεκριμένο λογαριασμό και κωδικό πρόσβασης, ο κωδικός πρόσβασης μπορεί να είναι κενός και η πισίνα εξόρυξης επιστρέφει true για να συνδεθεί με επιτυχία. Αυτή η μέθοδος πρέπει να γίνει αμέσως μετά την προετοιμασία της σύνδεσης, διαφορετικά ο εξορύκτης δεν θα λάβει την εργασία της πισίνας.
Client:{"params":["miner1","password"],"id":2,"method":"mining.authorize"}
Server:{"error":null,"id":2,"result":true} 4. Υποβάλετε τα αποτελέσματα
Όταν ένας εξορύκτης βρει ένα νόμιμο μερίδιο, υποβάλλει μια εργασία στην ομάδα χρησιμοποιώντας τη μέθοδο "mining.submit". Εάν ο χώρος συγκέντρωσης επιστρέψει true, η υποβολή είναι επιτυχής και, εάν αποτύχει, υπάρχει συγκεκριμένος λόγος για το σφάλμα.
Client:{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}
Server:{"error":null,"id":4,"result":true} Ανάμεσα τους:
Όνομα χρήστη: "miner1";
Αριθμός εργασίας: "bf";
ExtraNonce2:"00000001";
Τρέχουσα ώρα: "504e86ed";
nonce:”b2957c02″;
5. Ρύθμιση δυσκολίας
Η ρύθμιση δυσκολίας εκδίδεται από την πισίνα εξόρυξης στη μηχανή εξόρυξης για να προσαρμόσει τη δυσκολία με mining.set_difficulty τρόπο και η τιμή δυσκολίας βρίσκεται στις παραμέτρους.
Server:{"id":null,"method":"mining.set_difficulty","params":[2]} Ο εξορύκτης θα εφαρμόσει τη νέα δυσκολία στην επόμενη εργασία και η ομάδα μερικές φορές θα εκδώσει μια νέα εργασία αμέσως και θα ορίσει την εργασία καθαρισμού σε true, έτσι ώστε ο εξορύκτης να μπορεί να εργαστεί αμέσως στη νέα δυσκολία.
3. Γενική διαδικασία επικοινωνίας
Η γενική διαδικασία επικοινωνίας μεταξύ της μηχανής εξόρυξης και της δεξαμενής εξόρυξης είναι η εξής:
|