استخرهای استخراج چه کار میکنند؟
اگر از دنبالکنندگان اخبار و تحلیلهای ارزهای دیجیتال باشید، حتما تا به حال اصطلاح استخرهای استخراج را شنیدهاید. برای این که دقیقا متوجه کارکرد این استخرها شوید، لازم است با مفهوم استخراج آشنایی داشته باشید. استخراج فرایندی است که در بیت کوین (و بسیاری از ارزهای دیجیتال دیگر) برای معتبرسازی تراکنشها و همچنین افتتاح بلاکهای جدید تراکنش مورد استفاده قرار میگیرد. حتما میدانید که بیت کوین یک شبکه غیرمتمرکز است. این یعنی هیچ فرد یا نهادی آن را مدیریت نمیکند. استخراج روشی است که به کمک آن شبکه بیت کوین مدیریت شده و جهت حرکت خود را مشخص میکند.
فرایند استخراج شامل هشگذاری تراکنشها و استفاده از درخت مرکل برای فشردهسازی آنها میشود. به صورت خلاصه میتوانیم بگوییم در همین فرایند است که تراکنشهای معتبر از تراکنشهای جعلی و مشکلدار تفکیک شده، و همچنین بلاکهای جدید برای ذخیره تراکنشها ایجاد میشوند. این فرایند با حل کردن پازلهای رمزنگاری شده و یافتن هش اصلی بلاک جدید همراه است، به همین دلیل در آن توان محاسباتی زیادی به کار گرفته میشود. استخرهای استخراج روشی ارائه میدهند که در آن کاربران میتوانند توان محاسباتی خود را با هم به اشتراک گذاشته و در صورت کشف بلاکهای جدید، جوایز را با همان نسبت بین خود تقسیم کنند.
درک فرایند استخراج
همان طور که پیشتر اشاره شد، درک استخرهای استخراج بدون آشنایی با فرایند استخراج امکانپذیر نیست. فرایند استخراج در بیت کوین و ارزهای دیجیتالی که از پروتکل «گواهی کار» (PoW) به عنوان الگوریتم توافق جمعی استفاده میکنند با دو هدف انجام میشود:
- ساخت بلاکهای جدید ارز دیجیتال در سیستم
- معتبر ساختن تراکنشها و افزودن آنها به لجر عمومی بلاکچین
این فرایند از طریق کامپیوترهایی که به اینترنت متصل شده باشند و اغلب سختافزارهای اختصاصی استخراج و نرمافزارهایی برای کنترل و مدیریت این فرایند انجام میشود.
استخراج ارز دیجیتال فرایندی محاسبهمحور و شبیه حل کردن پازل است که به توان محاسباتی بالا در کنار مصرف زیاد برق احتیاج دارد. ماینر یا استخراجگری که اول پازلها را حل کند شانس قرار دادن بلاک بعدی در بلاکچین و دریافت پاداشهای آن را به دست میآورد. پاداشها شامل این میشود که ماینر مالک بیت کوین جدید شود، یا این که حقالزحمه تراکنشهای انجام شده در بلاک را به دست بیاورد.
فرایند اکتشاف ارز دیجیتال به نحوی طراحی شده است که اگر تعداد ماینرها افزایش یابد، درجه سختی نیز افزایش مییابد، و همچنین کاهش تعداد ماینرها منجر به کاهش درجه سختی میشود. پاداشها باعث میشوند فرایند داوطلبانه استخراج دارای سود مالی باشد. از آنجا که ماینرهای زیادی تلاش میکنند سر این سفره بنشینند، پیدا کردن بلاکهای جدید از نظر محاسباتی سختتر شده و نیازمند توان محاسباتی بیشتری میشود. این فرایند باعث میشود استخراج برای ماینرهای تکی یا منفرد غیرعملی و بیش از حد گران شود.
استخرهای استخراج: بیایید با هم به شکل بهتری استخراج کنیم
استخرهای استخراج مجموعه/گروهی از ماینرها یا استخراجگران هستند که با هم کار میکنند تا شانس بیشتری برای کشف یک بلاک جدید در سطح گروهی داشته باشند. در این استخرها ماینرها منابع محاسباتی منفرد خود را با منابع محاسباتی کاربران دیگر ترکیب میکنند که باعث میشود توان محاسباتی کلی بیشتری پیدا کنند، و به این ترتیب سریعتر به نتیجه مطلوب خود برسند.
برای این که مطلب را بهتر درک کنیم یک جوینده طلا را در نظر بگیریم که روزانه میتواند 100 متر مربع زمین را برای پیدا کردن طلا جستجو کند، و به این ترتیب برای جستجوی یک هکتار زمین باید 100 روز زمان بگذارد. جمع کردن 100 جوینده طلا باعث میشود همین وظیفه در یک روز انجام شود. طلای کشف شده میتواند به شکل برابر بین 100 جوینده، با این فرض که همه انرژی یکسانی گذاشتهاند، تقسیم شود.
به شکل مشابهی میتوان از 9 دستگاه استخراج که هر کدام قدرت استخراج 335 مگاهشز (megahashes) در ثانیه دارند برای گرفتن خروجی حدود 3 گیگاهش (gigahashes) استفاده کرد. خروجی سریعتر به دست آمده و شانس بیشتری برای کشف بیت کوین در این فرایند وجود دارد.
نباید فراموش کنیم که این فرایند استخرسازی که منجر به خروجی بهتر و شانس بیشتر میشود، بدون هزینه نیست. پاداشی که از طریق استخراج مشترک به دست میآید بین اعضای مختلف استخر تقسیم میشود که در قیاس با مالکیت کامل استخراج فردی، میزان آن کاهش مییابد.
کارکردهای استخرهای استخراج
استخرهای استخراج در اصل مانند یک هماهنگ کننده بین اعضای استخر عمل میکنند. کارکردهای آنها شامل مواردی میشود مثل مدیریت هشهای اعضای استخر، تلاش برای یافتن پاداشهای توان محاسباتی موجود، ذخیره میزان کار انجام شده توسط هر عضو، و تخصیص میزان پاداش هر فرد به نسبت کاری که انجام داده است.
استخرهای استخراج ممکن است حقالزحمهای نیز از هر عضو ماینر دریافت کنند. کار هر یک اعضا در یک استخر استخراج میتواند به دو صورت تعیین شود. در روش سنی میزان مشخصی کار که شامل تعیین میزان مشخصی از نانس (nonce) یا عددی میشود که ماینرهای بلاکچین آن را محاسبه میکنند. همین که عضو استخر کار را انجام دهد برای دریافت یک کار جدید میتواند درخواست بدهد.
روش دوم تعیین کار در استخرها به اعضا آزادی بیشتری در انتخاب هر مقدار کار میدهد بدون این که نیازی به تعیین آن از سوی استخر باشد. در این روش اطمینان حاصل میشود که هیچ دو عضوی روی یک کار مشغول نمیشوند، همان طور که دو جوینده طلا نباید روی یک تکه زمین کار کنند.
همچنین میتوان استخرهایی از استخرها ایجاد کرد تا خروجی نهایی افزایش یابد.
پروتکل کار همکارانه
اگر پروتکل بیت کوین اجازه نمیداد، فعالیت استخرهای استخراج امکانپذیر نبود. قبل از هر چیز، عاملی که اجازه پیدایش این استخرها را میدهد تابعی است که پایه کلاینت بیت کوین قرار گرفته است. این تابع در آن زمان تحت عنوان گتورک (getwork) شناخته میشد. این تابع به یک گروه از استخراجگران اجازه میدهد یک بلاک هدف برای استخراج همکارانه ایجاد کنند. به این ترتیب، توان استخراج به جای تقسیم بین افراد روی یک ماموریت متمرکز میشود. برای همین این تابع به بهبود فرایند استخراج جهانی کمک میکند.
در اصل کاری که گتورک انجام میدهد ارتباط برقرار کردن بین گروهی از ماینرها به شکلی است که آنها با هم یک بلاک را استخراج کنند. هر ماینری روی راهکارهای منحصر به فرد کار میکند تا وقتی که یکی از آنها با موفقیت آن را حل کند. به این ترتیب، بلاک مورد نظر سریعتر استخراج شده و با توجه به افزایش سختی وقفههای شبکه کاهش مییابد. آن زمانی که بیت کوین داشت به سرعت رشد میکرد، استخراج آن از سیپییو به جیپییو تبدیل شد، و روشهای دیگری مثل افپیجیای (FPGAs) و اسیکز (ASICs) نیز در راه بودند.
لازم است توجه کنیم که گتورک ضعفهایی داشت که بعدتر به لطف تابع گتبلاکتمپلیت (getblocktemplate) بر طرف شدند. این تابع جدید با غلبه بر ضعف سیستمهای قدیمی امکان مقیاسپذیری و امنیت بیشتری ایجاد میکند.
سرویس استخراج همکارانه (سرور)
برای این که چندین ماینر بتوانند توان محاسباتی خود را در یک نقطه متمرکز کنند، لازم است که یک سرور وجود داشته باشد که به عنوان یک پیونددهنده عمل کند. ممکن است متناقض به نظر برسد که یک تکنولوژی غیرمتمرکز مثل بلاکچین روی خدمات متمرکز استوار میشود. اما این کار با اهداف خوبی انجام میشود: ماندن در بازی تولید بلاک و دادن امکان بردن پاداش به ماینرهای کوچک و ضعیف.
عمومیترین نرمافزار استخراج همکارانه خدمات رسمی خود بیت کوین، یعنی بیتکویند (bitcoind) است. علاوه بر این نرمافزارهای عمومی و معمول دیگری مثل بیافجیماینر (BFGMiner)، پی2پول (p2pool)، ایکوینپول (ecoinpool)، و استراتوم (stratum) نیز وجود دارند. در تمام این موارد فرایند همکاری در اصل یکی است.
روش کار به این صورت است که نرمافزار مورد استفاده، برای مثال بیتکویند نصب میشود. این خدمات به نحوی طراحی میشود که بتوانید به اتصالاتی که از اینترنت به سرور شما میآید گوش بدهید. به این ترتیب، شبکه ارتباطی میتواند بین ماینرها و سرور استخراج همکارانه ایجاد شود. در این نقطه هر ماینری لازم است که یک حساب رجیستر شده داشته باشد تا سرور بتواند به او دسترسی به خدمات بدهد. اما فقط این نیست، این ثبت نام در تقسیم و توزیع سود استخرهای استخراج بین آنهایی که در استخرها عضو هستند نیز نقش دارد. وظایف سرور در این نحوه از استخراج بسیار ساده هستند:
- دریافت تراکنشهای شبکه
- انتقال اطلاعات به ماینرها
- کنترل و رصد کار
- ارسال بلاکهای به درستی حل شده به شبکه
- حسابداری بلاکهای حل شده و کار انجام شده توسط ماینرها
- در نهایت ارسال سود متناسب با فعالیت ماینرها در استخر
نرمافزار استخراج (کلاینت)
هر کدام از نرمافزارهای استخراج ویژگیها و نحوه پشتیبانیهای متفاوتی دارند. ماینرها باید به درستی نرمافزار استخراجی که متناسب با ویژگیهای استخر استخراجی که میخواهند در آن عضو شوند باشد را انتخاب کنند. کار یک نرمافزار استخراج بسیار ساده است. این نرمافزار به یک سرور همکارانه یا استخراج متصل میشود، اطلاعات را دریافت میکند و شروع به حل کردن کار یک بلاک میکند. همین که به به جواب بلاک رسید آن را ارسال کرده و به کارش در کمک به حل کردن بلاک بعدی ادامه میدهد.
علاوه بر این کار، نرمافزار استخراج معتبرسازی و پرداخت متناسب ماینر با توجه به کار او را مدیریت میکند. برای این کار این نرمافزار اغلب به یک نام کاربری، کلمه عبور و آدرس برای پرداخت ارجاع میدهد. تمام این فرایند به آدرس آیپی و پورتی که سرور فعال نگه میدارد تا کار انجام شود منتقل میشود.
با این وجود، کاربرد نرمافزار تا حدی به کنترل خود سختافرار استخراج مربوط میشود. برای مثال در شبکه بیت کوین، نرمافزاری که در سالهای اخیر بیش از همه مورد استفاده قرار گرفته سیجیماینر (cgminer) است.
خلاصه کنیم، ترکیب این سه عنصر، یعنی پروتکل همکارانه داخل بیت کوین و بسیاری از ارزهای دیجیتال، سرور استخر استخراج، و نرمافزار کلاینت است که به استخرهای استخراج امکان میدهد مدیریت ارتباطات و وظایف را به شکلی همکارانه اجرایی کنند.
استخرهای استخراج چطور جوایز را تقسیم میکنند؟
شناسایی موفقیتآمیز هش بلاک منجر به پاداش برای استخر میشود، که بعد بر اساس مکانیسم اشتراک استخر مورد تقسیم قرار میگیرد. سهمها مشخص میکنند که کامپیوتر یک کاربر مشخص چه سهمی از توان محاسباتی استخر را تامین کرده است.
دو نوع سهم وجود دارد: قبول شده و رد شده. سهمهای قبول شده نشان میدهند که کاری که توسط یک عضو استخر انجام شده سهمی کلیدی در کشف کوینهای جدید داشته که به اینها پاداش میرسد. سهمهای رد شده نشان میدهند که کار انجام شده نقشی در کشف بلاک جدید نداشته و برای همین پرداختی به آنها انجام نمیشود. حتی اگر کامپیوتر یکی از اعضا با موفقیت کار کرده باشد اما آن را برای آن بلاک مشخص دیر وارد کند، به عنوان کار رد شده در نظر گرفته میشود.
هر عضوی در استخرهای استخراج دوست دارد تمام سهمی که میگذارد قبول شده در نظر گرفته شود. اما به هر ترتیب سهمهای رد شده اجتناب ناپذیر هستند چرا که غیرممکن است تمام محاسبات کامپیوتر یک عضو در کشف کوین جدید موثر باشد، و همیشه هم به موقع در استخر ثبت شود. اعضای استخرها بر اساس سهم قبول شدهای که در پیدا کردن یک بلاک کوین جدید مورد استفاده قرار گرفته پاداش میگیرند. یک سهم هیچ ارزش واقعی ندارد، و تنها به عنوان روشی برای حسابداری از آن استفاده میشود تا توزیع پاداشها منصفانه انجام شود.
انواع روشهای تقسیم پاداش در استخرهای استخراج
با توجه به سهم قبول شده هر عضو، آنها به روشهای گوناگونی پاداش میگیرند، که شامل موارد زیر میشوند:
- پرداخت-برای سهم (PPS): امکان نقد کردن فوری آن هم فقط بر اساس سهم قبول شده ارائه شده توسط هر عضو استخر را میدهد، و در آن عضوها اجازه دارند دریافتی خود را در لحظه از موجودی فعلی استخر برداشت کنند
- نسبتی (PROP): در پایان هر مرحله استخراج، پاداشی متناسب با سهمهای هر عضو به کل سهمها در استخر ارائه میشود
- حداکثر مشترک برای هر سهم (SMPPS): روشی شبیه پرداخت-برای-هر سهم است که در آن پرداختی به حداکثر دریافتی استخر افزایش محدود میشود
- حداکثر برابر مشترک برای هر سهم (ESMPPS): روشی مشابه روش قبلی است، اما پرداختها را به شکل برابر بین تمام ماینرها در استخر تقسیم میکند
این روشها شایعترین روشهای تقسیم جوایز استخراج در استخرهای استخراج است. به جز اینها روشهای دیگری نیز وجود دارد که در بعضی از استخرها ممکن است مورد استفاده قرار بگیرند.
قبل از تصمیمگیری برای پیوستن به یک استخر مشخص، ماینرها باید به این موضوع توجه کنند که این استخر چطور سهمها را بین اعضا تقسیم میکند و چه حقالزحمهای دریافت میکنند. معمولا استخرها بین 1 تا 3 درصد از درآمد اعضا را به عنوان حقالزحمه استخر دریافت میکنند.
مزایای استخرهای استخراج
اگر چه موفقیت در استخراج منفرد یا تکی منجر به مالکیت تمام پاداشها میشود، اما شانس موفقیت در این روش به دلیل نیاز به توان محاسباتی و منابع بالا بسیار اندک است. استخراج اغلب سرمایهگذاری سودآوری برای افراد محسوب نمیشود. استخراج بسیاری از ارزهای دیجیتال در سالهای اخیر با افزایش یافتن محبوبیت آنها دشوارتر شده و هزینههای مرتبط با خرید سختافزارهای گران ضروری برای یک ماینر رقابتی بودن و همچنین هزینههای برق در موارد بسیاری بیشتر از مبلغ پاداشها میشود.
استخرهای استخراج به مشارکت کمتری از سوی هر فرد در سختافزار و هزینههای برق نیاز دارد و با این حال شانس سودآوری بیشتری ایجاد میکند. در جایی که یک ماینر تک شانس بسیار کمی برای کشف یک بلاک و دریافت پاداش استخراج دارد، کار تیمی با دیگران به شکل قابل توجهی نرخ موفقیت را افزایش میدهد.
معایب استخرهای استخراج
افراد با ایفای نقش در استخرهای استخراج بخشی از خودمختاری خود را به فرایند استخراج واگذار میکنند. آنها معمولا به شرایط خود استخر محدود میشوند، که میتواند تعیین کند فرایند استخراج چگونه انجام میشود. همچنین آنها هر پاداش بالقوهای را لازم است تقسیم کنند، یعنی سهم سود برای هر فردی که در استخر شرکت میکند کمتر خواهد بود.
تعداد محدودی از استخرها مثل انتپول (AntPool)، پولین (Poolin)، و اف2پول (F2Pool) روی فرایند استخراج بیت کوین تسلط یافتهاند. اگر چه بسیاری از استخرها تلاش میکنند غیرمتمرکز باشند، این گروهها بخش مهمی از اقتدار تعیین مسیر پروتکل بیت کوین را در اختیار گرفتهاند. برای برخی از فعالان ارزهای دیجیتال، حضور تعداد کمی استخر استخراج قدرتمند بر خلاف ساختار غیرمتمرکزی عمل میکند که در بیت کوین و بسیاری از ارزهای دیجیتال دیگر یک ویژگی ذاتی است.
سخن پایانی
استخراج یک فرایند کلیدی و ضروری در مدیریت بلاکچین و شبکههای ارز دیجیتالی است که از پروتکل گواهی-کار به عنوان یک روش توافق جمعی روی شبکه غیرمتمرکز استفاده میکنند. این فرایند به نحوی طراحی شده است که ظرف هر 10 دقیقه یک بلاک کشف یا پیدا شود. هر چه تعداد ماینرها بیشتر باشد، درجه سختی این فرایند افزایش پیدا میکند. با توجه به رقابتی شدن فرایند استخراج و افزایش تعداد ماینرها در سالهای اخیر، در حال حاضر این فرایند به صورت تکی و منفرد مقرون به صرفه نیست. استخرهای استخراج برای همین ایجاد شدهاند که ماینرهای تک بتوانند شانس بیشتری در استخراج داشته باشند.
استخرهای استخراج از روشهای گوناگونی برای مدیریت همکاری ماینرها استفاده میکنند. تفاوت این روشها بیش از هر چیز در نحوه حسابداری و محاسبه کارکرد هر یک از اعضا، و همچنین نحوه تقسیم و توزیع پاداشهای به دست آمده در استخر است. این استخرها به صورت کلی محدوده فعالیت و کار هر یک از اعضا را تعیین کرده و سپس روی انجام درست این کار نظارت میکنند. در نهایت با مشخص شدن موفقیتآمیز بودن فرایند استخراج، به هر یک از اعضا متناسب با سهمی که در موفقیت داشته، بخشی از پاداش کلی اهدا میشود. به این ترتیب اعضا شانس بیشتری برای به دست آوردن پاداش مییابند.