Πίνακας περιεχομένων:
Βίντεο: ESP8266 Bitcoin Miner: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Με την τιμή του Bitcoin να συνεχίζει να ανεβαίνει και με ένα ζευγάρι ESP8266 να είναι πάντα συνδεδεμένο, αλλά να μην κάνει πολλά, σκέφτηκα γιατί να μην δοκιμάσω και να εφαρμόσω ένα Solo Bitcoin Miner. Μετά από λίγο πειραματισμό πήρα το ESP8266 έως και 00 1200 hashes/sec και από τον Δεκέμβριο του 2017 το δίκτυο Bitcoin εκτελούσε περίπου 12, 000, 000 tera hashes ανά δευτερόλεπτο (μπορείτε να ελέγξετε το blockchaininfo για τους πιο πρόσφατους αριθμούς).
Με βάση αυτούς τους αριθμούς, θα έχουμε 1 σε 1e16 πιθανότητες επιτυχούς εξόρυξης ενός μπλοκ κάθε δέκα λεπτά, όπου ένα μπλοκ αξίζει σήμερα 212.000 $. Σίγουρα μοιάζει πολύ με την αγορά ενός εισιτηρίου λόττο, μόνο με πολύ πολύ μικρότερες πιθανότητες νίκης, αλλά ξέρετε το παλιό ρητό, κάποιος πρέπει να το κερδίσει. Με τα έργα Gate Mate και Super Squirter ESP8266 τις περισσότερες φορές δεν κάνουν καμία δουλειά, απλώς είναι συνδεδεμένοι και περιμένουν αιτήματα ή εισόδους, οπότε γιατί να μην τα βάλουμε σε αυτό και ίσως κερδίσουμε κάποια νομίσματα. Το πρώτο βήμα ήταν να προσπαθήσουμε να καταλάβουμε εάν ήταν ακόμη δυνατό να εκτελέσουμε ένα διπλό SHA256 στο Blockheader σε ένα ESP8266. Στον κόσμο του Bitcoin, το «hash» είναι στην πραγματικότητα ένα διπλό SHA256, αλλά θα το αναφέρουμε μόνο ως hash. Τέλος πάντων, μετά από λίγο googling, βρήκα αυτές τις δύο σελίδες που παρείχαν όλες τις πληροφορίες που χρειάζονταν για να αποκτήσουν hashing.
1. Αλγόριθμος Block Hashing
2. Εξόρυξη Bitcoin με τον δύσκολο τρόπο: οι αλγόριθμοι, τα πρωτόκολλα και τα byte
Αξίζει να σημειωθεί ότι το πρωτόκολλο getwork, όπως περιγράφεται στους παραπάνω συνδέσμους, έχει καταργηθεί. Έχει αντικατασταθεί με το πρωτόκολλο getblocktemplate που καθιστά λίγο πιο περίπλοκο το χτίσιμο μιας κεφαλίδας μπλοκ, συγκεκριμένα πρέπει να δημιουργήσετε τη δική σας ρίζα merkle. Για όλα τα σπασμωδικά, δείτε το wiki getblocktemplate.
Βήμα 1: Ο αλγόριθμος
Ας πάμε αμέσως, ο κωδικός ESP8266 βρίσκεται στο repo του ESP8266BitcoinMiner GitHub. Δεν πρόκειται να επαναλάβω όλες τις πληροφορίες από τους παραπάνω συνδέσμους, αλλά μάλλον να επισημάνω τα κύρια σημεία.
char header_hex = "0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a14695"?
Το char header_hex είναι η κεφαλίδα μπλοκ και είναι χτισμένο από έξι πεδία, Έκδοση, hashPrevBlock, hashMerkleRoot, Time, Bits and the Nonce όλα συνδεδεμένα μεταξύ τους ως μικρές τελικές τιμές σε εξαγωνική σημειογραφία. Αυτό μόλις αντιγράφηκε από τον παραπάνω σύνδεσμο, αλλά σε έναν πραγματικό εξορυκτικό ανθρακωρύχο θα λάβετε κάθε ένα από αυτά τα πεδία σε ένα αντικείμενο json και στη συνέχεια θα πρέπει να τακτοποιήσετε την ενδοτικότητα και να το συνδυάσετε κάθε 10 λεπτά.
uint8_t *hex_decode (const char *in, size_t len, uint8_t *out) {
ανυπόγραφο int i, mg, ng, rg; για (mg = 0, i = 0; i '9'? σε - 'a' + 10: σε - '0'; rg = σε [i + 1]> '9'? σε [i+1] - 'a'+10: σε [i+1] - '0'; έξω [mg] = (ng << 4) | rg;} επιστροφή έξω;}
Το hex_decode παίρνει τη συμβολοσειρά header_hex, η οποία περιέχει δεκαεξαδικούς χαρακτήρες ascii και συμπληρώνει τα hasintbyte uint8_t [80] με τις αντίστοιχες τιμές byte που είναι έτοιμες για το hasher SHA256.
void hash () {
hex_decode (header_hex, strlen (header_hex), hashbytes)? ανυπόγραφο μακρύ ξεκίνημα = micros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); byte hash [SHA256_SIZE]; hasher.doFinal (κατακερματισμός); hashagain.doUpdate (hash, sizeof (hash)); byte hash2 [SHA256_SIZE]; hashagain.doFinal (hash2); ανυπόγραφο μακρύ άκρο = micros (); ανυπόγραφο μακρύ δέλτα = τελείωσε - εκκίνηση. Serial.println (δέλτα); Serial.print ("Big Endian:"); για (byte i = 32; i> 0; i-) {if (hash2 [i-1] <0x10) {Serial.print ('0'); } Serial.print (hash2 [i-1], HEX); } Serial.println (); Serial.print ("Little Endian:"); για (byte i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}
Το hash απλώς κατακερματίζει τα hashbytes δύο φορές (διπλό SHA256), εκτυπώνει τα χρήματα που χρειάστηκαν και εκτυπώνει το προκύπτον hash ως μεγάλο endian και μικρό endian. Εάν οι κατακερματισμοί τοποθετήθηκαν σε ένα μόνο SHA256 hasher θα ήταν πιθανότατα λίγο πιο γρήγορος, αλλά ούτως ή άλλως με τον παραπάνω κώδικα χρειάζονται 832 δευτερόλεπτα χρήσης για την εκτέλεση του διπλού κατακερματισμού και μπορείτε να δείτε από το στιγμιότυπο οθόνης παίρνουμε το σωστό hash.
Βήμα 2: Χτύπημα σε έναν τοίχο και ένα πραγματικά μεγάλο μπλοκ
Έτσι, αν χρειαστούν 832 δευτερόλεπτα χρήσης για να γίνει ένα hash, μπορούμε να εκτελέσουμε 1 /0.000834 = 1201 hashes /sec.
Για να είμαστε σαφείς, πήραμε τις πληροφορίες από το μπλοκ #125552, όπου γνωρίζαμε το nonce, έχει ήδη εξορυχθεί και χρησιμοποιήσαμε αυτές τις πληροφορίες ως δοκιμαστική υπόθεση για να βεβαιωθούμε ότι θα μπορούσαμε να έχουμε το ίδιο hash με το ESP8266. Έτσι, από τη στιγμή που ένα κέρδος με έναν πλήρως σαρκωμένο ανθρακωρύχο θα λάβατε τυχαία το nonce, κατακερματίσατε το blockheader και στη συνέχεια συγκρίνατε το αποτέλεσμα με τη δυσκολία για αυτό το μπλοκ. Εάν το hash ανταποκρίνεται στη δυσκολία, τότε υποβάλλεται στο δίκτυο για επαλήθευση.
Εντάξει, είναι υπέροχο που μπορούμε να εκτελέσουμε το hash, σίγουρα το ποσοστό είναι απαίσιο, αλλά όταν το βλέπουμε ως λαχείο, μια εικασία είναι μια εικασία. Εδώ είναι το, αλλά, με μια πιο προσεκτική επιθεώρηση, σύντομα γίνεται σαφές ότι πρέπει να τρέχετε έναν πλήρη κόμβο για να μπορείτε να επικοινωνείτε με το δίκτυο, κάπως προφανές όταν σταματάτε και σκέφτεστε τι είναι στην πραγματικότητα η εξόρυξη.
Έτσι, αν κοιτάξετε το διάγραμμα, μπορείτε να δείτε ότι ο δαίμονας bitcoin που είναι μέρος του πυρήνα του bitcoin φροντίζει για την επικοινωνία μεταξύ του δικτύου και του ανθρακωρύχου. Αυτό σημαίνει πραγματικά ότι πρέπει να τρέχετε τον πυρήνα Bitcoin σε διακομιστή, έτσι ώστε το ESP8266 να μπορεί να αποκτήσει ένα νέο blockheader κάθε 10 λεπτά και στη συνέχεια να μπορεί να υποβάλλεται ξανά στο δίκτυο.
Δεν το έχω δοκιμάσει, αλλά φαίνεται ότι θα έπρεπε να συγχρονίσετε ολόκληρο το blockchain σε περίπου 130 Gigs πριν να επικοινωνήσει σωστά με το δίκτυο, στο wiki αναφέρουν ότι πρέπει να ολοκληρωθούν ορισμένα βήματα πριν είναι διαθέσιμη όλη η λειτουργικότητα, οπότε είναι σίγουρο αυτό εννοούν.
Αυτό με τράβηξε εκεί, από την άποψη της έρευνας ήταν πολύ ενδιαφέρον και ήταν πολύ ωραίο να βλέπω το μικρό ESP8266 να έχει επιτυχώς τη δοκιμαστική θήκη, αλλά πρακτικά δεν βλέπω πολλούς ανθρώπους να κατεβάζουν τον πυρήνα, συγχρονίζοντας ολόκληρο blockchain, διατηρώντας τα πάντα ενημερωμένα, συμβαδίζοντας με ζητήματα ασφαλείας όλα για 1 σε 1e16 πιθανότητα να κερδίσετε το μπλοκ. Μια γέφυρα για μακριά για μένα.
Από την πρώτη στιγμή ήξερα ότι το ποσοστό hash θα ήταν τρομερό, αλλά η περιέργεια με κέρδισε και έπρεπε να το κάνω. Αντί για ατομική εξόρυξη, μπορεί να υπάρχει μια πισίνα εξόρυξης εκεί έξω που να μπορεί να συνδεθεί απευθείας από το ESP8266 χωρίς μια μνημειώδη προσπάθεια ή να υπάρχει κάποιο άλλο κρυπτονόμισμα που είναι πιο κατάλληλο. Αν βρείτε οποιοδήποτε, παρακαλώ ενημερώστε με.
Βήμα 3: Αναφορές
1. Αποθετήριο ESP8266 Bitcoin Miner GitHub
2. ESP8266 Crypto GitHub Repository
3. Εξόρυξη Bitcoin με τον δύσκολο τρόπο: οι αλγόριθμοι, τα πρωτόκολλα και τα byte
4. Αλγόριθμος Block Hashing
5. Μπλοκ 125552
Συνιστάται:
ΛΗΗ BITCOIN ΖΩΝΤΑΝΗ ΤΙΜΗ TTGO ESP32: 10 Βήματα
ΛΗΗ ΤΙΜΗΣ BITCOIN LIVE TTGO ESP32: Σε αυτό το σεμινάριο θα μάθουμε πώς να αποκτήσετε μια τρέχουσα τιμή Bitcoin σε USD και EUR χρησιμοποιώντας ένα TTGO ESP32 και Visuino. Δείτε το βίντεο. (Νέο ενημερωμένο αρχείο για λήψη παρακάτω!)
Bitcoin Ticker With Graph: 8 Βήματα
Bitcoin Ticker With Graph: Το έκανα αυτό βάσει ενός έργου για ένα τιμολόγιο τιμών BTC, το οποίο λαμβάνει πληροφορίες τιμών από το coinmarketcap.com που γράφτηκε αρχικά από τον Brian Lough. Χρησιμοποίησε το ESP8266, το οποίο είναι μια συμβατή πλακέτα Arduino που έρχεται με ενσωματωμένο WiFi. Όπως περιέγραψε
Crypto που μοιάζει με Bitcoin που τρέχει στο Raspberry Pi: 5 βήματα
Bitcoin που μοιάζει με Crypto Running στο Raspberry Pi: Οδηγίες για τη λειτουργία ενός κόμβου. Το λειτουργικό σύστημα US-OS είναι κατασκευασμένο από raspbian που τρέχει το πακέτο us-cryptoplatform. Δεν χρειάζεται να ζητήσετε άδεια για να συμμετάσχετε. Απλώς ακολουθήστε αυτές τις απλές οδηγίες και τρέξτε έναν κόμβο κερδίζοντας κρυπτονόμισμα κάθε λεπτό
Οπτικοποιήστε το κέρδος και την απώλεια Bitcoin σας με Arduino & Python: 6 βήματα
Οπτικοποιήστε το κέρδος και την απώλεια Bitcoin σας με Arduino & Python: Βασική ιδέα Προσωπικά είμαι επενδυτής κρυπτονομισμάτων. Έχω όμως και πολλές δουλειές να παρακολουθώ. Έτσι, δεν είμαι σε θέση να παρακολουθώ την τιμή του bitcoin περίπου 10 φορές το λεπτό. Ωστόσο, θέλω ακόμα να ξέρω αν κερδίζω ή χάνω χρήματα. Ετσι
Miner Pie - RoboPasty - Pasties: 4 Βήματα
Miner Pie - RoboPasty - Pasties: Αυτό το είδος ζαχαροπλαστικής είναι το είδος Miner που σκάβει μεταλλεύματα, όχι αυτά τα ζυμαρικά (οι θεατές πέφτουν), μια κατσαρόλα χωρίς την κατσαρόλα (και περισσότεροι θεατές πέφτουν), ένα χειροποίητο πλήρες γεύμα που αναπτύχθηκε για ανθρακωρύχους να πάρουν μαζί τους βαθιά μέσα σε κάθε είδους ορυχεία παντού