در این پست، مقاله «آینده پروتکلهای استخراج بیت کوین» (The Future of Bitcoin Mining Protocols) نوشته تیم تحقیقاتی Galaxy Digital را عینا ترجمه کردهایم. مقاله به بررسی تغییرات و تحولات آینده در پروتکلهای استخراج بیتکوین میپردازد و جزئیات فنی عمیقی را در رابطه با نحوهی تکامل این پروتکلها، چالشها و فرصتهای پیش روی صنعت استخراج ارائه میدهد. این مقاله بیشتر برای افراد علاقهمند به حوزههای فنی بلاکچین، ارزهای دیجیتال و به ویژه استخراج بیت کوین مفید است.
در این گزارش، توضیح میدهیم که چگونه ماینرهای بیتکوین با استخرها ارتباط برقرار میکنند، مروری بر پروتکل موجود (Stratum V1) ارائه میدهیم و به بهبودهایی که Stratum V2 ارائه میدهد و مسیرهای پذیرش آن توسط شرکتکنندگان شبکه بیت کوین پرداخته میشود.
چکیده
زمانی که ماینرهای بیتکوین با استخرهای استخراج همکاری میکنند، همانطور که اکثریت آنها این کار را انجام میدهند، از یک پروتکل پیامرسانی به نام Stratum V1 برای ارتباط با استخرها استفاده میکنند. این پروتکل فرآیند ایجاد بلاکها و ارسال هشها توسط ماینرها را سازماندهی میکند. با گذشت سالها و افزایش محبوبیت بیت کوین، نرخ هش شبکه نیز رشد کرده است. Stratum V1 به خوبی از جامعه پشتیبانی کرده است، اما زمان آن فرا رسیده که یک پروتکل جدیدتر و مقاومتر برای مدیریت نرخ هش بالای امروز ارائه شود. Stratum V2 یک پروتکل جدید برای استخراج بیت کوین است که به عنوان نسل بعدی پروتکل Stratum V1 معرفی میشود و بهبودهای زیادی را هم برای ماینرها و هم برای استخرهای استخراج به ارمغان میآورد. با اینکه پروتکل Stratum V2 خبر بزرگی به حساب میآید، این پروژه توجه کافی را جلب نکرده است. هدف این مقاله تغییر این وضعیت است و در آن به معرفی Stratum V2 پرداخته میشود؛ ابتدا دلیل نیاز به یک پروتکل جدید توضیح داده میشود، همراه با ویژگیهای مطلوب یک پروتکل مقاوم برای استخراج. در این گزارش همچنین مروری بر پروتکل موجود Stratum V1 خواهیم داشت، به بررسی بهبودهای ارائهشده توسط Stratum V2 میپردازیم و در نهایت تلاشها برای ترویج پذیرش این پروتکل جدید را مورد بحث قرار میدهیم.
مقدمه
بررسی هشریت شبکه مکان مناسبی برای شروع به منظور درک بهتر از نرمافزارهای ماینینگ بیتکوین است؛ موضوعی که ممکن است برای برخی از خوانندگان جدید باشد. هش ریت شبکه، معیاری از قدرت محاسباتی در شبکه بیتکوین است و این قدرت محاسباتی توسط دستگاههای ASIC بیت کوین که معمولاً به آنها ASIC یا ماینر گفته میشود، تأمین میشود. شکل ۱، هشریت کل شبکه بیت کوین را در طول زمان بر روی مقیاس لگاریتمی نشان میدهد. روند کلی این است که هشریت با گذشت زمان افزایش مییابد.
صرفنظر از نوع دستگاه متصل به پروتکل بیتکوین (CPU، GPU یا ASIC)، این دستگاهها از طریق یک پروتکل ماینینگ به شبکه متصل میشوند که معمولاً در نرمافزار داخلی دستگاه پیادهسازی میشود. تا به امروز، چهار پروتکل اصلی ماینینگ وجود داشته است:
۱- کلاینت اصلی بیت کوین (CPU mining)
۲- getwork
۳- getblocktemplate
۲ و ۳- (GBT) که در ماینینگ با FPGA و GPU استفاده میشدند،
۴- Stratum (پروتکلی که در ماینینگ با ASIC استفاده میشود).
پروتکل Stratum معمولاً تنها یک نسخه داشته است که به آن Stratum V1 گفته میشود. در حال حاضر، تلاشهای زیادی برای توسعه نسخه جدید آن، یعنی Stratum V2، در حال انجام است. در این مقاله، ما پروتکل فعلی را بررسی خواهیم کرد، قابلیتها و محدودیتهای آن را مرور کرده و آن را با Stratum V2 مقایسه خواهیم کرد.
شرایط صنعت که منجر به Stratum شد
برای درک دلیل نیاز مبرم به یک پروتکل جدید ماینینگ، مفید است که شرایط تاریخی را بررسی کنیم که باعث تغییر در پروتکلهای ماینینگ قبلی شدهاند. شکل ۲ هش ریت کل شبکه را در طول زمان نشان میدهد و نحوه انتقال فضا بین پروتکلهای مختلف ماینینگ را در طی سالها به تصویر میکشد. این شکل نشان میدهد که پروتکلهای ماینینگ جدید به طور طبیعی زمانی ظهور میکنند که هشریت شبکه یک جهش بزرگ و دائمی داشته است. همچنین، با ورود دستگاههای جدید و قدرتمندتر برای هشینگ، نیاز به پروتکلی که بتواند بار جدید را به صورت کارآمد و ایمن مدیریت کند، احساس میشود.
در اوایل سال ۲۰۱۱، ماینینگ با CPU در کلاینت بیت کوین کنار گذاشته شد و به جای آن از دستگاههای FPGA و GPU با عملکرد بالاتر استفاده شد که از پروتکلهای getwork و gbt بهره میبردند. این پیشنیازهای پروتکل Stratum برای دوران پیش از ASIC مناسب بودند، اما تا اواخر سال ۲۰۱۲، اولین دستگاههای ASIC بیتکوین در دسترس بودند و وعده افزایش هش ریت شبکه به طور بیسابقهای را میدادند.
در پاسخ به این شرایط، کاربری از انجمن Bitcoin Talk به نام “Slush” پروتکل Stratum را توسعه داد و در سپتامبر ۲۰۱۲ آن را منتشر کرد. Slush دلایل زیر را برای پیشنهاد پروتکل جدید Stratum ارائه داد:
«دلیل طراحی این پروتکل و پیادهسازی سرور استخر متنباز این است که پروتکل فعلی getwork&lp مشکلات بسیاری دارد و به سختی میتوان از آن در تنظیمات بزرگ مقیاس استفاده کرد. احتمالاً دستگاههای ASIC در اواخر سال ۲۰۱۲ وارد بازار خواهند شد، بنابراین جامعه بیت کوین به طور قطع به یک راهحل نیاز دارد که به راحتی قادر به مقیاسپذیری به، تراهش در ثانیه برای هر کاربر استخر باشد…»[۱]
استدلال Slush از این ایده حمایت میکند که زمانبندی در تغییر پروتکلهای ماینینگ اهمیت زیادی دارد و زمان مناسب برای این تغییر، زمانی است که هش ریت شبکه جهش بزرگ و دائمی داشته باشد.
هشریت شبکه
با گذشت تقریباً یک دهه از اعلام پروتکل Stratum V1 توسط Slush، هش ریت هنوز فراتر از انتظارات افزایش می یابد. شکل ۳ نشان میدهد که چگونه هش ریت شبکه از زمان ورود دستگاههای ASIC بیتکوین و پذیرش Stratum V1 در اوایل ۲۰۱۳، مقیاسپذیری داشته است. دوباره، هشریت از ابتدای شبکه به طور پیوسته افزایش یافته است.
پروتکل Stratum V1 برای سطوح بالای هش ریت کنونی که ما مشاهده میکنیم طراحی نشده است. زمانی که این پروتکل طراحی شد، هش ریت شبکه تنها حدود TH/s 12 بود. این رقم را با هشریت کنونی که تقریباً ۲۰۰ میلیون TH/s است مقایسه کنید. این یک افزایش حدود ۱۶ میلیون برابری است! بدون شک، شرایط تغییر کرده و هیچ نشانهای از کند شدن رشد هشریت وجود ندارد. پیشبینیهای Galaxy برای هش ریت نشان میدهند که تا پایان ۲۰۲۲، هش ریت به ۳۳۵ EH/s خواهد رسید که تقریباً ۱٫۷۵ برابر هش ریت حدود ۱۸۹ EH/s در ژانویه ۲۰۲۲ است. این بازگشتی سریع و شگفتآور پس از آن است که چین، که قبلاً نیروی غالب در ماینینگ بیتکوین بود، در سال گذشته ماینینگ را به طور دائمی ممنوع کرد.
فقط بر اساس روند هشریت شبکه، به راحتی میتوان استدلال کرد که پروتکل جدید ماینینگ چندین سال از زمان خود عقب افتاده است. در دنیای ایدهآل، صنعت باید در اواخر ۲۰۱۶ یا اوایل ۲۰۱۷ (که در شکل ۳ نشان داده شده) یک پروتکل ماینینگ بهروز دریافت میکرد، پیش از افزایش شدید ناشی از دستگاههای کارآمدتر و پذیرش بیشتر شبکه. این همان زمانی است که Matt Corallo پیشنویس BetterHash BIP خود را منتشر کرد که بعداً به پروتکل Stratum V2 افزوده شد.[۲]
اما حالا برگردیم به Stratum V1…
مبانی Stratum V1
پیامهای پروتکل Stratum V1
ماینینگ انفرادی (solo mining) دیگر تقریباً به گذشته پیوسته است. امروزه، اکثریت عظیمی از ماینرها به ماینینگ با استخر (pooled mining) میپردازند، دستگاههای ASIC در یک مزرعه ماینینگ هشینگ را انجام میدهند و سرور استخر وظیفه ارسال کارها به دستگاهها را دارد. پاداشها به تناسب قدرت محاسباتی شرکتکنندگان استخر بین آنها تقسیم میشود. دستگاههای ASIC و سرور استخر از طریق ارسال پیامهای مختلف با یکدیگر ارتباط برقرار میکنند. این پیامها توسط پروتکل Stratum V1 تعریف شدهاند. چهار پیام اصلی پروتکل عبارتند از: subscribe (اشتراکگذاری)، authorize (مجوز دادن)، notify (اعلام) و submit (ارسال).
شکل ۴ بالا جریان پیامهای اصلی بین دستگاههای ASIC و استخر را نشان میدهد. این پیامها نمای دقیقی از دادههای واقعی هستند که بین ماینر و استخر در پروتکل Stratum V1 ارسال میشود.
- پیام subscribe (اشتراکگذاری):
دستگاه ASIC پیام subscribe را به استخر ارسال میکند و اعلام میکند که میخواهد خود را به عنوان یک کارگر تأیید کند و شروع به ماینینگ نماید. اگر این پیام موفقیتآمیز باشد، استخر با یک تاییدیه پاسخ میدهد. توجه کنید که این پاسخ شامل دادههای غیرضروری است که هنوز برای ماینر قابل استفاده نیستند. - پیام authorize (مجوز دادن):
دستگاه ASIC یک پیام authorize ارسال میکند که شامل نامکاربری و رمز عبور برای ورود به استخر است. استخر با یک تاییدیه پاسخ میدهد. توجه داشته باشید که رمز عبور به صورت متنخام (plaintext) ارسال میشود (یعنی رمزگذاری نشده است). - پیام notify (اعلام):
استخر بلافاصله پیام notify را به دستگاه ASIC ارسال میکند که تمام اطلاعات مورد نیاز برای شروع کار ماینر را در بر دارد. - پیام submit (ارسال):
پس از اینکه دستگاه ASIC یک کار معتبر را پیدا کرد[۴]، اطلاعات را از طریق یک پیام submit به استخر ارسال میکند. استخر با یک تاییدیه پاسخ میدهد و سپس یک پیام notify دیگر ارسال میکند، که این چرخه ادامه مییابد.
کانکشن Stratum V1
شکل ۵ زیر نشان میدهد که طبق دستورالعمل Stratum V1، هر ماینر یک اتصال مستقیم (یا به عبارت Stratum V2، یک کانال اختصاصی) به استخر دارد. این مدل برای استخراج صنعتی و مقیاس بزرگ امروزی ایدهآل نیست، زیرا به دلیل تعداد زیادی از اتصالات مورد نیاز در این عملیات، مشکلاتی ایجاد میشود. مزارع استخراج ممکن است دهها هزار ماینر داشته باشند و ایجاد اتصال مستقیم برای هر ماینر به استخر، بدون نیاز به آن، پهنای باند زیادی مصرف کرده و فرصتهای به اشتراکگذاری دادههای مشترک میان ماینرها را از دست میدهد. این عدم کاراییها باعث کاهش بهرهوری عملیات استخراج و تأثیر منفی بر سودآوری ماینرها میشود.
برای حل این مشکل، مزارع استخراج از سرورهای پراکسی برای بهبود کارایی عملیات خود استفاده میکنند. با این حال، این سرور پراکسی در پروتکل Stratum V1 گنجانده نشده و استاندارد نشده است. برخی از سرورهای پراکسی در GitHub وجود دارند، اما بسیار قوی نیستند و بیشتر مزارع استخراج راهحلهای داخلی خود را توسعه میدهند. نحوه قرارگیری معمول سرور پراکسی در عملیات استخراج در شکل ۶ زیر توضیح داده شده است.
ویژگیهای یک پروتکل استخراج
درک اصول پایهای Stratum V1 کمک میکند تا ویژگیهای مورد نیاز برای یک پروتکل استخراج که بتواند شرایط صنعت امروز را بهتر پشتیبانی کند، تعیین شود.
چهار ویژگی کلیدی که باید در نظر گرفته شوند عبارتند از:
- کاربردپذیری (Usability)
- درآمد ماینر (Miner Revenue)
- امنیت ماینر (Miner Security)
- امنیت شبکه (Network Security)
معیار ۱: کاربردپذیری
اولین و مهمترین ویژگی این است که پروتکل استخراج باید برای ماینرها قابل استفاده باشد. این به معنی آن است که پروتکل باید:
- نصب آسان: داشتن موانع کم برای شروع استخراج توسط ماینرها، به ویژه در پذیرش سریع یک پروتکل جدید، اهمیت زیادی دارد.
- عملکرد ساده پس از نصب: پیچیدگی در عملیات یا نگهداری میتواند منابع ماینر را مصرف کند و پذیرش آن را دشوارتر کند.
- استانداردسازی شده: استانداردسازی در تنظیمات مختلف، کار را برای ماینرها سادهتر میکند تا بتوانند به راحتی پروتکل را پیادهسازی، نگهداری و استفاده کنند. استانداردسازی تمام جنبههای پروتکل استخراج اطمینان میدهد که تمامی شرکتکنندگان از سختافزارهای سازگار استفاده میکنند و از پیادهسازی بهینهتر بهرهمند میشوند.
- قابلیت انعطافپذیری: پروتکل باید برای یک علاقهمند که تنها یک دستگاه S9 را راهاندازی کرده، مناسب باشد و در عین حال برای عملیات صنعتی با دهها هزار دستگاه نیز قابل گسترش باشد.
نکتهای درباره انعطافپذیری
انعطافپذیری در اینجا اهمیت ویژهای دارد. پروتکلی که برای شرایط امروز مناسب باشد، باید انعطافپذیر باشد تا بتواند نیازهای مختلف ماینرها را پوشش دهد. یکی از روشها برای افزایش انعطافپذیری، ارائه گزینههای مختلف برای پیکربندی کانالها به ماینرها برای اتصال به استخر است. کانالها به طور مفصلتر در ادامه توضیح داده خواهند شد، اما در اینجا میتوان آنها را به عنوان نوعی اتصال در نظر گرفت که انواع خاصی از پیامها را ارسال میکند و این امکان را به ماینرها میدهد تا از ویژگیهای مختلف پروتکل استخراج استفاده کنند. به طور کلی، مفید است که این اتصالات را برای به اشتراکگذاری دادهها در مواقعی که لازم است، تجمیع کنیم، به این ترتیب ارسال دادههای غیرضروری کاهش یافته و مصرف بار پردازنده و پهنای باند کاهش مییابد که در نهایت منجر به کاهش مصرف انرژی و افزایش پاداش ماینر میشود.
معیار ۲: درآمد ماینر
هدف اصلی ماینرها حداکثر کردن درآمد است. به حداقل رساندن میزان قدرت محاسباتی و زمانی که یک ماینر برای دریافت یک کار، شروع به استخراج و ارسال نتیجه به استخر نیاز دارد، به سودآوری ماینر کمک میکند. در اصل، پروتکل باید هر وات مصرفی را به حداکثر بهرهوری برساند.
طراحی پروتکلی که تعداد پیامهای ارسال شده بین ماینر و استخر را کاهش دهد و همچنین اندازه پیامها را کوچکتر کند، به کارایی قابل توجهی میانجامد. این کار باعث صرفهجویی در بار پردازنده، پهنای باند و زمان ماینر و استخر میشود و به کاهش نسبت کارهای منقضیشده (stale jobs) و افزایش پاداش ماینر کمک میکند.
معیار ۳: امنیت ماینر
پس از حداکثر کردن درآمد ماینر، حفظ آن درآمد به امری ضروری تبدیل میشود. دو سطح بزرگ حمله که در حال حاضر وجود دارند عبارتند از:
- حملات مرد میانی (Man-in-the-Middle – MitM)
- دزدی پاداش توسط استخر (Pool Skimming)
محافظت در برابر حملات Man-in-the-Middle – MitM در ماینینگ بیتکوین
پروتکل استخراج باید رمزگذاری و احراز هویت مناسب را به گونهای فراهم کند که پاداش ماینر در برابر حمله خاصی به نام هایجک کردن هش ریت (hashrate hijacking) محافظت شود. در این نوع حمله، مهاجم ارتباط بین استخر و ماینر را زیر نظر میگیرد و بستههای ارسالشده بین آنها را رهگیری میکند. بدون اطلاع ماینر، مهاجم اطلاعات ورود به استخر ماینر را با اطلاعات خود جایگزین میکند و به این ترتیب هش ریت ماینر به سمت خود هدایت میشود.
این حملات ممکن است و اتفاق میافتند. در واقع، این حملات احتمالاً شایعتر از آنچه که فکر میکنیم هستند، چرا که شناسایی آنها بسیار دشوار است، مگر اینکه یک مزرعه استخراج به طور خاص به دنبال این حملات باشد، که این کار برای مزارع بزرگ با هزاران ماینر، به ویژه پیچیده است. حتی ممکن است بتوان گفت که اپراتورهای مزارع استخراج تمایلی به افشای این نوع حملات ندارند، زیرا این کار تصویر خوبی از آنها به نمایش نمیگذارد.
محافظت در برابر Pool Skimming
روش Pool Skimming یک روش دیگر حمله است که توسط خود استخر انجام میشود. در این حمله، استخر به طور مخفیانه مقداری از پاداش ماینر را سرقت میکند. به عبارت دیگر، استخر بخشی از پاداش ماینر را به طور پنهانی “skim” میکند. برای اینکه یک پروتکل استخراج واقعاً از سود ماینرها محافظت کند، باید مکانیزمی برای فراهم کردن شفافیت در پرداختهای ماینرها داشته باشد.
این مکانیزم باید به ماینرها این امکان را بدهد که بتوانند به راحتی بررسی کنند که تمام پاداشها به درستی به حسابشان واریز شده است و هیچگونه دستکاریای در پرداختها صورت نگرفته است.
معیار ۴: امنیت شبکه
در نهایت، امنیت شبکه است. صنعت به پروتکلی برای استخراج نیاز دارد که همراستا با انگیزههای ماینرها، تضمینهای مقاومت در برابر سانسور و تمرکززدایی که از شبکه بیت کوین انتظار داریم را فراهم کند.
مقایسه Stratum V1 و Stratum V2
جدول ۱، مقایسهای بین Stratum V1 و V2 بر اساس معیارهای کلیدی که تمامی پروتکلها باید داشته باشند، ارائه میدهد. این جدول نشان میدهد که Stratum V2 چه ارزشی به استخراج و شبکه بیت کوین اضافه خواهد کرد.
اگرچه Stratum V2 از لحاظ «موانع پایین برای ورود» ضعفهایی دارد، اما ویژگیهای جذاب و بیشتری را ارائه میدهد که نه تنها پذیرش آن را تسهیل خواهد کرد، بلکه منجر به یک اکوسیستم استخراج امنتر و قویتر در آینده خواهد شد.
معیار ۱: کاربردپذیری
موانع پایین برای ورود (Low Barrier to Entry)
با وجود محدودیتهای موجود (یا شاید به دلیل همین محدودیتها) و همچنین رشد صنعتی که حول این پروتکل شکل گرفته است، راهاندازی Stratum V1 بسیار ساده است. از نظر عملی، یک ماینر تنها کافی است دستگاه خود را وصل کند، اطلاعات استخر را وارد کند و استخراج را شروع کند. دلیل ساده بودن این فرایند این است که پروتکل Stratum V1 به عنوان پروتکل پیشفرض در فریمورهای OEM پیادهسازی شده است، بنابراین نیازی به تغییرات اضافی از سوی ماینر برای شروع کار نیست. اما توجه داشته باشید که پروتکل Stratum V1 محدود است. یکی از بزرگترین محدودیتهای آن عدم وجود مشخصات پراکسی است. بنابراین، در حالی که شروع به کار بسیار ساده است، ماینر بدون توسعه سرور پراکسی خود خارج از مشخصات پروتکل (که کار چندان سادهای نیست)، کارایی کمتری خواهد داشت.
این معیار «موانع پایین برای ورود» بدون شک یکی از مهمترین معیارها برای پذیرش سریع یک پروتکل جدید است. پیچیدگیهای ساخت و مدیریت یک مزرعه استخراج اغلب نادیده گرفته میشود، در حالی که این کار یک تلاش عظیم است که اجزای مختلف زیادی دارد، هم به طور مجازی و هم به طور فیزیکی. بنابراین، از دید ماینر، سادهترین روش برای راهاندازی فریمور، اهمیت زیادی دارد.
متأسفانه، دو تلاش اصلی برای پذیرش Stratum V2 که در این گزارش به آن پرداخته شده است، هنوز این معیار را به طور کامل برآورده نمیکند. با این حال، Stratum V2 مزایای کاربردی بیشتری فراتر از معیار «موانع پایین برای ورود» ارائه میدهد که در پذیرش و استفاده بهینه از آن کمک خواهد کرد.
تعریف دقیق و مستند پروتکل
برای پروتکل استخراج، داشتن تعریف دقیق و مستندسازی کامل امری ضروری است. استانداردسازی در نهایت به یک محیط توسعه سالم و محصولات استخراج بهتر برای جامعه منجر خواهد شد.
پروتکل Stratum V1، اگرچه نسبت به نسخههای پیشین خود بهتر تعریف شده است، هنوز به طور کامل مشخص نشده است. در نتیجه، این پروتکل نامشخص جای تفسیر و برداشتهای مختلف را باز میگذارد که منجر به پیادهسازیهای غیر یکپارچه، منطق در طرف سرور استخر و همچنین در طرف کلاینت ماینر میشود. به طور کلی، استفاده از Stratum V1 در سادهترین حالت خود که استخراج مستقیم به استخر با استفاده از فریمور OEM Stratum V1 است، ساده است. با این حال، مشکلاتی زمانی پیش میآید که نیازهای ماینر از این تنظیمات ساده فراتر میرود. برای مثال، امروزه بسیاری از ماینرها از تعداد زیادی دستگاه ASIC استفاده میکنند و به شدت از استفاده از سرور پراکسی برای تجمیع اتصالات و کاهش بار پهنای باند و پردازنده بهرهمند میشوند. در این تنظیمات پیچیدهتر، نبود یک پروتکل قدرتمند باعث میشود که ماینرها مجبور شوند راهحلهای سفارشی داخلی ایجاد کنند. این موضوع وقت و منابع ارزشمند مزرعه استخراج را منحرف میکند و هیچ تضمینی وجود ندارد که مزرعه راهحل بهینه را پیادهسازی کرده باشد.
از طرف دیگر، Stratum V2 به دنبال ارائه یک پروتکل کاملاً و دقیقاً تعریف شده است که هیچگونه جای تفسیر برای آن باقی نمیگذارد. پروتکل Stratum V2 شامل منطق پیادهسازی برای دستگاههای ASIC، سرور پراکسی و سرور استخر است. اهمیت این موضوع را نمیتوان به اندازه کافی تأکید کرد. پروتکل استخراج از مجموعهای از پیامهای ساده JSON/RPC که بین سرویس استخر و دستگاه استخراج ارسال میشد، به یک پروتکل کامل برای دستگاه استخراج، پراکسی و منطق سرور استخر تبدیل شده است. با یک پروتکل کاملاً مشخص، ماینرها و استخرها میتوانند مطمئن باشند که تمامی پیادهسازیها نه تنها سازگار هستند، بلکه از کارایی بیشتری نیز برخوردارند؛ چیزی که صنعت استخراج به شدت به آن نیاز دارد.
آسان برای استفاده
پروتکل Stratum V1 به این راحتیها قابل استفاده نیست، زیرا برای مدیریت شرایط خاص نیاز به انجام هکها و راهحلهای غیررسمی زیادی دارد (از جمله مواردی ساده مانند پیادهسازیهای پراکسی که در این پست به آن اشاره شده است). این موضوع عمدتاً به دلیل نبود استانداردسازی صحیح، که پیشتر به آن اشاره شد، است.
در حالی که نگهداری یک سرور اضافی برای میزبانی پراکسی Stratum V2 و یا نصب فریمور سازگار با Stratum V2 در حال حاضر با موانعی مواجه است، اما پس از نصب، استفاده از آن به راحتی فریمور OEM است که ماینرها هماکنون برای Stratum V1 استفاده میکنند و قطعاً استفاده از آن نسبت به استفاده از فریمور OEM Stratum V1 با یک راهحل پراکسی سفارشی خانگی، سادهتر خواهد بود.
انعطافپذیری
به طور کلی، Stratum V1 یک پروتکل بسیار کم انعطاف است. همانطور که در شکل ۵ بالا مشاهده میشود، هر دستگاه ASIC یک اتصال اختصاصی به استخر دارد، که این امر برای ماینرهای بزرگ به ویژه مشکلساز است، زیرا این اتصالات جداگانه باعث افزایش بار پردازنده (CPU) و مصرف زیاد پهنای باند میشود. Stratum V1 هیچ تنظیمات پیکربندیای برای تجمیع اتصالات (مانند سرور پراکسی) ندارد. اینجاست که طراحی پروتکل کاملاً مشخص و جامع Stratum V2 به وضوح از Stratum V1 برتری پیدا میکند.
همانطور که قبلاً اشاره شد، بسیاری از ماینرها از یک پراکسی برای کمک به تجمیع اتصالات استفاده میکنند تا بار پردازنده و پهنای باند را کاهش دهند و کارایی را بهبود بخشند. با این حال، منطق پراکسی به طور بومی در پروتکل Stratum V1 گنجانده نشده است و در نتیجه هیچگونه استانداردسازیای در این زمینه وجود ندارد. چند پراکسی Stratum متنباز در GitHub وجود دارد، اما این پراکسیها ضعیف بوده و قادر به مدیریت بسیاری از شرایط غیرمستقیم نیستند، بنابراین ماینرها معمولاً مجبورند راهحلهای سفارشی خود را برای این منظور توسعه داده و نگهداری کنند. حتی در این حالت، ماینرها کنترل محدودی بر فضای جستجوی خود دارند.
انعطافپذیری Stratum V2 عمدتاً از کانالهای ارتباطی آن ناشی میشود. مشخصات پروتکل شامل منطق پنج نقش مختلف در استخراج بیتکوین است. برای توصیف اینکه دادهها چگونه بین این نقشها جریان دارند، این نقشها به صورت بالا به پایین (downstream) یا پایین به بالا (upstream) نسبت به یکدیگر طبقهبندی میشوند. برای مثال، پراکسی به عنوان یک نقش upstream از دستگاههای استخراج و همچنین downstream از سرویس استخر در نظر گرفته میشود. این پنج نقش عبارتند از:
- دستگاه استخراج (Mining Device):
سختافزار فیزیکی که عملیات هشکردن را انجام میدهد. این نقش بیشترین موقعیت پاییندستی (downstream) را دارد. - سرویس استخر (Pool Service):
سازوکار استخر که دستگاه استخراج به آن هش ریت خود را ارائه میدهد. این نقش بیشترین موقعیت بالادستی (upstream) را دارد. - پراکسی استخراج (Mining Proxy):
سرور پراکسی که بین دستگاه استخراج و سرویس استخر قرار دارد و هماهنگی و تجمیع پیامها را انجام میدهد. این نقش نسبت به دستگاه استخراج بالادستی (upstream) و نسبت به سرویس استخر پاییندستی (downstream) محسوب میشود. - مذاکرهکننده کار (Job Negotiator):
تراکنشهایی که برای ساخت قالبهای بلوک سفارشی از Template Provider (که همان کلاینت بیت کوین است) دریافت میکند و استفاده از این قالبها را با استخر مذاکره میکند. این نقش معمولاً در داخل Mining Proxy ساخته میشود. - ارائهدهنده قالب (Template Provider):
این همان کلاینت بیتکوین است که قالبهای بلوک سفارشی را ایجاد کرده و به Job Negotiator برای استخراج نهایی ارسال میکند.
جزئیات مربوط به نقشهای مذاکرهکننده شغل (Job Negotiator) و ارائهدهنده قالب (Template Provider) از حیطه این مقاله معرفی خارج است، اما کافی است بدانید که این نقشها امکان انتخاب تراکنشها برای ساخت یک قالب بلوک را فراهم میکنند.
دستگاههای پاییندستی (downstream) کانالهای ارتباطی خود را با دستگاه بالادستی (upstream) از طریق کانکشن های برقرار شده باز میکنند. هر کانال یک session استخراج را شناسایی میکند که به یک کاربر مجاز اختصاص دارد. تمامی کانالها از یکدیگر مستقل هستند، اما این کانالها میتوانند گروهبندی شوند تا پیامهای ارسالشده از سرور را به اشتراک بگذارند و کارایی بالاتری را بدست آورند (برای مثال، اطلاعات مربوط به prevhash جدید).
شکل ۷ یک نمودار ساده از چگونگی تقسیم نقشها در مقیاس بالادستی/پاییندستی را نشان میدهد. توجه داشته باشید که در حالی که دستگاههای استخراج و سرور پراکسی در مزرعه استخراج قرار دارند و هر دو به عنوان پاییندستی نسبت به سرور استخر بالادستی در نظر گرفته میشوند، دستگاههای استخراج نسبت به پراکسی بیشتر پاییندستی هستند.
پراکسی میتواند به دو صورت عمل کند. در پیکربندی مطلوب، پراکسی به طور شفاف به دستگاههای پاییندستی خود (که معمولاً دستگاههای استخراج هستند، اما به طور تکنیکی میتواند یک سرور پراکسی دیگر نیز باشد) این امکان را میدهد که کانالهای جداگانهای با سرور استخر باز کنند. این کار نیازمند آن است که دستگاههای استخراج فریمور سازگار با Stratum V2 را اجرا کنند. در پیکربندی دوم، که کمتر مطلوب است، دستگاههای استخراج فریمور سازگار با Stratum V1 را اجرا میکنند و پراکسی این اتصالات Stratum V1 باز شده را در کانال خود تجمیع کرده، پیامهای با فرمت Stratum V1 را به Stratum V2 تبدیل کرده و آنها را به سرور استخر ارسال میکند.
در هر دو سناریو، پراکسی اتصالات دستگاههای استخراج را به تعداد کمتری اتصال TCP تجمیع میکند. در نتیجه، پیامهای کمتری ارسال میشود که منجر به کاهش تأخیر (latency) و امکان ارسال بستههای بزرگتر میشود، که در نهایت منجر به افزایش کارایی کلی خواهد شد.
پروتکل Stratum V2 سه نوع کانال تعریف کرده است که نه تنها امکان پیکربندیهای انعطافپذیر را فراهم میکنند، بلکه نحوه تعیین فضای جستجوی ماینر را نیز مشخص میکنند. این کانالها عبارتند از:
۱- کانالهای استاندارد (Standard Channels)
این کانالها برای استفاده بین دستگاههای استخراج که فریمور سازگار با Stratum V2 را اجرا میکنند و سرور پراکسی طراحی شدهاند. این نوع کانالها میتوانند بین سرور پراکسی و سرور استخر نیز استفاده شوند، اما در این حالت، پیشنهاد میشود از کانالهای گروهی (که در ادامه توضیح داده میشود) برای دستیابی به بالاترین کارایی استفاده شود. کانالهای استاندارد نمیتوانند تراکنش coinbase یا مسیر Merkle را دستکاری کنند و تنها بر روی ریشههای Merkle که ارائه میشود، عمل میکنند. این به عنوان استخراج تنها هدر (Header-Only Mining یا HOM) شناخته میشود.
فضای جستجوی تضمینشده برای یک کانال استاندارد (در حال انجام HOM) قبل از انجام nTime rolling به شرح زیر است:
2NONCE_BITS + VERSION_ROLLING_BITS = 232 + 16 = ~280 Th
در حالی که این کانالها به اندازه کانالهای گروهی کارآمد نیستند (که در ادامه به آنها پرداخته میشود)، استفاده از پروتکل Stratum V2 با کانالهای استاندارد احتمالاً هنوز عملکرد بهتری نسبت به پروتکل Stratum V1 خواهد داشت.[۵]
۲- کانالهای گسترشیافته (Extended Channels)
این کانالها بین دستگاههای استخراج و پراکسی و همچنین بین پراکسی و سرور استخر استفاده میشوند. برخلاف کانالهای استاندارد، کانالهای گسترشیافته به ماینر کنترل گستردهتری بر فضای جستجوی خود میدهند به طوری که میتوانند موارد استفاده پیشرفتهای مانند تجمیع سختی (difficulty aggregation)، تقسیم جستجوی سفارشی (custom search splitting) و حتی ترجمه بین پروتکلهای Stratum V1 و Stratum V2 را انجام دهند. این ویژگی ترجمه به مزارع استخراج این امکان را میدهد که از فریمور سازگار با Stratum V1 در دستگاههای استخراج خود استفاده کنند، اما همچنان از برخی از مزایای کارایی که توسط بخشهای بالادستی پروتکل Stratum V2، به ویژه تجمیع اتصالات توسط سرور پراکسی، حاصل میشود، بهرهمند شوند. همچنین از پروتکل پیامرسانی کارآمدتر نیز استفاده خواهند کرد.
فضای جستجوی تضمینشده برای یک کانال گسترشیافته قبل از انجام nTime rolling به شرح زیر است:
2NONCE_BITS + VERSION_ROLLING_BITS + EXTRANONCE_SIZE * 8
۳- کانالهای گروهی (Group Channels):
این کانالها بین سرور پراکسی و سرور استخر استفاده میشوند. همانطور که از نامشان پیداست، کانالهای گروهی تجمیعی از مجموعهای از کانالهای استاندارد قابل آدرسدهی هستند که به یک کانال ارتباطی مشترک تبدیل میشوند. کانالهای گروهی کارآمدترین شکل استخراج هستند و همیشه باید در صورت امکان از آنها استفاده شود.
فضای جستجوی تضمینشده برای یک کانال گروهی قبل از انجام nTime rolling به شرح زیر است:
2NONCE_BITS + VERSION_ROLLING_BITS + EXTRANONCE_SIZE * 8
هر دستگاه (دستگاه استخراج، پراکسی و استخر) باید حداقل یکی از انواع کانالها را برای سازگاری با پروتکل Stratum V2 پیادهسازی کند، اما نیازی نیست که تمام انواع کانالها برای عملکرد صحیح پروتکل پیادهسازی شوند. پروتکل Stratum V2 به گونهای طراحی شده است که تنها برخی از جنبههای آن میتوانند پیادهسازی شوند.
امروزه، تنها استخر Slushpool با پروتکل Stratum V2 سازگار است. با این حال، تنها نوع کانال استاندارد پشتیبانی میشود و تا به امروز هیچ برنامهای برای پشتیبانی از کانالهای گسترشیافته یا گروهی وجود ندارد. تا زمانی که استخرها منطق کامل سرور استخر Stratum V2 را پیادهسازی نکرده باشند، دستیابی به تمام مزایای کارایی که Stratum V2 وعده میدهد، ممکن نخواهد بود. با این حال، این که یک استخر میتواند ویژگیهایی را که میخواهد پیادهسازی کند، خود انتخاب کند، انعطافپذیری این پروتکل را بیشتر نشان میدهد.
معیار ۲: درآمد ماینر
حداکثر کردن درآمد ماینرها برای پذیرش پروتکل جدید استخراج حیاتی است. برای این که صنعت به یک پروتکل جدید استخراج منتقل شود، باید انگیزش مناسبی برای این تغییر وجود داشته باشد. بهترین راه برای ارزشمند کردن این تغییر، وعده افزایش سود است.
پروتکل Stratum V1 در این زمینه ناکام است، عمدتاً به دلیل انتخاب طراحی پیامهای آن که حجم دادههای انتقالی بین ماینر و استخر را کاهش نمیدهد. این پروتکل از پیامهای JSON-RPC طولانی و متنی (که در شکل ۴ نشان داده شده) استفاده میکند، که برای پذیرش اولیه بسیار مناسب بود زیرا این پیامها به راحتی قابل خواندن و فهمیدن بودند. اما استخراج به قدری رقابتی است که ادامه استفاده از این فرمت پیام قابل فهم برای انسان دیگر کارآمد نیست.
دستگاههای ماینر به طور بومی JSON را نمیفهمند. برای اجرای این پیامها، دستگاه استخراج زمان و منابع محاسباتی خود را صرف سریالسازی و دسیریالسازی این پیامهای JSON به و از بایتکد میکند. علاوه بر این، Stratum V1 پیامهای اضافی از پروتکلهای قدیمی دارد که دیگر مفهومی ندارند و منابع محاسباتی و پهنای باند را هدر میدهند.
پروتکل Stratum V2 این مشکلات را با استفاده از یک پروتکل باینری و سبک که قابل خواندن برای ماشین است، حل میکند—دیگر نیازی به هدر دادن زمان با JSON نیست. این پروتکل همچنین تمام پیامهای غیرضروری را حذف کرده و مقدار دادههای منتقلشده را به حداقل میرساند، بنابراین بار پردازشی CPU و مصرف پهنای باند را به حداقل میرساند و در نتیجه سود ماینرها را حداکثر میکند.
معیار ۳: امنیت ماینر
امنیت ماینرها به معنای حفظ سود آنها به صورت سالم و امن است، چیزی که هیچکدام از پروتکلهای استخراج قبل از Stratum V2 به آن پرداختهاند.
احراز هویت
به طور کلی، اتصالات بدون احراز هویت میتوانند زمینه را برای حملات مرد میانی (MitM) فراهم کنند و پروتکل استخراج نیز از این قاعده مستثنی نیست. پروتکل Stratum V1 از اتصال بدون احراز هویت بین ماینر و استخر استفاده میکند، که این مسئله باعث آسیبپذیری ماینرها در برابر حملات hashrate hijacking میشود. این حملات در صورتی که مهاجم بتواند اتصال بین ماینر و استخر را قطع کند و دادههای رد و بدلشده را دستکاری کند، میتوانند باعث سرقت قدرت هش ماینر شوند.
پروتکل Stratum V2 این مشکل را با استفاده از یک کانال AEAD یا Authenticated Encryption with Associated Data که بین ماینر و استخر رمزنگاری شده است، حل میکند. این تغییر باعث میشود که سطح حمله به طور کامل حذف شود و اتصال امنی بین ماینر و استخر برقرار شود.
پرداختهای قابل تایید
یکی دیگر از جنبههای امنیت ماینر، اطمینان از این است که ماینرها به درستی برای کارشان پاداش میگیرند و استخر از جوایز آنها کم نمیکند. متاسفانه هیچکدام از پروتکلهای استخراج، از جمله Stratum V2، به طور کامل این موضوع را حل نکردهاند. با این حال، Stratum V2 به پروتکل این امکان را میدهد که افزونههایی به آن اضافه شوند. در حال حاضر، تلاشی در حال انجام است تا از امضاهای Schnorr برای ایجاد خدمات استخر غیر حضانتی (Non-Custodial Pool Services یا NC PS) استفاده شود. با این حال، این افزونه هنوز به یک سیستم کاملاً بدون اعتماد تبدیل نشده و تنها بهبودهایی در این زمینه ایجاد کرده است.[۶] این افزونه هنوز در مراحل ابتدایی توسعه قرار دارد و توضیح بیشتر در این خصوص از حیطه این مقاله خارج است.
این افزونه نه تنها مشکل را به طور کامل حل نمیکند، بلکه هنوز به صورت رسمی بخشی از پروتکل Stratum V2 محسوب نمیشود. به همین دلیل، در جدول ۱، معیار پرداختهای قابل تایید برای Stratum V2 با دایره زرد مشخص شده تا نشان دهد که پیشرفتهایی در این زمینه ممکن است، اما این معیار در این مقاله به طور کامل مورد بحث قرار نگرفته است.
معیار ۴: امنیت شبکه
در نهایت، امنیت شبکه یک موضوع مهم است که متأسفانه در پروتکلهای استخراج پیش از Stratum V2 به درستی بهینهسازی نشده است. یک آسیبپذیری بزرگ در امنیت شبکه در تمام پروتکلهای استخراج قبل از Stratum V2 وجود دارد: تهدید واقعی سانسور تراکنشها توسط اپراتورهای استخر.
در حال حاضر، تقریباً تمام تراکنشهای تأییدشده در شبکه بیت کوین توسط تعداد کمی از اپراتورهای استخر انجام میشود. ماینرها هشها را به استخر اضافه میکنند، اما استخر قالب بلوک را ساخته و تعیین میکند که کدام تراکنشها در آن گنجانده شوند. این حجم از قدرت در دستان یک گروه، بیش از حد است. اگر اپراتورهای استخر شروع به همدستی برای سانسور تراکنشهای خاص کنند، در پروتکل Stratum V1 هیچ راهحلی برای مقابله با این مشکل وجود ندارد. زیرا در معماری Stratum V1، استخر تراکنشهایی که باید در قالب بلوک وارد شوند را انتخاب کرده و قالب بلوک را میسازد. بنابراین، Stratum V1 برای امنیت شبکه مناسب نیست زیرا به طور ذاتی بسیار متمرکز است.
اما مجموعه ویژگیهای کامل Stratum V2 به ماینر این امکان را میدهد که خود تراکنشها را انتخاب کرده و قالب بلوک خود را بسازد، که این اجازه میدهد ماینرها به راحتی در برابر استخرهایی که در سانسور تراکنشها بدرفتاری میکنند، اعتراض کنند و علیه آنها قیام کنند تا از آسیب به شبکه گستردهتر بیتکوین جلوگیری شود. حتی اگر ماینرها از این قدرت استفاده نکنند، تهدیدی که وجود دارد که بتوانند از آن استفاده کنند، موجب میشود که استخرها از رفتار نادرست و سانسور تراکنشها خودداری کنند.
این ویژگی در Stratum V2 باعث میشود که امنیت شبکه به طور قابل توجهی افزایش یابد، زیرا ماینرها قدرت بیشتری برای جلوگیری از سانسور دارند و استخرها تحت فشار قرار میگیرند تا از رفتار متمرکز و سانسور دوری کنند.ی خواهند شد.
مسیرهای پذیرش
حالا که نیاز به Stratum V2 را درک کردیم، بیایید دو تلاش فعلی برای پذیرش این پروتکل را بررسی کنیم:
- BraiinsOS/BraiinsOS+: یک راهحل فریمور نرمافزاری از Braiins (افرادی که از Slushpool آمدهاند)
- stratum-mining: یک پیادهسازی سرور پراکسی استراتوم متنباز، نوشتهشده با زبان Rust، که شامل مجموعهای از کتابخانههای سطح پایین مورد نیاز برای پیادهسازی نقشهای Stratum V2، اتصالات C (برای ارتباط با Bitcoin Core که به زبان C نوشته شده) و پیادهسازی نقشهای استخر و پراکسی است.
پروتکل کامل Stratum V2 شامل منطق ASICها، سرور پراکسی و سرور استخر میشود. تلاش Braiins بهطور کامل بر روی پیادهسازی منطق پروتکل ASIC در فریمور ASICها متمرکز است، اما شامل منطق سرور پراکسی یا استخر نمیشود. تلاش stratum-mining بر روی پیادهسازی منطق پروتکل پراکسی تمرکز دارد که یک اپراتور مزرعه استخراج بر روی سرور جداگانهای (احتمالاً در همان محل مزرعه خود) نصب خواهد کرد. برای استفاده کامل از پروتکل Stratum V2، یک مزرعه استخراج به فریمور سازگار با Stratum V2 (مثل BraiinsOS) روی دستگاههای ASIC خود و یک سرور پراکسی که stratum-mining را اجرا میکند نیاز دارد، در حالی که همچنین باید در استخر استخراجی که از نوع اتصال کانال گروهی پشتیبانی میکند (که در بخش بعدی تعریف شده) استخراج کند.
در زیرمجموعه بعدی، هر دو تلاش پذیرش بهطور دقیقتر مورد بررسی قرار خواهند گرفت.
تلاش ۱: BraiinsOS/BraiinsOS+ فریمور نرمافزاری شخص ثالث
افراد حاضر در Braiins در حال انجام یک کار فوقالعاده در زمینه توسعه فریمورهای استخراج شخص ثالث هستند که با Stratum V2 سازگار و آماده تولید میباشند. در زمان نگارش این مطلب، این تنها پیادهسازی آماده تولید از Stratum V2 است.
این پروژه دو فورک دارد: BraiinsOS و BraiinsOS+. BraiinsOS یک پروژه کاملاً متنباز است و در حال حاضر با مدلهای ASIC S9، S9i و S9j سازگار است. BraiinsOS+ یک شاخه از BraiinsOS است که برخی ویژگیهای خودتنظیم بسته (closed source) را شامل میشود. BraiinsOS+ در حال حاضر با مدلهای ASIC S17، S17 Pro، S17+، S17e، T17، T17+، T17e، S9، S9i و S9j سازگار است، و فریمور سازگار با مدلهای M20S و S19 نیز در دست توسعه است. BraiinsOS+ هماکنون بر روی بیش از صد هزار دستگاه در حال اجرا است، که این یک دستاورد بسیار چشمگیر است که باید توسط جامعه ماینرها جشن گرفته شود.
تنظیمات سطح بالا: فریمور نرمافزاری شخص ثالث
شکل ۸ پیکربندی سطح بالای دستگاههایی را که از فریمور نرمافزاری شخص ثالث و سازگار با Stratum V2 مانند BraiinsOS استفاده میکنند، نشان میدهد. این شکل نشان میدهد که مشابه با Stratum V1، برای هر دستگاه ASIC یک ارتباط مستقل (با استفاده از کانالهای استاندارد) با استخر استخراج وجود دارد.
ممکن است خواننده از خود بپرسد: «اگر از نظر عملی مشابه Stratum V1 است، پس مشکل چیست که پذیرش آن به تعویق افتاده است؟» چه موانعی مانع از این شده که تمام ماینرها فریمور سازگار با Stratum V2 را روی دستگاههای خود نصب کنند؟
موانع: فریمور نرمافزاری شخص ثالث
توسعه فریمور معمولاً فرآیندی کند است، بهویژه توسعه فریمور برای دستگاههای ASIC که معماری چیپ آنها از مدل به مدل دیگر متفاوت است. توسعهدهندگان فریمور شخص ثالث برای ASICها، مانند تیم Braiins، باید به طور مداوم ارزیابی کنند که کدام مدلهای ASIC را در اولویت توسعه قرار دهند. به همین دلیل، وقتی یک دستگاه جدید به بازار میآید، معمولاً فریمور شخص ثالث برای آن مدل جدید دیرتر منتشر میشود.
علاوه بر این، تولیدکنندگان ASIC میخواهند مشتریانشان از فریمور OEM خودشان استفاده کنند و نصب فریمور شخص ثالث (نه فقط BraiinsOS) را سختتر کردهاند. دستگاهها از پیش با frimware تولیدکننده (فریمور OEM) بارگذاری شدهاند. نصب فریمور شخص ثالث (فریموری که توسط تولیدکننده ASIC ساخته نشده) گارانتی دستگاه را باطل میکند (که معمولاً یک ساله است). تمام قدرت در دست تولیدکننده است. این موضوع برای صنعت بهطور کلی مشکلساز است و برخلاف اصول متنباز بیت کوین است.
تلاش ۲: پراکسی استراتوم متنباز
تلاش دیگر برای پذیرش، ساخت یک سرور پراکسی Stratum متنباز است که هنوز در مرحله توسعه قرار دارد. این تلاش عمدتاً بر روی توسعه منطق سرور پراکسی Stratum V2 متمرکز است. این سرور پراکسی ابزاری بسیار قدرتمند برای ماینرها است، زیرا تمام بار سنگین هماهنگسازی ارتباط بین دستگاههای ASIC و سرور استخر را بهطور مؤثری انجام میدهد. چندین شرکت از جمله Square Crypto، BitMex و Galaxy Digital ارزش Stratum V2 را درک کردهاند و منابعی را برای تأمین مالی توسعه آن اختصاص دادهاند.
تنظیمات سطح بالا: پراکسی استراتوم
شکل ۹ پیکربندی سطح بالای یک عملیات استخراج را نشان میدهد که از فریمور سازگار با Stratum V2 استفاده کرده و از پراکسی استراتوم بهره میبرد، بهطوریکه سرویس استخر مسئول انتخاب مجموعه تراکنشها است. در اینجا پراکسی تمام بار سنگین را انجام میدهد. توجه کنید که انواع مختلف کانالها استفاده شده است. این کانالها همان چیزی هستند که انعطافپذیری ذاتی پروتکل Stratum V2 را فراهم میکنند. دستگاهها از طریق یک کانال استاندارد به سرور پراکسی متصل میشوند. سپس پراکسی از طریق یک کانال گروهی به استخر متصل میشود، که کانالهای استاندارد را در یک اتصال به استخر تجمیع میکند. این معماری باعث میشود دادهها بهطور مؤثرتری منتقل شوند، که نتیجه آن کاهش بار پردازنده (CPU) و مصرف پهنای باند است و در نهایت درآمد ماینر افزایش مییابد.
توجه داشته باشید که پس از اتمام توسعه این پراکسی استراتوم، معماری نشان داده شده در شکل ۹ کاراترین شکل استخراج خواهد بود.
یک تفاوت بزرگ در این پیادهسازی، انتخاب مجموعه تراکنشها توسط ماینر است. شکل ۱۰ معماری سطح بالای یک عملیات استخراج را نشان میدهد که از فریمور سازگار با Stratum V2 استفاده کرده و از پراکسی استراتوم بهره میبرد، بهطوریکه خود ماینر مسئول انتخاب مجموعه تراکنشها است. از منظر معماری، تنها چیزی که ماینر باید انجام دهد، استقرار یک نود بیت کوین (bitcoind) است و باقی کارها توسط پراکسی استراتوم انجام میشود. چقدر ساده!
نکته: از دیدگاه توسعهدهنده، مسائل زیادی در پشت پرده وجود دارد که به انتخاب مجموعه تراکنشها توسط ماینر مربوط میشود، اما نکته مهم این است که از نظر ماینر این فرایند بسیار ساده است.
تا به اینجا، تنظیمات بررسیشده در این بخش نیاز دارند که دستگاههای ASIC فریمور سازگار با Stratum V2 را نصب کرده باشند، که همانطور که پیشتر توضیح داده شد، این کار در حال حاضر به راحتی قابل انجام است. یکی از ویژگیهای بسیار مفید پراکسی استراتوم این است که با دستگاههایی که از فریمور Stratum V1 استفاده میکنند نیز کار میکند. این امر پذیرش را آسانتر میکند زیرا بخش بزرگی از دستگاههای موجود امروزه از فریمور Stratum V1 استفاده میکنند و این به ماینرها این امکان را میدهد که پیش از تغییر فریمور به Stratum V2، از آن استفاده کنند.
شکل ۱۱ این پیکربندی را نشان میدهد. اگرچه این پیکربندی به اندازه پیکربندیهای نشان دادهشده در شکلهای ۹ و ۱۰ کارآمد نیست، اما هنوز بسیار کاراتر از استفاده از پراکسی Stratum V1 یا عدم استفاده از پراکسی بهطور کامل است.
حتی با فریمور سازگار با Stratum V1، ماینر میتواند مجموعه تراکنشهای خود را انتخاب کند! این واقعاً انعطافپذیری است!
شکل ۱۲ همان پیکربندی نمایش دادهشده در شکل ۱۱ را نشان میدهد، با این تفاوت که شامل یک نود بیتکوین (bitcoind) میشود.
موانع: پراکسی استراتوم
از دید طراحی، پراکسی استراتوم نیاز به عملکرد یک سرور اضافی دارد. برای اینکه ماینرها بتوانند قالبهای بلوک خود را بسازند، باید نود بیتکوین را نیز نگهداری کنند (همانطور که در شکلهای ۱۰ و ۱۲ نشان داده شده است). اگرچه این خواسته بزرگی نیست، اما هنوز هم یک یک خواسته است. هر وظیفهای (خواسته) در این صنعت یک مانع اضافی برای ورود ماینرهای متوسط است که میتواند پذیرش را کند کند.
ارزیابی تلاشهای پذیرش
حالا که از دو تلاش اصلی پذیرش Stratum V2 (فریمور و پراکسی) آگاه شدیم، بیایید از معیارهای قبلاً تعیینشده برای مقایسه این تلاشها با پروتکل Stratum V1 استفاده کنیم. جدول ۲ مقایسه کامل را نشان میدهد.
در اینجا، معیارهایی که تلاشهای پذیرش نتوانستهاند به آنها برسند، مورد توجه قرار میگیرند.
هم فریمور شخص ثالث و هم پراکسی نسبت به فریمور Stratum V1 موانع بالاتری برای ورود دارند: فریمور شخص ثالث به دلیل نحوه عملکرد تولیدکنندگان ASIC نصب سختتری دارد، بنابراین در معیار “موانع پایین برای ورود” ناکام است، و پراکسی استراتوم نیاز به نصب و نگهداری یک سرور اضافی توسط ماینرها دارد که تنظیمات را دشوارتر میکند.
مجموعه کامل ویژگیهای Stratum V2 (که هنوز در مرحله توسعه است) موفق به برآورده کردن سایر معیارها شده است. با این حال، راهحلهای فریمور شخص ثالث هنوز از نظر انعطافپذیری، کارایی و مقاومت در برابر سانسور مشکل دارند. فریمور شخص ثالث بدون پراکسی در اتصال ماینر به سرویس استخر خود، سختگیر است که این امر بر کارایی تأثیر منفی میگذارد. با این حال، هنوز بسیار کاراتر از استفاده از Stratum V1 است. در واقع، اگرچه اندازهگیری کارایی به دلیل اجزای متعدد سخت است، Braiins تخمین میزند که کارایی کلی در مقایسه با فریمور Stratum V1 تولیدکننده اصلی (OEM) حدود ۳۵٪ افزایش داشته باشد.
علاوه بر این، فریمور شخص ثالث همچنین شامل منطق لازم برای اجازه دادن به ماینرها برای انتخاب مجموعه تراکنشهای خود بدون استفاده از پراکسی استراتوم نیست، که باعث میشود ماینر (و شبکه) در معرض سانسور تراکنشها توسط استخرها قرار گیرد.
در مجموع، هر دو تلاش پذیرش مزایای بسیار بیشتری نسبت به پروتکل قدیمی Stratum V1 ارائه میدهند، اما شاید تلاش پذیرش دیگری نیز امکانپذیر باشد، تلاشی که شاید نتواند همه چیزهایی که میخواهیم را به ما بدهد، اما برای پذیرش اولیه و گسترده Stratum V2 بهتر خواهد بود.
Stratum V2 OEM
دو تلاش توسعه Stratum V2، هرچند که در تقریباً تمام جنبهها از Stratum V1 برتر هستند، نیاز به تلاش بیشتری از طرف ماینر برای راهاندازی دارند و در مورد پراکسی Stratum، نیاز به یک سرور اضافی نیز وجود دارد. آنچه که میتواند بهطور قطعی Stratum V1 را کنار بزند، این است که ماینرها بتوانند بهراحتی و بدون هیچگونه مشکلی به پروتکل Stratum V2 منتقل شوند. متقاعد کردن تولیدکنندگان ASIC برای گنجاندن Stratum V2 در فریمور OEM خود میتواند این امر را ممکن سازد. اگر راهاندازی و اجرا با Stratum V2 از نظر عملکردی مشابه Stratum V1 باشد، Stratum V2 بهطور سریع و بدون شک پذیرفته خواهد شد.
جدول ۳ مقایسهای از فریمورها را نشان میدهد، بهویژه فریمور OEM Stratum V1، فریمور OEM نظری Stratum V2 و فریمور شخص ثالث Stratum V2. توجه کنید که فریمور OEM نظری Stratum V2 بهخوبی معیار “موانع پایین برای ورود” را برآورده میکند، که این برای پذیرش بسیار عالی است. با این روش، انتقال از فریمور Stratum V1 به Stratum V2 از منظر ماینر بهطور عملکردی مشابه خواهد بود: آنها ASIC را از پست دریافت میکنند که از پیش با فریمور Stratum V2 پیکربندی شده است یا یک بهروزرسانی فریمور معمولی انجام میدهند. بوم! Stratum V2 به استاندارد جدید صنعت تبدیل میشود.
به جز از نظر سهولت در پذیرش، این فریمور نظری Stratum V2 هنوز از همان مشکلاتی که فریمور شخص ثالث با آنها مواجه است، رنج میبرد، از جمله انعطافپذیری و کارایی نسبت به استفاده از پراکسی Stratum (اگرچه هنوز هم از فریمور OEM Stratum V1 کاراتر است). این فریمور همچنین به ماینرها این امکان را نمیدهد که مجموعه تراکنشهای خود را انتخاب کنند. اما یک استدلال قوی وجود دارد که این ویژگیها را در کوتاهمدت فدای پیادهسازی Stratum V2 کردن، منجر به پذیرش سریع و یکشبه میشود.
ما باید ابتدا قدم برداریم تا بتوانیم در این پروتکل دویده و حرکت کنیم، زیرا این پروتکل تغییرات زیادی را به همراه دارد که نیازمند تطبیق ماینرها و خدمات استخر است. اولین گام برای دستیابی به هدف نهایی مقاوم بودن در برابر سانسور تراکنشها، این است که همه ماینرها از Stratum V2 در سادهترین فرم خود استفاده کنند. هرچند که جامعه بیت کوین میخواهد هر ماینر مجموعه تراکنشهای خود را انتخاب کند، این ویژگی باید بهعنوان یک سوئیچ ایمنی برای شبکه در نظر گرفته شود: ماینرها میتوانند از آن بهعنوان یک گزینه پشتیبان استفاده کنند اگر شکی به فعالیتهای نادرست استخرها وجود داشته باشد. اگر استخرها شروع به سانسور تراکنشها کنند، هر ماینر از قبل زیرساخت لازم را دارد تا به مجموعه تراکنشهای خود سوئیچ کند و از سناریویی که در آن ماینرها هیچ راهی برای مقابله با این تهدید فعال ندارند، جلوگیری شود.
ممکن است به نظر برسد که متقاعد کردن تولیدکنندگان ASIC برای گنجاندن Stratum V2 در فریمور OEM آنها ساده است، اما در واقع، متقاعد کردن یک تولیدکننده ASIC برای تغییر هرگونه فریمور آنها بسیار سختتر از چیزی است که گفته میشود. در صنعت استخراج، این نکته کاملاً شناخته شده است که تولیدکنندگان ASIC به شدت از فریمور خود محافظت میکنند و قطعاً نمیخواهند ماینرها از راهحلهای فریمور شخص ثالث استفاده کنند.
اما ممکن است روشی وجود داشته باشد که پذیرش Stratum V2 توسط تولیدکنندگان را تسریع کند بدون اینکه نیاز به بازنویسی کامل فریمور آنها باشد. شایعهای وجود دارد که فریمور OEM تولیدکنندگان ASIC یک فورک بسته از cgminer منبعباز است که تحت مجوز GPL-3.0 قرار دارد. چیزی که، به طور ملایم، برای صنعت چندان خوب نیست. با این حال، این اطلاعات میتواند به نفع Stratum V2 مورد استفاده قرار گیرد. یک تلاش منبعباز میتواند آغاز شود که در آن cgminer دوباره فورک شود و منطق Stratum V2 در این فورک پیادهسازی گردد، که سپس بهعنوان کد منبعباز مطابق با مجوز GPL منتشر میشود. چون کد فریمور تولیدکنندگان از پیش یک فورک از کد cgminer است، ممکن است بتوان این فورک نظری Stratum V2 cgminer را به فورک بسته تولیدکنندگان ادغام کرد، زیرا آنها تاریخ مشترکی دارند (تا یک نقطه خاص). البته این به تمایل تولیدکننده برای پشتیبانی از Stratum V2 بستگی دارد.
فرآیند پیچیدهای که برای متقاعد کردن تولیدکنندگان ASIC به گنجاندن Stratum V2 در فریمور خود وجود دارد، یک دینامیک جالب و زیرساختی را نشان میدهد: صنعت استخراج به شدت میان خواستههای تولیدکنندگان و نیازهای توسعهدهندگان تقسیم شده است. این شکاف بهویژه زمانی برجسته میشود که صحبت از اولویتبندی ویژگیها در یک پروتکل استخراج باشد.
تولیدکنندگان بیشتر به نیازهای تجاری و عملکردی دستگاههای خود متمرکز هستند، در حالی که توسعهدهندگان بیشتر بر جنبههای تکنیکی، قابلیتهای نرمافزاری و نوآوری در پروتکلها تمرکز دارند. این تفاوت دیدگاهها میتواند باعث ایجاد چالشهایی در پذیرش ویژگیهای جدید مانند Stratum V2 شود، زیرا هر طرف به دنبال منافع خاص خود است.
در نهایت، بیت کوین تحت حاکمیت ماینرها، توسعهدهندگان و گرهها است و هر یک ممکن است اولویتهای متفاوتی داشته باشند، اما در کنار هم یک سهگانه حکمرانی را تشکیل میدهند که هر کدام از این بخشها قدرت یکدیگر را تحت نظارت دارند. با این حال، ماینرها نباید هیچگاه مجبور شوند که تمرکز خود را بر روی تمرکززدایی و مقاومت در برابر سانسور بیشتر از منافع اقتصادی خود قرار دهند. وظیفه یک ماینر این نیست که از مقاومت در برابر سانسور شبکه اطمینان حاصل کند. وظیفه یک ماینر این است که برای تأمین امنیت شبکه انگیزه داشته باشد. این وظیفه توسعهدهندگان است که یک پروتکل استخراج فراهم کنند که مقاومت در برابر سانسور را با انگیزههای ماینرها همراستا کند. Stratum V2 همان تلاش است و باعث بهبود بیتکوین برای تمام کسانی خواهد شد که از آن استفاده میکنند.
منابع استفاده شده در نوشتن مقاله The Future of Bitcoin Mining Protocols:
[۱] Matt Corallo. BetterHash Mining Protocol(s). https://github.com/TheBlueMatt/bips/blob/betterhash/bip-XXXX.mediawiki. March 2018.
[۲] Braiins. Stratum V1 Docs. https://braiins.com/stratum-v1/docs.
[۳] https://github.com/stratum-mining/stratum/pull/123