در این مطلب، نحوه کار Job Negotiation (مذاکره کار) در پروتکل Stratum V2 و چگونگی بهبود تمرکززدایی در ماینینگ بیت کوین توضیح داده میشود.
ابتدا با یک توضیح فنی از فرآیند ماینینگ با استخر، با استفاده از پروتکل Stratum V1 و Stratum V2 شروع خواهیم کرد، چون این موضوع بهطور مشخص در مستندات سایت stratumprotocol.org توضیح داده نشده است و برای درک بهبودهایی که Stratum V2 ایجاد میکند، بسیار مهم است. سپس به دو نگرانی رایج که از سوی ماینرها درباره عملیاتیسازی انتخاب کار توسط ماینرها در Stratum V2 مطرح شده است، خواهیم پرداخت. بعد از آن، یکی از بزرگترین حملات نظری که بسیاری از بیتکوینرها نگران آن هستند، یعنی حمله ی وضعیت (state attack) را بررسی خواهیم کرد. در نهایت، توضیح خواهیم داد که چگونه این مسائل در صنعت مدرن ماینینگ، هم از منظر کسبوکار کوتاهمدت و هم بلندمدت، جا میگیرند.
چرا به آن Job Negotiation (مذاکره کار) گفته میشود؟
ابتدا بیایید ترتیب عملیات را مرور کنیم تا درک مشابهی از روند داشته باشیم.
اگر با نحوه عملکرد استخرهای ماینینگ آشنا نیستید، توصیه میکنیم بخشهای مربوطه از کتاب Mastering Bitcoin، یا مطلبی که قبلا با عنوان «استخراج بیت کوین: بررسی جامع استخراج توسط استخرهای ماینینگ» نوشتیم را مطالعه کنید.
پروتکل Stratum V1
در حال حاضر، این خلاصهای است از نحوه انجام کار در ماینینگ با استخر:
- ماینر به استخر متصل میشود
- استخر به ماینر وظایف کاری (مانند block templates برای کار کردن) میفرستد، بدون اینکه مجموعه کامل تراکنشها را شامل شود.
- ماینر کار را انجام میدهد (یعنی با استفاده از مقادیر nonce، سعی میکند هشهایی پیدا کند که زیر هدف سختی شبکه باشند).
- ماینر، اثبات کار (proof of work) را به استخر ارسال میکند (یعنی nonces که منجر به هشهایی با شرایط «کافی» میشوند).
- استخر، اثبات کار را تایید کرده و بلوکها را زمانی که پیدا شوند، پخش میکند.
- ماینر برای اثبات کاری که ارسال کرده، پاداش دریافت میکند (به آن «سهامها» میگویند).
در این فرآیند، استخرها و ماینرهای مستقل (solo miners) تنها نهاد هایی هستند که الگوهای بلوک را میسازند. ماینرهای عادی (asic) نمیتوانند این کار را انجام دهند، چرا که مجموعه تراکنشها برای ساخت بلوکها را در اختیار ندارند.
پروتکل Stratum V2
این یک نمای کلی و ساده از نحوه کار ماینینگ با استخر در آینده برای ماینرهایی است که تصمیم میگیرند بلوکهای خود را بسازند:
- ماینر به استخر متصل میشود.
- مذاکرهگر کار (Job Negotiator) که نرمافزاری است که یا توسط ماینر یا یک شخص ثالث (بین ماینر و استخر) اجرا میشود، درخواست میدهد که ماینر روی یک قالب بلوک (Block Template) کار کند.
- استخر بررسی میکند که تراکنشهای گنجاندهشده معتبر هستند.
- استخر بررسی میکند که خروجیهای تراکنش کوینبیس صحیح هستند (به این معنی که پرداختها به آدرس استخر ارسال شوند).
- استخر قالب بلوک پیشنهادی ماینر را میپذیرد.
- ماینر روی قالب بلوک خودش کار میکند.
- اگر ماینر یک بلوک پیدا کند، میتواند بلوک را مستقیماً خود منتشر کند، و در نتیجه، سانسور از طرف استخر امکانپذیر نخواهد بود.
- ماینر برای سهامهای (shares) ارسالیاش، پاداش دریافت میکند.
چون انتشار بلوک جدید لزوماً به گره (node) استخر وابسته نیست، این فرآیند با همان سرعتی که اگر ماینر بهطور مستقل (solo) ماینینگ میکرد، اتفاق میافتد.
اگر به اطلاعات بیشتری در رابطه با پروتکلهای Statum V1 و V2 برای مطالعه نیاز دارید، مطلب قبلی با عنوان «پروتکلهای Stratum و Stratum 2: پروتکلهای ارتباطی در استخراج ارزهای دیجیتال» را ببینید.
اقتصاد مذاکره کار ماینر
سوالی که مطرح میشود این است که چگونه پرداختها، زمانی که ماینرها در حال کار بر روی بلوکهای مختلف در یک استخر هستند، انجام خواهد شد. پاسخ این است که هر ماینر بر اساس ارزش سهمهایی که ارسال میکند پاداش دریافت میکند ، نه بر اساس ارزش بلوکی که استخراج میشود.
به عنوان مثال، فرض کنید ماینرهای یک استخر در حال کار بر روی دو الگوی بلوک زیر(block template) هستند:
- ارزش الگوی بلوک ۱: ۸٫۰ بیتکوین
- ارزش الگوی بلوک ۲: ۷٫۵ بیتکوین
ماینرهایی که روی بلوک ۸٫۰ بیت کوینی کار میکنند، برای سهمهای معتبر خود به طور نسبی بیشتر از ماینرهایی که روی بلوک ۷٫۵ بیتکوین کار میکنند، پاداش دریافت خواهند کرد. این بدان معناست که ماینرهایی که گرههای کامل (full node) و متصلتری دارند، ممکن است بتوانند روی بلوکهایی با ارزش بالاتر از آنچه که استخرها توزیع میکنند، کار کنند و بدین ترتیب پرداختهای بیشتری نسبت به ماینرهایی که الگوهای بلوک خود را پیشنهاد نمیدهند، دریافت کنند.
مهمتر از همه، این بدان معناست که ماینرهایی که بلوکهایی با مجموعه تراکنشهای با ارزش پایینتر پیشنهاد میدهند، پرداخت کمتری دریافت خواهند کرد، اما این مسئله تأثیری بر پرداختهای ماینرهای دیگر در استخر نخواهد داشت.
نگرانیهای تاخیر (Latency) شبکه
نکته دیگری که ارزش بررسی دارد این است که در لحظات بلافاصله پس از یافتن و انتشار یک بلوک جدید چه اتفاقی میافتد. فرآیند Job Negotiation میتواند چند ثانیه طول بکشد و هر ثانیه در جستجوی نانسها اهمیت دارد. این ناحیه خاکستری میتواند با استفاده از شروع غیرهمزمان (asynchronous start) حل شود، به این معنی که ماینرها میتوانند بلافاصله کار بر روی بلوکهای خود را شروع کنند در حالی که استخر هنوز در حال اعتبارسنجی آنها است. پس از اعتبارسنجی الگوی بلوک پیشنهادی توسط استخر، کاری که توسط ماینر(ها) انجام شده است، مطابق با آن پرداخت خواهد شد. در صورتی که ماینر الگوی بلوک نامعتبری پیشنهاد دهد، سهمهای مربوط به آن چند ثانیه کار رد میشوند و پرداختی برای آن انجام نخواهد شد.
یک الگوی بلوک پیشنهادی میتواند به دو دلیل رد شود:
- نامعتبر بودن
- سانسور
به طور حیاتی، ماینر متوجه میشود که اگر خطای خاصی دریافت کند اما بلوک پیشنهادیاش معتبر بوده باشد، باید به استخر دیگری متصل شود یا به صورت سولو ماینینگ ادامه دهد. بنابراین، فرآیند Job Negotiation به ماینرها این امکان را نمیدهد که روی هر الگوی بلوک تصادفی که میخواهند کار کنند، بلکه به عنوان یک سیستم هشدار زودهنگام عمل میکند که به ماینرها مشکلات احتمالی با اپراتورهای استخر را بسیار زودتر از زمانی که ماینر گره کامل نداشته باشد و کار خود را پیشنهاد نکند، اطلاع میدهد.
مثال عملی از Job Negotiation در ماینینگ بیت کوین
با این توضیح از نحوه عملکرد Job Negotiation، حالا میتوانیم در نظر بگیریم که چگونه این فرآیند در دنیای واقعی به کار میآید.
فرض کنید که ۴ استخر استخراج که مجموعاً اکثریت هش ریت شبکه را دارند، به طور همزمان توسط یک طرف مخرب (مثلاً دولت یک کشور) تحت کنترل قرار میگیرند. علیرغم اینکه اپراتورهای استخر تمایلی به خراب کردن شهرت خود یا آسیب رساندن به شبکهای که در آن سرمایهگذاری زیادی کردهاند ندارند، طرف مخرب هیچ گزینه دیگری به آنها نمیدهد و آنها مجبور میشوند در یک حمله ۵۱٪ و بازچینی عمیق (deep reorg) مشارکت کنند.
در سناریوی تنها با پروتکل استراتوم V1، ماینرهایی که هشریت واقعی را به این استخرها میدهند ممکن است متوجه نشوند که ناخواسته در یک حمله مشارکت میکنند، تا اینکه دیگر خیلی دیر شده باشد.
اما در سناریوی آیندهای که برخی از این ماینرها کار خود را به صورت مستقل (با پیشنهاد بلوکهای خود) انتخاب میکنند، زمانی که الگوهای بلوک معتبر آنها رد میشود بلافاصله متوجه میشوند که مشکلی وجود دارد. اگر ماینر هایی که کنترل بخش بزرگی از هشریت استخرهای این ۴ استخر را دارند، بلوکهای خود را پیشنهاد دهند، آنها میتوانند با تغییر استخرهای خود به محض اینکه استخرهای اولیه شروع به سانسور آنها کنند،به طور مؤثر از یک حمله ۵۱٪ پایدار جلوگیری کنند. این بدان معنا نیست که تمام ماینرها در این استخرها باید بلوکهای خود را پیشنهاد دهند، بلکه تنها درصد کافی از آنها که گرههای کامل (Full Node) اجرا میکنند، قادر خواهند بود با تغییر استخرها، هش ریت تجمعی استخرهای مهاجم را به زیر ۵۰٪ بیاورند.
در این مثال، از ۴ استخر استفاده شده زیرا این تعداد حداقل تعداد استخرهایی است که برای کنترل اکثریت هش ریت شبکه در شرایط فعلی لازم است، اما در آینده ممکن است یک استخر با اکثریت هشریت هم به اندازه کافی برای چنین حملهای کافی باشد. نکته مهم این است که در این سناریو برخی از استخرها باید صادق و غیرمخرب باقی بمانند، چرا که ماینینگ سولو برای اکثریت ماینرها از نظر اقتصادی توجیهپذیر نیست.
پاداش ها چه میشوند؟
از آنجایی که استخرها به طور موقت حضانت پاداش های استخراج شده را در اختیار دارند، میتوان اینطور استدلال کرد که استخرها ممکن است به سادگی بیتکوین را به ماینری که مثلاً تراکنشی را در بلاک خود قرار داده که استخر نمیخواست در آن گنجانده شود، ارسال نکنند. به عبارت دیگر، استخرها همچنان میتوانند ماینرهای خود را با قرار دادن شرایطی برای پرداختها سانسور کنند، و این به نوعی هدف غیرمتمرکز بودن بیتکوین را نقض میکند.
برای این استدلال، دو نکته کلیدی وجود دارد که باید در نظر گرفته شود:
- استخر در ابتدای دورهای استخراج، الگوهای بلاک را میپذیرد یا رد میکند، و ماینرها میتواند بلاکهای پیدا شده را خودشان منتشر کنند.
- استخرها به طور مکرر پرداخت انجام میدهند (در اکثر موارد چندین بار در روز)، بنابراین ریسک مالی برای استخراجکنندگان در عدم دریافت دستمزد برای کار صحیح کم است. در عین حال، استخرهایی که به استخراجکنندگان خود پرداخت نمیکنند، با ریسک آسیب دائمی به شهرتشان و از دست دادن کسبوکار آینده روبرو هستند.
همانطور که در بسیاری از جنبههای اکوسیستم بیت کوین، یک معامله بین تجربه کاربری و امنیت وجود دارد. استخرهای بزرگ با هزاران کاربر کاملاً بی نیاز از اعتبار سنجی (trustless) نیستند، اما ارائه پرداختهای مکرر و داشتن سهم مناسب در این زمینه ریسک را به حداقل میرساند، همانطور که راحتی در تغییر استخر در هر زمان در صورتی که اعتماد آسیب ببیند، این ریسک را کاهش میدهد.
تمرکززدایی برای تمرکززدایی
اگرچه ما میدانیم که چگونه میتوان اجرای Job Negotiation در Stratum V2 را به طور عملی پیادهسازی کرد، هنوز این سوال مطرح است که آیا ماینرهای امروزی علاقهای به ساخت قالبهای بلاک خود دارند یا خیر.
بهبود تمرکززدایی بیتکوین با استفاده از Stratum V2 بستگی به پذیرش گسترده Job Negotiation دارد و ممکن است این اتفاق نیفتد. میتوانیم برخی از موارد استفاده را تصور کنیم که باعث تشویق پذیرش Job Negotiation میشود، از جمله همان موردی که بالا توضیح دادیم که در آن ماینرها که «گرههای کامل متصل»، دارند میتوانند با کار بر روی بلاکهای با ارزشتر، درآمد خود را افزایش دهند.
در نهایت، ما بر این باوریم که این یک بخش طبیعی از تکامل صنعت ماینینگ است. ماینرهای بزرگ مقیاس در حال سرمایهگذاری میلیونها دلار برای ساخت و نگهداری عملیات کارآمد هستند و زمان زیادی طول میکشد تا به نقطه سر به سر این سرمایهگذاریها برسند. با راهاندازی گرههای کامل (full node) خود و کار بر روی قالبهای بلاک خود، ماینرها میتوانند ایمنی به شبکه اضافه کرده و اصول بنیادین بیت کوین را با کمترین هزینه اضافی تقویت کنند. این در راستای منافع هر ماینری است که میخواهد از سرمایهگذاری بلندمدت خود محافظت کرده و آن را به حداکثر برساند.
مروری بر آنچه گفته شد …
جدا کردن پروسه ساخت بلاک و انتشار آن، از مرحله پرداختهای پاداش استخر، راهحل کاملی نیست، اما یک سیستم شناسایی زودهنگام برای رفتارهای مخرب از سوی اپراتورهای استخر فراهم میکند. این کار همچنین تعداد بیشتری گره کامل ماینینگ را به شبکه اضافه میکند و حتی آنها را تشویق میکند تا بهخوبی متصل شوند تا بتوانند بلاکهای با ارزشتر و کارمزد تراکنشهای تجمعی بالاتری استخراج کنند.
پذیرش این سیستم به یک شبه اتفاق نخواهد افتاد و در واقع ممکن است سالها طول بکشد.
منبع: مقاله Bitcoin’s Decentralization with Stratum V2 در وبسایت braiins.com