هر نود در شبکه بیت کوین اطلاعات مربوط به معاملات جدید را به اشتراک می گذارد. سپس، هر نود معاملات جدید را که در استخر حافظه (memory pool) خود دریافت می کند ذخیره می کند.
استخر حافظه در واقع محلی برای ذخیره موقت معاملات جدید در هر نود است.
همچنین هر نود می تواند معاملات موجود در استخر حافظه خود را به یک فایل و محل دائمی (اصطلاحا Mine) منتقل کند. این فایل دائمی دفترچه ای از هر معامله بیت کوین است و blockchain نامیده می شود.
با این حال، برای افزودن تراکنشها از استخر حافظه به بلاک چین، یک نود باید از قدرت پردازش کامپیوتری زیادی استفاده کند. علت نیاز قدرت پردازش هم این است که نود باید بتواند یک مساله را حل کند. اما این مساله چیست؟
شرح مساله
تصور کنید که شما یک نود هستید. در هر لحظه از زمان می توانید تراکنش های موجود در استخر حافظه خود را به یک "رشته" از اعداد و حروف متراکم کنید.
این رشته، تمام معاملات موجود در استخر حافظه شما را نشان می دهد و اساساً هش معاملات موجود در استخر حافظه است.
اکنون ، هدف شما این است که این رشته را همراه با شماره دیگری (به نام Nonce) هش کنید تا رشته جدیدی را بدست آورید که با تعداد مشخصی از صفرها شروع شود.
در نتیجه، بیشتر اوقات نتیجه ای کسب خواهید کرد که حتی نزدیک نیست:
بنابراین، باید آنقدر فرایند تغییر نانس را ادامه دهید تا عددی را پیدا کنید که نتیجه هش کردن معاملات و آن نانس، با تعداد مشخصی صفر شروع شود.
در ظاهر ممکن است فرایند پیدا کردن نانس ساده به نظر برسد، اما در واقعیت بسیار دشوار است. این عدد کاملاً تصادفی است و شما فقط می توانید امیدوار باشید که از طریق آزمایش و خطا عدد مطلوب را پیدا کنید.
و این همان چیزی است که در دنیای بیت کوین، ماینینگ نامیده می شود: انجام مقدار زیادی هش (با استفاده از قدرت پردازش) و امید به خوش شانس بودن.
اما اگر به اندازه کافی خوش شانس باشید که نتیجه هش موفق را پیدا کنید، معاملات موجود در استخر حافظه شما به blockchain اضافه می شود و هر نود دیگر در شبکه نیز این معاملات را به بلاکچین خود اضافه می کند.
علاوه بر این ، شما می توانید برای تلاش و توان پردازشی که خرج کردید، پاداش خود دریافت کنید (اصطلاحا block reward). بخشی از این پاداش از طریق fee شبکه (کارمزد) برای معاملات تامین میشود.
اینکه چه "تعداد مشخصی از صفرها" باید در ابتدای هش قرار گیرد، بر اساس سرعت استخراج در سراسر شبکه تعیین می شود. - هرچه افراد سریعتر بتوانند ماین کنند، سختی شبکه بیشتر می شود و تعداد بیشتری صفر مورد نیاز است.
مبحث بالا در واقع شرح ساده ای از نحوه افزودن بلوک ها به blockchain است. ما در بخش مربوط به بلوک ها به طور کامل آن را بررسی می کنیم.
چرا ماینینگ مهم است؟
سوال اصلی این جا است که چرا معاملات را مستقیماً به blockchain اضافه نمی کنیم؟ استخراج (Mining) به کل شبکه بیتکوین اجازه میدهد تا در مورد اینکه کدام تراکنشها تأیید شده و در بلاکچین ثبت شوند، به توافق و اجماع عمومی برسند. این فرآیند همچنین از ورود تراکنشهای تقلبی جلوگیری کرده و امنیت شبکه را حفظ میکند.
به تعبیری دیگر، وقتی یک تراکنش بیتکوین انجام میدهید، بلافاصله در کل شبکه پخش نمیشود. در عوض، این تراکنش بهتدریج و از طریق یک نود به سایر نودها ارسال شده و در سراسر شبکه بیتکوین منتشر میشود. این انتشار غیرمتمرکز به گرههای مختلف اجازه میدهد تا تراکنش را دریافت، بررسی و در نهایت تأیید کنند.
* انتشار (Propagation) کلمه ای است که برای توصیف نحوه پخش شدن معاملات در شبکه استفاده می شود.
با این حال، می توان معامله دیگری را برای خرج کردن همان بیت کوین انجام داد و آن معامله دوم را در بخش دیگری از شبکه قرار داد.
به عنوان مثال ، شما می توانید یک آبجو با مقداری بیت کوین خریداری کنید، سپس به سرعت سعی در خرید یک تکه پیتزا با همان بیت کوین ها داشته باشید.
پس اینجا چه خبر است؟
- برخی از گره ها ابتدا معامله پیتزا را دریافت می کنند (و معامله آبجو را نادیده می گیرند).
- برخی از گره ها ابتدا معامله آبجو را دریافت می کنند (و معامله پیتزا را نادیده می گیرند).
با وجود اینکه ما می دانیم که شما اولین معامله آبجو را انجام داده اید ، به دلیل شیوه پخش معاملات در شبکه بیت کوین، این شبکه در مورد اینکه آیا شما باید آبجو یا پیتزا دریافت کنید ، اختلاف نظر دارد.
بنابراین چگونه شبکه تصمیم می گیرد که کدام معامله را حفظ کند؟
از طریق ماین کردن.
وقتی چندین تراکنش در شبکه منتشر میشوند، همه آنها مستقیماً به بلاکچین اضافه نمیشوند. در عوض، آنها ابتدا وارد استخر حافظه (Mempool) میشوند و در انتظار تأیید باقی میمانند. اولین ماینری که موفق به حل مسئله ریاضی و یافتن نانس (Nonce) معتبر شود، یک بلوک جدید ایجاد کرده و تعدادی از این تراکنشها را به بلاکچین اضافه میکند.
برای مثال، اگر دو تراکنش وجود داشته باشد – یکی برای خرید پیتزا و دیگری برای خرید آبجو – ماینری که یک بلاک جدید استخراج میکند، تصمیم میگیرد کدام تراکنش را در آن قرار دهد. اگر تراکنش خرید پیتزا در بلوک ثبت شود، تراکنش آبجو کنار گذاشته میشود.
این روش شاید در نگاه اول غیرمستقیم به نظر برسد، اما دقیقاً همان مکانیسمی است که شبکه بیتکوین برای رسیدن به اجماع و جلوگیری از تراکنشهای متناقض (مانند خرج کردن دوباره یا Double Spending) طراحی کرده است.
هر 10 دقیقه یک بلوک جدید از تراکنشها به بلاکچین اضافه میشود. بنابراین، کافی است این مدت را صبر کنید تا مطمئن شوید بیتکوینهای شما به آدرس جدید ارسال شدهاند و مجدداً در جای دیگری خرج نشدهاند.
یکی دیگر از مزایای ماین کردن
اگر بخواهید کنترل کاملی بر بلاکهای جدید در بلاکچین داشته باشید، باید بتوانید در رقابت حل معمای بلاک با تمام ماینرهای دیگر در شبکه بیتکوین پیروز شوید.
به بیان ساده، این یعنی شما نیاز دارید قدرت پردازشی بیشتری نسبت به سایر ماینرها داشته باشید. اما این کار چندان ساده نیست! برای این منظور باید سیستمهای سختافزاری فوقالعاده قدرتمند در اختیار داشته باشید که بتواند از تمامی ماینرهای دیگر جلو بزند.
در تئوری، چنین چیزی ممکن است، اما در عمل نیاز به سرمایهای چند میلیارد دلاری برای خرید سختافزارهای استخراج دارد و این هزینه بهطور مداوم افزایش مییابد، زیرا هر روز ماینرهای بیشتری به شبکه اضافه میشوند.
در نتیجه، رقابت شدیدی که بین ماینرها وجود دارد و از این که یک ماینر بتواند کنترل کامل بر روی بلاکچین داشته باشد، جلوگیری میکند. به این ترتیب، بیتکوین همچنان غیرمتمرکز باقی میماند و هیچ فرد یا نهادی بهتنهایی قادر به کنترل آن نخواهد بود.
چگونه می توانم ماینینگ بیت کوین را شروع کنم؟
ماینینگ از طریق نرمافزار Bitcoin Core دیگر امکانپذیر نیست.
در گذشته، کاربران میتوانستند با استفاده از دستور setgenerate در Bitcoin Core، مستقیماً روی کامپیوترهای شخصی خود بیتکوین استخراج کنند. اما این قابلیت در سال 2016 بهطور کامل حذف شد.
دلیل این تصمیم این بود که ماینینگ با CPU دیگر کارایی نداشت و رقابت در شبکه بیتکوین بهشدت افزایش یافته بود.
از آن زمان، ماینینگ فقط با سختافزارهای تخصصی مانند ASIC امکانپذیر است. بنابراین، اگر قصد استخراج بیتکوین دارید، باید دستگاههای مخصوص ماینینگ خریداری کنید و به یک استخر ماینینگ (Mining Pool) بپیوندید. استخرهای ماینینگ گروههایی از ماینرها هستند که قدرت پردازشی خود را با هم ترکیب میکنند تا شانس بیشتری برای استخراج یک بلاک و دریافت پاداش داشته باشند.
برای مطالعه بیشتر:
ثبت دیدگاه و سوالات