תוכן עניינים:
וִידֵאוֹ: ESP8266 Bitcoin Miner: 3 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
כשהמחיר של ביטקוין ממשיך לטפס ועם כמה ESP8266 תמיד מחובר אבל לא ממש עושה הרבה חשבתי למה לא לנסות וליישם סולו ביטקון כורה. לאחר קצת ניסיונות קיבלתי את ה- ESP8266 עד ~ 1200 hashes/sec ונכון לדצמבר 2017 רשת הביטקוין ביצעה בסביבות 12, 000, 000 hasa tera בשנייה (אתה יכול לבדוק את המידע של blockchain לגבי המספרים האחרונים).
אז בהתבסס על המספרים האלה יהיה לנו סיכוי של 1 ל 1e16 לכרות בהצלחה בלוק כל עשר דקות, כשגוש שווה כרגע 212 אלף דולר. אין ספק שזה דומה לרכישת כרטיס לוטו, רק עם סיכוי קטן בהרבה לזכות, אבל אתה מכיר את האמרה הישנה, מישהו צריך לזכות בה. עם פרוייקטים של Gate Mate ו- Super Squirter ESP8266 רוב הזמן הם לא מבצעים שום עבודה, הם פשוט מחוברים לחשמל ומחכים לבקשות או תשומות, אז למה שלא תשימו אותם ואולי תזכו במטבעות. השלב הראשון היה לנסות ולברר אם אפשר בכלל לבצע SHA256 כפול על Blockhead על ESP8266. בעולם הביטקוין ה'חשיש 'הוא למעשה SHA256 כפול, אבל רק נתייחס לזה כאל החשיש. בכל מקרה אחרי קצת חיפוש בגוגל מצאתי את שני הדפים האלה שסיפקו את כל המידע הדרוש כדי להשיג hashing.
1. חסימת אלגוריתם חשיש
2. ביטקוין כריית הדרך הקשה: האלגוריתמים, הפרוטוקולים והבייטים
ראוי לציין כי פרוטוקול getwork, כמפורט בקישורים לעיל, הוצא משימוש. הוא הוחלף בפרוטוקול getblocktemplate מה שהופך אותו קצת יותר מסובך לבנות כותרת בלוק, במיוחד עליך לבנות שורש מרקלי משלך. לכל הגרועים, בדוק את ויקי getblocktemplate.
שלב 1: האלגוריתם
בואו נקפוץ ישר, קוד ESP8266 נמצא במאגר ESP8266BitcoinMiner GitHub. אני לא מתכוון לערוך מחדש את כל המידע מהקישורים לעיל אלא רק להדגיש את הנקודות העיקריות.
char header_hex = 0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0fbfc8892b0fbfc892b0cbfbfcfbfbfcfbfbfbfbfcfbfbfbfbfbfcfbfcfbfcfdcfcfcbcdcfcbcbcbcbfcfdcfcfdcfdcfcfdcfcfdcfcfcfdcbcf
char header_hex הוא כותרת החסימה והוא בנוי משישה שדות, Version, hashPrevBlock, hashMerkleRoot, Time, Bits וה- Nonce כולם משולבים יחד כערכי אנדיאן קטנים בסימון hex. זה פשוט הועתק מהקישור שלמעלה, אבל בכורה ממש מלא היית מקבל כל אחד מהשדות האלה באובייקט 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 הקסדצימליים, ומאכלס את hashbytes uint8_t [80] עם ערכי הבייט המתאימים שלהם ל- hasher SHA256.
hash hash () {
hex_decode (header_hex, strlen (header_hex), hashbytes); התחלה ארוכה ללא סימן = micros (); hasher.doUpdate (hashbytes, sizeof (hashbytes)); חבטת בתים [SHA256_SIZE]; hasher.doFinal (חשיש); hashagain.doUpdate (hash, sizeof (hash)); בייט hash2 [SHA256_SIZE]; hashagain.doFinal (hash2); סימן ארוך לא חתום = micros (); דלתא ארוכה ללא סימן = הסתיימה - התחלה; Serial.println (דלתא); Serial.print ("אנדיאן גדול:"); עבור (בת i = 32; i> 0; i-) {if (hash2 [i-1] <0x10) {Serial.print ('0'); } Serial.print (hash2 [i-1], HEX); } Serial.println (); Serial.print ("אנדיאן הקטן:"); עבור (בתים i = 0; i <SHA256_SIZE; i ++) {if (hash2 <0x10) {Serial.print ('0'); } Serial.print (hash2 , HEX); }}
hash פשוט מגשט את ההאשבייטים פעמיים (SHA256 כפולה), מדפיס את שניות השימוש שהוא לקח ומדפיס את החשיש שהתקבל כאנדיאן גדול ואנדיאן קטן. אם החשיפות היו מקוננות רק ב- hasher אחד של SHA256 זה כנראה היה קצת יותר מהיר אבל בכל מקרה עם הקוד הנ ל לוקח 832 שניות לשניות לבצע את החשיש הכפול ואתה יכול לראות מצילום המסך נקבל את החשיש הנכון.
שלב 2: מכות קיר וגוש ממש גדול
אז אם לוקח 832 שניות לשניות לעשות חשיש אחד נוכל לבצע 1 /0.000834 = 1201 hashes /sec.
רק כדי להיות ברור לקחנו את המידע מגוש #125552 שבו הכרנו את ה- nonce, הוא כבר כרה והשתמשנו במידע זה כמקרה ניסוי כדי לוודא שנוכל לקבל את אותו חשיש עם ה- ESP8266. אז ברגע שהרווח עם כורה ממולא לגמרי היית מנחש באופן אקראי את ה- nonce, חבש איתו את הבלוקדר ואז משווה את התוצאה לקושי של הבלוק הזה. אם החשיש עונה על הקושי, הוא נשלח לרשת לאימות.
אוקי אז זה נהדר שנוכל לבצע את החשיש, בטוח שהתעריף נורא אבל כשמסתכלים עליו כהגרלה ניחוש הוא ניחוש. הנה, אך לאחר בחינה מעמיקה יותר מהר מתברר שאתה צריך להפעיל צומת מלא כדי לתקשר עם הרשת, די ברור כשאתה עוצר וחושב מהו בעצם כרייה.
אז אם מסתכלים על התרשים אפשר לראות שהדמון הביטקוין שהוא חלק מגרעין הביטקוין דואג לתקשורת בין הרשת לכורה. מה זה באמת אומר שאתה צריך להריץ את ליבת הביטקוין בשרת, כך ש- ESP8266 יוכל לקבל בלוקרהר חדש כל 10 דקות ואז תוכל לשלוח בחזרה לרשת.
לא ניסיתי את זה אבל נראה שתצטרך לסנכרן את כל הבלוקצ'יין בסביבות 130 הופעות לפני שהוא יתקשר כראוי עם הרשת, בויקי הם מציינים שצעדים מסוימים חייבים להסתיים לפני שכל הפונקציונליות תהיה זמינה, אז די בטוח לזה הם מתכוונים.
אז זה משך אותי לשם, מנקודת מבט מחקרית הכל היה מאוד מעניין וזה היה די מגניב לראות את ה- ESP8266 הקטן מצליח להצמיד את מקרה הבדיקה אבל למעשה, אני לא רואה הרבה אנשים מורידים את הליבה ומסנכרן את כל blockchain, שמירה על הכל מעודכן, שמירה על בעיות אבטחה והכל בסיכוי של 1 ל 1e16 לזכות בחסימה. גשר רחוק בשבילי.
מההתחלה ידעתי ששיעור החשיש יהיה נורא אבל הסקרנות השתלטה עלי והייתי צריך לנסות. במקום כריית סולו ייתכן שיש שם בריכת כרייה שאפשר לחבר אליה ישירות מה- ESP8266 ללא מאמץ מונומנטאלי או שאולי יש עוד מטבע קריפטוגרפי שמתאים יותר. אם אתה מוצא, אנא יידע אותי.
שלב 3: הפניות
1. מאגר GitHub של Bitcoin Miner Bitcoin
2. מאגר Crypto GitHub של Crypto
3. כריית הביטקוין בדרך הקשה: האלגוריתמים, הפרוטוקולים והבייטים
4. חסום אלגוריתם חשיש
5. בלוק 125552
מוּמלָץ:
כיצד להבהב או לתכנת קושחה של ESP8266 AT באמצעות פלאש ומתכנת ESP8266, מודול WIFI IOT: 6 שלבים
כיצד להבהב או לתכנת קושחה של ESP8266 AT באמצעות פלאש ומתכנת ESP8266, מודול Wifi IOT: תיאור: מודול זה הוא מתאם /מתכנת USB עבור מודולי ESP8266 מסוג ESP-01 או ESP-01S. הוא מצויד בנוחות בכותרת נקבה של 2x4P 2.54 מ"מ לחיבור ה- ESP01. כמו כן הוא פורץ את כל הפינים של ה- ESP-01 באמצעות זכר 2x4P 2.54 מ"מ
ESP8266 - השקיה בגינה עם טיימר ושלט רחוק באמצעות אינטרנט / ESP8266: 7 שלבים (עם תמונות)
ESP8266 - השקיה בגינה עם טיימר ושלט רחוק באמצעות אינטרנט / ESP8266: ESP8266 - שלט השקיה מרחוק ועם תזמון לגינות ירק, גינות פרחים ומדשאות. הוא משתמש במעגל ESP-8266 ובשסתום הידראולי / חשמלי להזנת השקיה.יתרונות: עלות נמוכה (~ 30,00 $ דולר) פקודות מהירות לפקודות
ESP8266 - חיישני דלתות וחלונות - ESP8266. סיוע לקשישים (שכחה): 5 שלבים
ESP8266 - חיישני דלתות וחלונות - ESP8266. סיוע לקשישים (שכחה): ESP8266 - חיישני דלתות / חלון באמצעות GPIO 0 ו- GPIO 2 (IOT). ניתן לצפות בו באינטרנט או ברשת המקומית באמצעות דפדפנים. גלוי גם דרך " HelpIdoso Vxapp " יישום. משתמש בהספק 110/220 VAC עבור 5Vdc, ממסר / מתח אחד
קבלת זמן מהאינטרנט באמצעות ESP8266 - פרויקט שעון NTP עם ESP8266 Nodemcu: 5 שלבים
קבלת זמן מהאינטרנט באמצעות ESP8266 | פרויקט שעון NTP עם ESP8266 Nodemcu: במדריך זה נראה כיצד להשיג זמן באמצעות ESP8266/nodemcu עם Arduino IDE. קבלת זמן שימושית במיוחד ברישום נתונים כדי לחותם את זמן הקריאות שלך. אם לפרויקט ESP8266 שלך יש גישה לאינטרנט, תוכל לקבל זמן באמצעות רשת T
ESP8266 הדרכה NODEMCU BLYNK IOT - Esp8266 IOT שימוש ב- Blunk ו- Arduino IDE - שליטה על נוריות LED דרך האינטרנט: 6 שלבים
ESP8266 הדרכה NODEMCU BLYNK IOT | Esp8266 IOT שימוש ב- Blunk ו- Arduino IDE | שליטה על נוריות דרך האינטרנט: היי חבר'ה במדריך זה נלמד כיצד להשתמש ב- IOT עם ESP8266 או Nodemcu שלנו. אנו נשתמש באפליקציית blynk לשם כך. לכן נשתמש ב- esp8266/nodemcu שלנו לשליטה על הנורות דרך האינטרנט. אז אפליקציית Blynk תחובר ל- esp8266 או ל- Nodemcu שלנו