ساختار بلاک چین به خصوص بیت کوین و اتریوم به استخراج وابستگی زیادی دارد، به همین خاطر با رشد این سیستم، توسعه دهندگان همیشه در پی ارائه راهکارهایی بودند، که بتوان فرایند استخراج را ساده و کم هزینهتر کرد. این موضوع اهمیت زیادی دارد، چرا که میتواند به پذیرفته شدن بلاکچین توسط دولتها و گروههای محیط زیستی کمک کند. در استخراج رمز ارز، الگوریتمها مهمترین بخش هستند. تاکنون الگوریتمهای POS و POW به عنوان الگوریتمهای غالب در کریپتو مورد استفاده قرار گرفتهاند. الگوریتم دیگری که در این حوزه وجود دارد، الگوریتم ProgPoW است. این الگوریتم سعی دارد فرایند استخراج را با ارائه راهکارهایی آسانتر کند. اگر کنجکاو شده اید که این الگوریتم چگونه کار میکند، این مطلب را تا انتها دنبال کنید.
پیش از آن که به سراغ توضیح الگوریتم ProgPoW برویم، ابتدا باید مقدمهای درباره نقش ASICها و پردازندههای گرافیکی در استخراج اتریوم بیان کنیم. ماینرهای اتریوم سالها با استفاده از کارتهای گرافیک و الگوریتمهای Ethash و Dagger Hashimoto به استخراج این رمز ارز مشغول بودند. اختلاف قدرت کارتهای گرافیک مختلف با یکدیگر به قدری نبود که برتری ویژهای نصیب یک مدل خاص کند.
این شرایط برقرار بود تا این که در سال 2018، شرکت بیتمین دستگاهی به نام Antminer E3 را به بازار عرضه کرد. این دستگاه مخصوص ماین بود و توانایی بالایی برای استخراج داشت و با قدرت 180 مگاهش در ثانیه تنها 800 وات برق مصرف میکرد. کمپانیهای دیگر نیز بعد از آن دست به تولید ASIC برای الگوریتمهای استخراج زدند.
شاید در نگاه اول این که دستگاهی با چنین قدرت استخراج به بازار آمد اتفاق مثبتی به نظر برسد، اما حقیقت این است که جنبههای منفی مختلفی نیز در این رخداد وجود دارد. مثلا این که با عرضه این دستگاه، کسانی که با کارت گرافیک به استخراج اتریوم میپرداختند متضرر شدند و حتی برخی از پشتیبانی و نگهداری اتریوم دست کشیدند. از آنجایی که ASICها قیمت بالایی دارند، در واقع قدرت پردازشی و نرخ هش شبکه اتریوم به دست گروهی از افراد میافتد که توانایی مالی بیشتری دارند. نهایتا این موضوع میتواند به غیرمتمرکز بودن اتریوم آسیب بزند و حتی احتمال حمله 51 درصدی را به وجود بیاورد.
اتریوم برای این که بتواند از متمرکز شدن به وسیله ASICها فرار کند، نیاز به راهکارهایی دارد. یکی از راهکارهای ارائه شده برای این موضوع الگوریتم ProgPoW است. این الگوریتم به جای اینکه ASICها را از شبکه خارج کند کارایی آنها را کم میکند. این خلاقیت باعث شده که الگوریتم ProgPoW بیشتر مورد استقبال قرار بگیرد.
ProgPow چیست؟
ProgPow مخفف ترکیب انگلیسی Programmatic Proof of Work است. این الگوریتم با نام PorgyPoW نیز شناخته میشود. الگوریتم ProgPow برای بهبود کارایی سختافزارهایی با توابع ثابت ایجاد شده است. در توضیحات طراحان آمده است برخلاف الگوریتم POW که به دنبال مطابقت سخت افزار با الگوریتم است، ProgPow میخواهد الگوریتم را با سخت افزار مطابقت دهد. این الگوریتم در واقع از Ethash توسعه پیدا کرده است.
یکی از چالشهایی که الگوریتم Ethash با آن روبه روست خوانش تنها 128 بایت از حافظه اصلی است. این مقدار دسترسی کم است، به همین خاطر کارتهای گرافیکی که از حافظه GDDR5x استفاده میکنند به خوبی با این الگوریتم سازگار نمیشوند. مشکل دیگر این است که Keccak با استفاده از FPGA و ASIC کارآمدتر اجرا میشود. Keccak تابع هشی است که از ابتدا و انتهای Ethash فراخوانی میشود.
الگوریتم ProgPow به گونهای طراحی شده است که در گام اول بتواند بیشترین بهرهوری را برای استخراج از طریق کارت گرافیک داشته باشد و در گام بعدی بتواند قدرت استخراج ASICها را با کارت گرافیک برابر کند، تا کسانی که برای استخراج کارت گرافیک خریداری کردهاند با ورود ASICها دچار ضرر نشوند.
⚠️ نرخ هش یکی از مسائل مهم در رابطه با استخراج است. مقدار این نرخ به سخت افزار و الگوریتمی که برای استخراج مورد استفاده قرار میگیرد بستگی دارد. نرخ هش از تقسیم پهنای باند بر مقدار داده بر هش (Data-per-hash) به دست میآید. نرخ هش برای الگوریتم Ethash برابر با 8 کیلوبایت و برای الگوریتم ProgPow برابر با 16 کیلوبایت است. کارتهای گرافیکی که از GDDR5x، HBM2 و GDDR6 استفاده میکنند با ProgPoW سازگارتر هستند.
چه کسی ProgPoW را ایجاد کرد؟
ProgPow توسط گروهی به نام IfDefElse به دنیای کریپتوکارنسی معرفی شد. این گروه شامل 3 نفر (یا بیشتر) توسعه دهنده است که این الگوریتم را طراحی کردهاند. تنها عضو این گروه که هویت خود را آشکار نمود خانم Kristy-Leigh Minehan است که در میتینگ اصلی توسعه دهندگان، به عنوان نماینده این گروه صحبت کرد. او همچنین درباره الگوریتم ProgPow در پادکستهای مختلف و بزرگترین اجلاس سالانه اتریوم (Devcon4) توضیح دادهاست. خانم مینِهان در دنیای برنامهنویسی با القاب OhGodAGirl و Miss If نیز شناخته میشود.
ProgPoW چگونه کار می کند؟
الگوریتم ProgPow سعی بر این دارد که تمام ظرفیتهای کارت گرافیک را به کار گیرد تا عملیات استخراج را کارامدتر کند. این الگوریتم بر اساس شماره بلاک مورد نظر یک برنامه تصادفی تولید میکند. تولید تصادفی باعث میشود سخت افزارهای تک کاربردی مانند ASICها قابلیتهای خاص خود را در استخراج از دست بدهند و ماینرها برای استخراج به سراغ سخت افزارهای انعطاف پذیرتر و چندکاره بروند.
تغییر دادن منظم طرح مسئله ریاضی در طول استخراج باعث انطباق سریعتر کارتهای گرافیک میشود و سطح کارایی آنها را به ASICها نزدیک میکند. برای این که الگوریتم ProgPoW با همه تولیدکنندهها از جمله AMD و NVIDIA سازگار باشد توسعه دهندگان آن، الگوریتم را طوری برنامهریزی کردند که از همه اجزای کارت گرافیک به جز «کانالهای ارتباطی» و «واحدهای پردازش» استفاده کند.
این الگوریتم باعث استفاده بیشتر از کارت گرافیک برای استخراج اتریوم میشود و کارایی آنها را برای استخراج به ASICها نزدیک میکند. به همین خاطر مهندسان هر دو شرکت Nvidia و AMD با توسعه دهندگان این الگوریتم همکاری کردند. همین موضوع باعث ایجاد شایعههایی شد، مبنی بر این که سازندگان این الگوریتم در واقع همین دو شرکت هستند، تا بتوانند از کاهش فروش کارتهای گرافیک خود برای استخراج جلوگیری کنند.
نوآوریهای اصلی ProgPoW کدامند؟
الگوریتم ProgPoW با ارائه ویژگیها و نوآوریهایی خود را از دیگر الگوریتمها متمایز میکند. این الگوریتم به قدرت محاسباتی، گنجایش پهنای باند و اندازه حافظه متکی است. با این حال نوآوریهای ProgPow به همینها خلاصه نمیشود. 5 مورد از نوآوریهای این الگوریتم سرآمد هستند که در ادامه به بررسی دقیقتر هر کدام از آنها میپردازیم.
- کاهش سایز Keccak
در الگوریتم ProgPoW اندازه Keccak کاهش پیدا کرده است. این کاهش از 64-bit Keccak-f1600 به 32-bit keccak-f800 صورت گرفته است. کاهش سایز Keccak به نفع ساختار کارتهای گرافیک است، چرا که برای پلتفرم های 32 بیتی بهینه سازی شده است.
- بزرگتر بودن mix state
بزرگتر بودن mix state یعنی رجیستریهای پردازنده که قادر به ذخیره مقادیر میانی هستند، بیشتر خواهدشد. این رجیستریها پرسرعتتر از حافظههای با دسترسی تصادفی هستند، چرا که داخل پردازنده گرافیکی قرار گرفتهاند. ASICها چیپستهای کوچکی دارند و در مقایسه با پردازندههای گرافیکی تعداد کمتری رجیستری را پشتیبانی میکنند. در نتیجه ASICها مجبور به استفاده از RAM با سرعت بسیار پایین هستند و این باعث میشود دیگر نسبت به پردازندههای گرافیکی برتری نداشته باشند.
- اضافه کردن دنباله پردازشی تصادفی به حلقه اصلی
این کار قابلیت ساخت یک ASIC با سرعت عملیاتی بیشتر و مصرف کمتر را غیر ممکن میکند. این کار به نفع شبکه اتریوم است، چرا که روی کار آمدن ASICها میتواند غیرمتمرکز بودن شبکه را تهدید کند.
- خوانش کم تاخیر، کوچک و تصادفی از کش (حافظه داخلی پردازنده)
وقتی این قابلیت پیاده سازی میشود ASICها مجبور خواهند شد قوانین مخصوص حافظههای کارت گرافیک را دنبال کنند، که نتیجه آن محدود شدن ظرفیت استخراج این دستگاهها خواهد بود.
- ارتقاء DRAM از 128بایت به 256 بایت
DRAM یا حافظه تصادفی پویا تنها مخصوص کارتهای گرافیک است و ASIC٬ها توانایی بهرهگیری از آن را ندارند. ASICها نمیتوانند بدون این که کارایی دستگاه را پایین بیاورند، کنترل کننده حافظه را برای مقادیر کم بهینهسازی کنند.
مخالفت با ProgPoW چگونه شکل گرفت؟
خانم مینِهان اشاره میکند که الگوریتم آنها به سرعت انتقادهایی به خاطر اینکه اجرای نقشه راه اتریوم 2 را به تاخیر انداختهاست، دریافت کرد. طبق گفتههای خانم مینِهان مخالفتها در سال 2018 خفیف بود و مقاومت در برابر ASIC همچنان یک هدف بزرگ برای جامعه اتریوم به حساب میرفت. در این سال نگاههای منفی زیادی راجع به ProgPoW وجود نداشت. اگر رویدادهای اتریوم را در آن سال بررسی کنید، متوجه انبوه نظرات مثبت خواهید شد. در همان سال حدود 1000 نفر در Github به تحقیق درباره ASIC رای دادند.
در سپتامبر سال 2018 شرکت لنژی ماینینگ (Lenzhi Mining) اعلام کرد که یک ASIC قدرتمند مطابق با Ethash منتشر میکند که شروع داستانی شد که خانم مینِهان آن را حماسه لنژی مینامد. کمپانی به صورت فعالانه از مواضع ضد الگوریتم ProgPoW دفاع میکرد تا جایی که خانم مینِهان معتقد است حتی اطلاعات نادرست نیز انتشار میداد. به عنوان مثال پستهای عجیب که ادعا میکردند آنها میتوانند یک ASIC مطابق با ProgPoW طراحی کنند.
به گفته خانم مینِهان این رفتار آنها خسارتهای زیادی به جا گذاشت و فشار بسیاری برای تیم به خاطر ProgPoW بوجود آورد. بعد از استعفای خانم مینِهان از هسته علمی دیگر خبری از این کمپانی نشد. نه اخبارشان را بروزرسانی کردند نه در تلگرام چیزی انتشار دادند. این احتمال وجود دارد که لینژی منافع خود را در آن سال در خطر میدید و به همین خاطر سعی کرد اخبار منفی درباره ProgPoW منتشر کند.
حتی این شایعه پخش شده بود که الگوریتم ProgPoW توسط تولیدکنندگان اصلی گرافیک یعنی AMD و Nvidia ساخته شده است که به گفته خانم مینِهان واقعا شایعه احمقانهای بود. باید در نظر گرفت که ماینرهای ASIC هم طرفداران زیادی دارند و خیلیها میخواهند با هزینه معقول از استخراج کسب سود کنند. پس غیر منطقی نیست که این الگوریتم مخالفانی هم داشته باشد.
به هر حال جنجالها باعث شد در سال 2019 یک وبسایت اختصاصی برای رای دادن درباره ProgPoW ایجاد شود. بعد از پایان دوره رایگیری، بیش از 93 درصد کسانی که در آن شرکت کردند از این الگوریتم حمایت کردند. این افراد دارنده 2.93 میلیون اتریوم بودند. تیم اصلی اتریوم بعد از فراز و نشیبهای بسیار پذیرفت که این الگوریتم را بعد از پشت سر گذاشتن ممیزیهای سختگیرانه پیاده سازی کند.
خانم مینِهان معتقد است این الگوریتم توانست ممیزیهای مدنظر را کاملا درخشان پشت سر بگذارد و بعد از آن هیچگاه از لیست EIP خارج نشد.
وضعیت فعلی ProgPoW چگونه است؟
ProgPoW توانست به خوبی نام خود را سر زبانها بیندازد. اگرچه این الگوریتم کاربردهای خاص خود را نشان داد، اما همه جامعه اتریوم باور ندارند که یک راه حل کاربردی برای مقابله با ASICها است. از طرفی همه افراد جامعه اتریوم هم مخالف ASIC نیستند و خیلیها معتقدند این سخت افزارها باعث امن تر شدن این شبکه خواهند شد. همچنین این افراد استفاده از این الگوریتم را پیروی از مصالح شرکتهای سازنده کارت گرافیک بهخصوص Nvidia و AMD میدانند. مخالفان این الگوریتم معتقدند، سندی دال بر این که ASICها باعث متمرکز شدن استخراج در شبکه اتریوم میشوند، وجود ندارد.
در سمت دیگر بسیاری از ماینرها نظر مثبت خود را درباره این الگوریتم در نظرسنجیهای مختلف نشان دادند. بیشتر نظرسنجیهایی که پیرو اجرای این الگوریتم انجام میشود با پیروزی آن به پایان میرسد. توسعه دهندگان نیز از استفاده از این طرح برای اتریوم استقبال کردهاند. با این وجود درباره قدمهای بعدی صحبتی نمیکنند و سعی بر این دارند که اطلاعات مهم را فعلا مخفی نگه دارند. حال باید دید نتیجه همه این موافقتها و مخالفتها به اجرای این الگوریتم منجر خواهد شد یا خیر.
سخن پایانی
دنیای بلاک چین آنقدر بزرگ و قدرتمند شده است که میتواند صنعتهای دیگر را نیز تحت تاثیر قرار دهد. همین موضوع مسائلی مانند روی کار آمدن الگوریتمهای جدید و کارآمدتر را با پیچیدگیهایی روبهرو میکند. الگوریتم ProgPoW نیز با همین پیچیدگیها روبرو شده است. عدهای معتقدند این الگوریتم توسط شرکتهای بزرگ سازنده کارت گرافیک به وجود آمده تا کارایی ASICها را با کارت گرافیک برای استخراج مساوی کند. گرچه خود سازندگان الگوریتم این ادعا را انکار میکنند. به هر حال ProgPoW نشان داد که میتواند برای استخراج اتریوم به خوبی مورد استفاده قرار بگیرد. باید دید که شرایط استفاده از این الگوریتم برای استخراج اتریوم تا چه حد ایجاد میشود.