آردوینو آموزش آردوینو

استخراج کریپتوکارنسی با آردوینو Arduino

نوشته شده توسط CiferTech

رمز ارز ها در چند سال گذشته بیش از پیش مورد توجه عموم مردم قرار گرفته اند و دلیل عمده این مورد بالا رفتن ارزش آن ها بوده، البته این مورد هم باید در نظر داشت همزمان با بالا رفتن ارزش رمز ارز ها دشواری استخراج آن ها به دلیل حجم زیاد کاربران و عوامل این چنینی دیگر افزایش پیدا میکند. در همین بین رمز ارز هایی هستند که علاوه بر قیمت پایین و نحوه استخراج پایین تر دارای روش جالبی برای استخراج یا ماین کردن هستند، برای نمونه DuinoCoin که با استفاده از میکرو کنترلر ها قادر به ماین کردن این رمز ارزها خواهیم بود. در ادامه آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

 


 DuinoCoin ᕲ


DuinoCoin تنها سکه ای که می تواند با رایانه ها، Raspberry Pi ،Arduinos، برد های ESP و بسیاری میکروکنترلر های دیگر استخراج می‌شود. توسط تعداد زیادی سیستم عامل پشتیبانی می شود. همچنین دارای یک جامعه دوستانه و در حال رشد است و قابلیت استفاده آسان و تبادل دارد. این رمز امکان ماین شدن در سیستم های های مختلفی را دارد همچنین زبان های برنامه نویسی Python و C++ پشتیبانی می‌کند. دوینوکوین دارای والت و ماینر های نرم‌افزاری به خصوص است که توسط توسعه دهندگان آن منتشر شده، این رمز ارز از سال ۲۰۱۹ شروع به کار کرده. همچنین فرآیند انقال و دریافت در DUCO بسیار آسان است در دوینوکوین ابتدا جفت ارز رمزنگاری شده مورد نظر را انتخاب می‌کنیم، به عنوان مثال DUCO به BYND سپس فرم تبادل را پر می‌کنیم (نام کاربری ، مبلغ مبادله شده و غیره) سپس منتظر رد و بدل شدن دارایی های خود شوید در ادامه با ایمیل به شما اطلاع داده می شود. برخی از ویژگی های DUINO-COIN را در لیست زیر مشاهده می‌کنید.

  • عرضه سکه: ۳۵۰ هزار
  • تأمین بلوک: ۳۵ میلیون
  • زمان بلوک: فوری
  • تیکر: DUCO (ᕲ)
  • الگوریتم ها: DUCO-S1 ، DUCO-S1A

 


برد آردوینو Arduino


مجموعه بردهای آردوینو از جمله بردهای توسعه پرطرفدار بین مهندسین امبدد هستند که در مدل‌های مختلفی از جمله Micro ,  proMini , Nano , Uno و همچنین Mega قابل تهیه هستند. هسته مرکزی این بردهای محبوب از سری AtMega328 می‌باشد. آردوینو پلتفرم سخت ‌افزاری و نرم‌ افزاری متن باز است. همان طور که پیش از این اشاره کردیم، پلتفرم آردوینو شامل یک میکروکنترلر تک‌بردی متن‌باز است که قسمت سخت‌افزار آردوینو را تشکیل می‌دهد. علاوه بر این، پلتفرم آردوینو یک نرم‌افزار آردوینو IDE که به منظور برنامه‌نویسی برای بردهای آردوینو طراحی شده‌است و یک بوت لودر نرم‌افزاری که بر روی میکروکنترلر بارگذاری می‌شود را در بر می‌گیرد.

 


چرا از DUCO استفاده کنیم


به زبان ساده، به معنای واقعی کلمه رمز ارز دیگری وجود ندارد که از آن پشتیبانی کند. بسیاری از مردم آردوینو دارند که فقط در حال انتظار برای روزهایی برای استفاده شدن هستند. با استفاده از این دستگاه های کوچک در دنیای رمزنگاری ایده جالبی است. که تیم DUCO میخواست چیزی جدید، ابتکاری و منحصر به فرد ایجاد کند و از نظر جامعه ای که جمع کرده، به نظر می رسد که استخراج دستگاه های فوق کم انرژی را امکان پذیر کرده است. همچنین DuinoCoin از برد های زیر پشتیبانی می‌کند.

♾️ Arduinos
(Uno, Nano, Mega, Due, Pro Mini, etc.)
📶 ESP8266s
(NodeMCU, Wemos, etc.)
📶 ESP32s
(ESP-WROOM, ESP32-CAM, etc.)
🍓 Raspberry Pis
(۱, ۲, Zero (W/WH), 3, 4, Pico, 400)
🍊 Orange Pis
(Zero, Zero 2, PC, Plus, etc.)
⚡ Teensy 4.1 boards

 


شرایط استفاده از خدمات DuinoCoin


DUCO-Exchange یک سرویس آنلاین است که به کاربران امکان می دهد دارایی های دیجیتال (Duino-Coin ، Bitcoin Cash ، Likecoin ، Beyondcoin و Coin Magi) را بین خود مبادله کنند. حداقل مبلغ قابل مبادله مقدار ۲۰۰ DUCO (Duino-Coin) است. درخواست های تبادل دستی پردازش می شوند و ممکن است ۷۲ ساعت طول بکشد. در صورت وجود، هزینه های سایر ارزهای رمزپایه از مبلغ مبادله شده کسر می شود. تبدیل ممکن است با خطا روبرو شود اگر کاربر در حال شلوغی سیستم درخواست ارسال کند، کاربر دارایی های رمزنگاری را به طور غیرقانونی به دست آورده باشد یا کاربر بیش از ۲۰۰ DUCO وجوه مبادله نمی کند.

وسایل مورد نیاز


بردهای آردوینو Arduino

بردهای ESP

 


ثبت نام یک حساب در شبکه Duino-Coin


اولین کاری که برای استفاده از Duino-Coin باید انجام دهید این است که حساب خود را در شبکه دوکو ثبت کنید. برای انجام این کار، می توانید برای ثبت نام در مرورگر خود از کیف پول GUI یا کیف پول CLI یا وب کیف پول استفاده کنید. همه چیز به ساده ترین شکل ممکن ساخته شده است، بنابراین در ثبت نام مشکلی نخواهید داشت. فقط کافی است هر یک از کیف پول ها را راه اندازی کنید، گزینه ثبت را انتخاب کنید و جای خالی آن را با اطلاعات معتبر پر کنید. پس از ثبت نام می توانید از کلیه نرم افزارهای مرتبط با Duino-Coin استفاده کنید. در تصاویر زیر نمونه های والت ذکر شده را مشاهده می‌کنید.

  • والت CLI که در بستر ترمینال در سیستم شما اجرا می‌شود و با وارد کردن یوزرنیم و پسوورد اکانت به اکانت خود دسترسی خواهید داشت.
  • وب والت که با مراجعه به سایت رسمی دوکو با پیشوند Wallet دسترسی خواهید داشت.
  • والت GUI که تحت نرم‌افزار و یک فایل اجرایی ارائه می‌شود.

 


شروع به ماینیگ با آردوینو


برای شروع استخراج این رمز ارز ابتدا باید اقدام به راه‌اندازی میکروکنترلر مدنظر برای انجام پردازش های مورد نیاز بپردازیم، در واقع پردازش برعهده آردوینو یا هر نوع میکروکنترلر ما است و از ترمینال آماده مموجود منتشر شده برای اتصال به منبع اصلی استفاده می‌کنیم. در صورت استفاده از برد های ESP دیگر اجرای نرم‌‎‌افزار های ۳rd پارتی نیازی نیست. برای شروع اقدام به آپلود کد های مخصوص آردوینو در برد مدنظر خود کنید. پایین تر بخشی از کد های اصلی را مشاهده خواهید کرد.

  • کد های این بخش از چندین هدر فایل مختلف تشکیل شده، که امکان نمایش در این صفحه را ندارد. برای دانلود کد های از این لینک اقدام کنید.
#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif

#include "sha1.h"

#include "uniqueID.h"
// Create globals
String lastblockhash = "";
String newblockhash = "";
String DUCOID = "";
#ifdef ARDUINO_ARCH_AVR
uint16_t difficulty = 0;
uint16_t ducos1result = 0;
#else
uint32_t difficulty = 0;
uint32_t ducos1result = 0;
#endif
const uint16_t job_maxsize = 104; // 40+40+20+3 is the maximum size of a job
uint8_t job[job_maxsize];

// Setup stuff
void setup() {
  // Prepare built-in led pin as output
  pinMode(LED_BUILTIN, OUTPUT);
  DUCOID = get_DUCOID();
  // Open serial port
  Serial.begin(115200);
  Serial.setTimeout(3334);
  while(!Serial); // For Arduino Leonardo or any board with the ATmega32U4
  Serial.flush();
}

// DUCO-S1A hasher
#ifdef ARDUINO_ARCH_AVR
uint16_t ducos1a(String lastblockhash, String newblockhash, uint16_t difficulty)
#else
uint32_t ducos1a(String lastblockhash, String newblockhash, uint32_t difficulty)
#endif
{
  // DUCO-S1 algorithm implementation for AVR boards (DUCO-S1A)
  newblockhash.toUpperCase();
  const char *c = newblockhash.c_str();
  size_t final_len = newblockhash.length() >> 1;
  for (size_t i = 0, j = 0; j < final_len; i += 2, j++)
    job[j] = ((((c[i] & 0x1F) + 9) % 25) << 4) + ((c[i + 1] & 0x1F) + 9) % 25;

  // Difficulty loop
  #ifdef ARDUINO_ARCH_AVR
  // If the difficulty is too high for AVR architecture then return 0
  if (difficulty > 655)
    return 0;
  for (uint16_t ducos1res = 0; ducos1res < difficulty * 100 + 1; ducos1res++)
  #else
  for (uint32_t ducos1res = 0; ducos1res < difficulty * 100 + 1; ducos1res++)
  #endif
  {
    Sha1.init();
    Sha1.print(lastblockhash + String(ducos1res));
    // Get SHA1 result
    uint8_t *hash_bytes = Sha1.result();
    if (memcmp(hash_bytes, job, SHA1_HASH_LEN*sizeof(char)) == 0)
    {
      // If expected hash is equal to the found hash, return the result
      return ducos1res;
    }
  }
  return 0;
}

// Grab Arduino chip DUCOID
String get_DUCOID() {
  String ID = "DUCOID";
  char buff[4];
  for (size_t i = 0; i < 8; i++)
  {
    sprintf(buff, "%02X", (uint8_t) UniqueID8[i]);
    ID += buff;
  }
  return ID;
}

// Infinite loop
void loop() {
  // Wait for serial data
  if (Serial.available() > 0) {
    memset(job, 0, job_maxsize);
    // Read last block hash
    lastblockhash = Serial.readStringUntil(',');
    // Read expected hash
    newblockhash = Serial.readStringUntil(',');
    // Read difficulty
    difficulty = strtoul(Serial.readStringUntil(',').c_str(), NULL, 10);
    // Clearing the receive buffer reading one job.
    while (Serial.available())
      Serial.read();
    // Start time measurement
    uint32_t startTime = micros();
    // Call DUCO-S1A hasher
    ducos1result = ducos1a(lastblockhash, newblockhash, difficulty);
    // Calculate elapsed time
    uint32_t elapsedTime = micros() - startTime;
    // Clearing the receive buffer before sending the result.
    while (Serial.available())
      Serial.read();
    // Send result back to the program with share time
    Serial.print(String(ducos1result) + "," + String(elapsedTime) + "," + DUCOID + "\n");
    // Turn on built-in led
    #ifdef ARDUINO_ARCH_AVR
    PORTB = PORTB | B00100000;
    #else
    digitalWrite(LED_BUILTIN, HIGH);
    #endif
    // Wait a bit
    delay(25);
    // Turn off built-in led
    #ifdef ARDUINO_ARCH_AVR
    PORTB = PORTB & B11011111;
    #else
    digitalWrite(LED_BUILTIN, LOW);
    #endif
  }
}

 

در مرحله بعدی باید فایل با نام AVR Miner که فایل های دانلود شده است را اجرا کنید، و مقادیر مورد نیاز را وارد کنید، از شما نام اکانت را در خواست میکند که باید با دقت وارد شود در غیر این صورت رمز ارز های ماین شده به اکانت شما انتقال داده نمی‌شوند. سپس درباره پورت مد نظر سوال می‌شود که باید دقیقا پورت آردوینو برنامه ریزی شده را وارد کنید، برای مثال COM5. در ادامه با پاسخ دادن به چند سوال دیگر قادر به راه‌اندازی کامل ماینر خود خواهید بود، و شهد اتصال ماینر به شبکه DUCO خواهید بود.

 

  • پس از اجرای ماینر اطلاعات به این شکل ارسال و دریافت می‌شوند.

 


کلام آخر با سایفر


در مجموع رمز ارز ها همواره جذاب بوده‌اند، البته نه برای رسیدن به ثروت های یک شبه بلکه بدلیل در نوع خود، جدید و جذاب بودن. فرض اینکه شما با استفاده از حل فرمول هایی به کمک پردازنده های خود از کارت گرافیک های چند میلیونی تا میکروکنترلر های چند صد هزار تومانی به یک ارزش در سطح جهانی میرسید که قابل مبادله و تبدیل است، لذت بخش و جذاب بوده و هست.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۵۴ دیدگاه