در ادامه بحث تراکنشهای بیتکوین، به سراغ مفهوم مهم دیگری به نام استخراجکننده بیتکوین (ماینر) میرویم. به یاد داشته باشید که در درس قبلی، با تراکنشهای متناقض در شبکه بیتکوین آشنا شدیم. برخی از گرهها حاوی تراکنش «بنفش» و برخی دیگر حاوی تراکنش «قرمز» بودند. هر دوی این تراکنشها سعی داشتند از یک بیتکوین واحد استفاده کنند.
اما سوال اینجاست که چگونه کامپیوترها به توافق میرسند که کدام تراکنش معتبر است؟ در اینجا است که «استخراج» یا «ماینینگ» وارد بازی میشود. بیایید وارد یکی از این کامپیوترها شویم و نگاه دقیقتری بیندازیم.این گره یک «استخراجکننده» است.
استخراجکننده بیتکوین چیست؟
یک گره استخراجکننده، یک گره کامل بیتکوین است که با تایید تراکنشها، کار اضافی انجام میدهد. به عبارتی، همه استخراجکنندهها، گره هستند اما همه گرهها، استخراجکننده نیستند. یک استخراجکننده بیتکوین نمیتواند بدون اجرای یک گره عمل کند، اما یک گره کامل لزوما یک استخراجکننده نیست.
در حالی که یک گره کامل، تراکنشها را دریافت، ذخیره و به سایر گرهها ارسال میکند، یک گره استخراجکننده علاوه بر این کارها، سعی میکند بلاکهای جدیدی از تراکنشها ایجاد کند و سپس آنها را برای سایر گرهها ارسال نماید. سایر گرهها نیز این بلاک جدید را تایید یا رد میکنند.
همانطور که در درس بعدی خواهید دید، به دلیل نحوه عملکرد «استخراج»، یک استخراجکننده نیاز به استفاده از سختافزار تخصصی دارد. اگر کنجکاو هستید، در اینجا نمونهای از یک دستگاه استخراج را مشاهده میکنید. زیبا نیست؟
استخراجکننده بیتکوین چگونه «استخراج» میکند؟
حالا بیایید عمیقتر پیش برویم و داخل یک استخراجکننده نگاهی بیندازیم و ببینیم چگونه تراکنشها را از ممپول به فایل آن (بلاکچین) «استخراج» میکند. حالا درون ممپول یک استخراجکننده هستیم. تراکنش «بنفش» در آنجا وجود دارد. اما ممپول میتواند حاوی بیش از یک تراکنش باشد. بیایید تصور کنیم چند تراکنش جدید دیگر نیز وجود دارد. به عنوان مثال، این ممپول حاوی چهار تراکنش است (در واقع، یک ممپول میتواند هزاران تراکنش را نگه دارد). بنابراین یک استخراجکننده با تمام این تراکنشها در ممپول خود چه میکند؟
آن یک ظرف به نام «بلاک کاندید» (Candidate Block) ایجاد میکند. این بلاک، فقط یک ظرف برای تراکنشها است. استخراجکننده این بلاک کاندید را با تراکنشها از ممپول پر میکند.
بلاک کاندید چیست؟
یک بلاک کاندید را به عنوان یک بلاک «موقت» تصور کنید که با استفاده از تراکنشهای انتخابشده از ممپول ایجاد میشود. این بلاک موقت به این دلیل «بلاک کاندید» نامیده میشود که هنوز یک بلاک معتبر نیست. تنها بلاکهایی که واقعاً به بلاکچین اضافه شدهاند (که همان چیزی است که استخراجکننده در تلاش برای انجام آن است) معتبر تلقی میشوند.
بنابراین، کاری که این استخراجکننده انجام میدهد، پر کردن این بلاک کاندید با تراکنشها از ممپول است.از آنجایی که فضا محدود است، تنها تعداد محدودی از تراکنشها میتوانند در هر بلاک گنجانده شوند. استخراجکنندهها تشویق میشوند تا تراکنشهایی با بالاترین کارمزد را در اولویت قرار دهند. و سپس، این «بلاک» تراکنشها را به فایل (بلاکچین) اضافه میکند. اما چگونه این بلاک کاندید واقعاً به بلاکچین اضافه میشود؟
بلاک کاندید شامل موارد زیر است:
- هدر بلاک: این شامل اطلاعاتی مانند نسخه بلاک، مهر زمانی، هش بلاک قبلی و ریشه Merkle است.
- لیست تراکنشها: این لیست شامل تمام تراکنشهایی است که در این بلاک کاندید قرار دارند.
- نسخه nonce: این یک عدد تصادفی است که توسط استخراجکننده برای یافتن هش معتبر استفاده میشود.
هدف استخراجکننده، یافتن مقداری برای nonce است که هش بلاک کاندید را با دشواری هدف (که توسط شبکه تعیین میشود) مطابقت دهد.
این فرآیند به عنوان استخراج یا ماینینگ شناخته میشود و نیازمند قدرت محاسباتی قابل توجهی است. استخراجکنندهها از توابع هش برای محاسبه هشی از بلاک کاندید استفاده میکنند. تابع هش یک الگوریتم ریاضی است که هر ورودی را به یک رشته خروجی با طول ثابت (به نام هش) تبدیل میکند.
هش بلاک کاندید باید با دشواری هدف مطابقت داشته باشد. دشواری هدف یک عدد است که نشان میدهد یافتن یک هش معتبر چقدر سخت است. هرچه دشواری هدف بیشتر باشد، یافتن هش معتبر دشوارتر خواهد بود. استخراجکنندهها با تغییر nonce و محاسبه مجدد هش بلاک کاندید به جستجوی هش معتبر ادامه میدهند. اولین استخراجکنندهای که یک هش معتبر پیدا کند، برنده میشود و بلاک کاندید خود را به بلاکچین اضافه میکند.
به این فرآیند افزودن یک بلاک جدید به بلاکچین و دریافت پاداش گفته میشود. پاداش معمولاً به صورت بیتکوین تازه ایجاد شده و کارمزد تراکنشهای موجود در بلاک است. پس از اضافه شدن بلاک کاندید به بلاکچین، تمام گرههای دیگر در شبکه آن را تأیید میکنند و بلاکچین بهروز میشود. تراکنشهای موجود در بلاک کاندید اکنون نهایی و غیرقابل برگشت هستند.
استخراج بیتکوین یک فرآیند ضروری برای حفظ امنیت و صحت شبکه بیتکوین است. ماینرها با تأیید تراکنشها و افزودن بلاکهای جدید به بلاکچین، به ایمنسازی شبکه و جلوگیری از خرج دو بار شدن بیتکوین کمک میکنند.
در اینجا چند نکته کلیدی در مورد استخراج بیتکوین آورده شده است:
- استخراج بیتکوین یک فرآیند رقابتی است. هرچه قدرت محاسباتی بیشتری داشته باشید، شانس بیشتری برای یافتن هش معتبر و برنده شدن پاداش دارید.
- استخراج بیتکوین میتواند سودآور باشد، اما به دلیل هزینههای بالای برق و رقابت شدید، میتواند دشوار نیز باشد.
- استخراج بیتکوین مستلزم استفاده از سختافزار تخصصی به نام ماینر است.
- استخراج بیتکوین میتواند تأثیر قابل توجهی بر محیط زیست داشته باشد به دلیل مصرف بالای برق.