الگوریتم ProgPow چیست؟ الگوریتم استخراج اتریوم
فهرست مطالب
مقدمه
یکی از ارکان مهم در یک شبکه ارز دیجیتال، الگوریتم هش است. الگوریتمهای هش امنیت شبکه را تأمین میکنند و بسیار روی سرعت انجام تراکنشها در شبکه تأثیرگذار هستند. الگوریتم ProgPoW یکی از الگوریتمهای هش پرطرفدار است که از روی الگوریتم Ethash که در شبکه ارز دیجیتال اتریوم استفاده میشود، طراحی شده است. این الگوریتم یکی از الگوریتمهای استخراج اتریوم است. تفاوت الگوریتم ProgPoW با الگوریتم استخراج Ethash این است که ProgPoW یک الگوریتم اثبات کار قابل برنامهنویسی است و هر شبکه میتواند روش بهینه خود برای اثبات کار را برنامهنویسی کند.
الگوریتم ProgPoW چیست؟
الگوریتم ProgPoW یک فرم کوتاه از الگوریتم اثبات کار قابل برنامهنویسی است و در واقع مخفف Programmable proof of work است. گاهی به طور عامیانه به آن PorgyPoW میگویند. این الگوریتم، یک الگوریتم توسعهیافته از الگوریتم ای تی هش (Ethash) است که با GPU سازگار شده تا شکاف کارآیی را در سختافزارهای با تابع ثابت به حداقل برساند.
در این مقاله مشخصات تکنیکی و معیارهای کارآیی این الگوریتم بررسی شده است. این مقاله توجیه یا منطقی را برای استفاده از این الگوریتم در یک ارز دیجیتال ارائه نمیدهد و هر ارز دیجیتالی باید بر اساس تحقیقات خود الگوریتم متناسب با شبکهاش را استفاده کند.
تاکنون برای بهبود کارآیی استخراج، الگوریتم اثبات کار را ثابت میگرفتند و سختافزار را توسعه میدادند. اما ProgPow برعکس این فرآیند را انجام داده است و سختافزار را ثابت گرفته و الگوریتم را اصلاح کرده است.
اگر یک الگوریتم بخواهد کارآمد باشد، باید با الگوهای دسترسی (Access patterns) و فضای موجود در سختافزار استخراج هماهنگ باشد. به همین دلیل پردازندههای گرافیکی AMD شاهد افزایش کارآیی زیادی در اتریوم بودند؛ زیرا الگوهای دسترسی تراشههای حافظه با الگوریتم استخراج Ethash مطابقت داشتند.
الگوریتم Ethash هماکنون توسط اتریوم استفاده میشود. این الگوریتم یک الگوریتم اثبات کار است که با GPU به خوبی کار میکند. این الگوریتم به بافر تقریباً زیادی نیاز دارد (در حال حاضر حدود 2.5 گیگا بایت) و همچنین پهنای باند زیادی هم میخواهد که هر دوی اینها در GPU فراهم است.
یکی از چالشهای الگوریتم Ethash این است که فقط 128 بایت از حافظه اصلی را میخواند که این مقدار خیلی کم است. این مقدار دسترسی کم باعث میشود که GPUهایی که از حافظه GDDR5x استفاده میکنند، در اجرای الگوریتم Ethash کارآمد نباشند.
مسئله دیگری که هنگام استفاده از کارت GPU بیان میشود این است که Keccak (تابع هشی که در ابتدا و انتهای Ethash فراخوانی میشود) میتواند با استفاده از FPGA یا ASIC بسیار کارآمدتر اجرا شود.
line Acorn از FPGAها به طور خاص برای انجام محاسبات Keccak به صورت آفلاین طراحی شدهاند تا در مصرف انرژی سیستم صرفهجویی شود و کارایی نیز افزایش یابد.
با توجه به این مسائل میتوان یک ASIC تخصصی برای Ethash طراحی کرد که ویژگیهای زیر را داشته باشد:
- یک رابط حافظه با پهنای باند بالا (معمولاً از GDDR6 یا HBM2 استفاده میشود)
- یک موتور Keccak
- یک هسته محاسباتی کوچک برای انجام حلقه داخلی FNV
- ASIC حاصل از این طراحی هم کوچکتر خواهد بود و هم مصرف انرژی بسیار کمتری نسبت به GPUهای موجود دارد.
نوآوری الگوریتم ProgPoW
طراحی ProgPoW با Ethash شروع شد. این الگوریتم به گونهای اصلاح شده تا بیشترین استفاده را از GPU داشته باشد.
هشهایی که تابع Keccak تولید میکرد و در ابتدا و انتهای Ethash استفاده میشد، از f1600 که طول هر کلمه آن 64 بایت بود به f800 با طول کلمه 32 بیت تبدیل شد. F1600 برای اینکه بتواند روی کارت گرافیکی اجرا شود، حداقل به دو بار اجرای دستورالعمل نیاز دارد؛ چون مسیر داده دستگاههای GPU، برابر با 32 بیت است و برای اینکه یک کلمه 64 بیتی را بخواند نیاز به حداقل دو بار خواندن دارد. الگوریتم Ethash از دادههای اضافی که توسط f1600 پردازش میشود استفاده نمیکند؛ بنابراین کم کردن مقدار بایت داده و طول کلمه در این الگوریتم تأثیری روی امنیت این الگوریتم نمیگذارد.
نیازهای الگوریتم Keccak
یک دستگاه ایسیک (Asic) برای اجرای ProgPoW باید شامل موارد زیر باشد:
- یک رابط حافظه با پهنای باند بالا.
- یک هسته محاسباتی با یک فایل رجیستری بزرگ.
- یک هسته محاسباتی با توان بالای حل ریاضی.
- بهرهوری بالا؛ حافظه کش بالا.
- موتورهای کوچک Keccak + KISS99.
این ایسیکهای مخصوص بسیار شبیه دستگاههای GPU هستند؛ فقط کمی کوچکترند ولی عملکرد مشابهی دارند.
نرخ هش در الگوریتم Progpow
یکی از مهمترین فاکتورها برای بررسی الگوریتمهای استخراج، نرخ هش این الگوریتمها است. نرخ هش در واقع سرعت عملکرد الگوریتم را نشان میدهد. به بیان دیگر نرخ هش مشخص میکند که این الگوریتم با چه سرعتی میتواند دادهها را هش کند. البته سرعت هش فقط به الگوریتم استخراج بستگی ندارد بلکه سختافزار استخراج نیز بسیار بر سرعت هش تأثیرگذار است. در جدول زیر نرخ هش الگوریتم Ethash و الگوریتم ProgPow روی سختافزارهای مختلف آورده شده است. همچنین میزان مصرف پهنای باند حافظه نیز در این دو الگوریتم محاسبه شده است. در ستون میزان مصرف پهنای باند، درصد میزان نرخ هش واقعی، به میزان نرخ هش تئوری، در صورتی که 100 درصد پهنای باند حافظه GPU استفاده شود، محاسبه شده است که در دنیای واقعی چنین چیزی غیرممکن است.
نرخ هش به صورت تئوری از تقسیم میزان پهنای باند بر میزان داده بر هش محاسبه میشود، به بیان دیگر:
Bandwidth / Data-per-hash
این مقدار در الگوریتم Ethash برابر با 8 کیلو بایت و برای الگوریتم ProgPoW برابر با 16 کیلوبایت است.
انتظار کلی این است که ProgPoW باید تقریباً نصف نرخ هش Ethash را داشته باشد؛ زیرا این الگوریتم به ازای هر هش دو برابر Ethash نیاز به دسترسی به حافظه دارد. این مسئله در دستگاههای GPU که از حافظه GDDR5 ،RX 580 و GTX 1070 استفاده میکنند بیشتر دیده میشود. GPUهایی که از حافظه HBM2 ،GDDR6 و GDDR5X استفاده میکنند در اجرای الگوریتم ProgPoW کارآمدتر هستند.
سخن پایانی
در این مقاله الگوریتم ProgPoW و ویژگیهای این الگوریتم را توضیح دادیم. یکی از نگرانیهایی که در مورد این الگوریتم وجود دارد این است که با استفاده از این الگوریتم شرکتهای AMD و Nvidia بتوانند نظرات خود را روی شبکه اتریوم اعمال کنند و هاردفورکی روی شبکه اتریوم به وجود آید.
همچنین برخی منتقدان اعتقاد دارند که دستگاههای ایسیک باعث امنتر شدن شبکه میشوند و ایجاد الگوریتمهایی مثل ProgPoW و تلاش برای حذف اسیکها بیفایده است؛ زیرا تولیدکنندگان ایزیک هم فناوریهای جدیدی برای استخراج ارزهای دیجیتال طراحی میکنند.
دیدگاه خود را ثبت کنید