الگوریتم استخراج تصادفی RandomX، یک الگوریتم اثبات کار (PoW) است که برای جایگزینی رمزارز معروف کریپتو نایت مونرو (XMR) طراحی شده است.
RandomX به گونه ای طراحی شده است که ایمن باشد و الگوریتم پیش فرض جدید Monero باشد. سطح بالایی از رمزنگاری را ارائه می دهد و بر روی سیستم هایی با حفظ حریم خصوصی و ناشناس بودن تمرکز دارد. اما بالاتر از همه، تصور می شود که در برابر استخراج توسط ASIC مقاوم است. دومی، ظرفیتی که مدتی پیش CryptoNight آن را از دست داده بود و با بهروزرسانیهای متعدد همچنان سرپا مانده بود. با این حال، تیم Monero تصمیم گرفت یک الگوریتم جدید را از ابتدا ایجاد کند. الگوریتمی که بهترین CryptoNight را می گیرد و بنابراین یک پایگاه استخراج جدید برای Monero ایجاد می کند.
اما RandomX بسیار بیشتر از آن است، این یک الگوریتم اثبات شده و حساب شده است که پتانسیل رشد بسیار زیادی دارد. به همین دلایل است که ما فضایی را برای تجزیه و تحلیل RandomX و همه چیزهای جدیدی که به دنیای ارزهای دیجیتال می آورد و اینکه Monero چگونه از آن سود برده است اختصاص خواهیم داد.
منشا RandomX
همانطور که اشاره کردیم، RandomX از نیاز پروژه مونرو (XMR) برای داشتن یک الگوریتم استخراج جدید که قادر به مقاومت در برابر پیشرفت ASIC ها باشد، متولد شد.
به یاد داشته باشید که در سال ۲۰۱۸، شرکتهای Baikal و Bitmain اولین ASICها را برای CryptoNight اعلام کردند و مقاومتی را که الگوریتم گفته شده برای چندین سال ایجاد کرده بود، شکست. برای هر دو شرکت کاملاً یک دستاورد بود، به خصوص با توجه به اینکه CryptoNight یک الگوریتم کاملاً پیچیده بود. در واقع، این به منظور جلوگیری از استخراج ASIC از ابتدا طراحی شده است.
با این حال، دستاورد این شرکتها به خوبی توسط جامعه مونرو و سایر جوامع بلاک چین با استفاده از الگوریتم CryptoNight مورد استقبال قرار نگرفت. و مهمتر از همه، زیرا در Monero ماینرهای ASIC به خوبی مورد استقبال قرار نمی گیرند.
انحصار ساخت ASIC ها و دسترسی به آنها توسط نهادهایی با مبالغ هنگفت فرصتی برای افراد عادی برای بهره مندی از فرآیند استخراج باقی نمی گذارد و همه چیز را در دست چند نفر متمرکز می کند. چیزی که به نوبه خود نشان دهنده یک نقطه شکست برای کل ارز است.
در استخراج Monero، به طور کلی، توسط CPU و GPU انجام می شد، بنابراین ASIC ها به دلیل احتمال حمله ۵۱٪ ، خطر جدی تمرکز و امنیت را به همراه داشتند.
برای کاهش این وضعیت، Monero شروع به توسعه انواع جدیدی از CryptoNight کرد که بر عملکرد ASIC تأثیر منفی گذاشت. برخی از به روز رسانی ها دامنه خوبی داشتند، اما ASIC ها همچنان پابرجا بودند. در این مرحله واضح بود و آنچه در حال رخ دادن بود، CryptoNight ناکافی و یک الگوریتم جدید مورد نیاز بود.
این امر باعث تولد Monero Classic شد که توسط استخراجکنندگانی که الگوریتم ASIC-mineable را میخواستند، تامین میشد. با این حال، این تلاش به سختی مورد استقبال قرار گرفت.
با این حال، آنها به بهبود ASIC برای Monero ادامه دادند و در ۳۱ اکتبر ۲۰۱۸، توسعه RandomX آغاز شد. به گفته توسعه دهندگان Monero، این الگوریتم جدید نشان دهنده یک تغییر اساسی در الگوریتم های استخراج است. این کار در ۵ می ۲۰۱۹، زمانی که اولین نسخه RandomX منتشر شد، نتیجه داد.
الگوریتم RandomX توسط توسعه دهندگان tevator , hyc , vielmetti , antanst y Schernykh برای Monero توسعه داده شد و در ۳۰ نوامبر ۲۰۱۹ با موفقیت در شبکه Monero فعال شد.
RandomX چگونه کار می کند؟
در RandomX : تصادفی بودن فرض اصلی است . اما به چه معنی است؟ خب، این بدان معناست که RandomX برای ایجاد یک “منطقه کاری” یا اسکرچ پد کاملا تصادفی با مصرف حافظه بالا طراحی شده است و از تکنیک های مجازی سازی پیشرفته برای عملکرد خود استفاده می کند. این سه مورد چیزی است که به RandomX اجازه می دهد تا در برابر ASIC مقاوم باشد.
در واقع، RandomX نه تنها در برابر ASIC مقاوم است، بلکه در برابر GPU نیز مقاوم است، زیرا این تراشه ها فاقد دستورالعمل های لازم برای انجام عملیات پیچیده RandomX در وهله اول هستند. در نتیجه، RandomX به دنبال این است که یک الگوریتم استخراج فقط CPU باشد و بالاترین مقاومت ممکن را در برابر سایر انواع ماینینگ ارائه دهد. از سوی دیگر، این نیز با هدف جلوگیری از باتنتهای بسیار معروف در Monero است، زیرا RandomX اجرای آنها را تقریبا غیرممکن میکند. به خصوص در دستگاه های کم مصرف، مانند تلویزیون های هوشمند یا دستگاه های اینترنت اشیا (اینترنت اشیا یا اینترنت اشیا).
اما RandomX چگونه همه اینها را ممکن می کند؟ خوب، اجازه دهید این الگوریتم جدید را کمی دقیق تر بررسی کنیم.
دو نوع استخراج، برای دو کاربرد متفاوت
اول از همه، RandomX دارای دو حالت استخراج است. هر یک از آنها با الزامات و عملکرد بسیار متفاوت است. قدرتمندترین و پر مصرف ترین حالت Quick Mode است که حداقل به ۲ گیگابایت حافظه نیاز دارد. اما علاوه بر این، اگر سیستم عامل از NUMA (دسترسی به حافظه غیر یکنواخت) ، صفحات عظیم (صفحهبندی حافظه در بلوکهای بزرگ)، پردازندههای با هسته بالا و حداقل ۲ گیگابایت رم در هر هسته پردازنده پشتیبانی کند، عملکرد نهایی RandomX به طور قابلتوجهی بهبود مییابد. . این به این دلیل است که تمام این حافظه برای ایجاد اسکرچ پد تصادفی RandomX استفاده می شود.
دوم، حالت Lightweight Mode، حالتی که تنها به ۲۵۶ مگابایت رم نیاز دارد و برای استفاده در گره های اعتبارسنجی مونرو طراحی شده است. عملکرد ماینینگ در این حالت محدود است و تا ۶ برابر کمتر از حالت سریع است، بنابراین سود هر استخراج با استفاده از این حالت بسیار ناچیز است.
در این مرحله ما اولین مانع در برابر ASIC ها داریم. در حالی که ASIC ها اکنون می توانند مقادیر زیادی رم داشته باشند (مانند اتریوم که معمولاً بین ۴ تا ۸ گیگابایت رم دارند)، این امر این رایانه ها را بسیار گران می کند.
دوم، با توجه به مصرف بالای توان محاسباتی، اگر کامپیوتری به یک cryptojacking To mine Monero آلوده شود، به راحتی توسط کاربر شناسایی خواهد شد. چیزی که شانس موفقیت یک بات نت را تا حد زیادی کاهش می دهد.
رمزنگاری استفاده شده است
اگر پروژه مونرو (XMR) ما را به چیزی عادت داده است، آن استفاده از رمزنگاری پیشرفته در توسعه آن است. در این مورد، RandomX از قاعده مستثنی نیست. در RandomX آنها از توابع هش Blake2b، مولد رمز عبور Argon2d و رمزنگاری متقارن AES استفاده زیادی می کنند. در نتیجه، کیفیت رمزنگاری RandomX استثنایی است.
با این حال، در Monero آنها به تنهایی به کار خود بسنده نکردهاند و تصمیم گرفتهاند که امنیت رمزنگاری رسمی و ممیزی پیادهسازی را بر روی الگوریتم RandomX اجرا کنند. در مجموع چهار ممیزی توسط شرکتهای Trail of Bits ، X41 D-SEC ، Kudelski Security y Quarkslab انجام شده است که همه آنها توسط OSTIF ، سازمانی با سابقه طولانی در امنیت سایبری و رمزنگاری مدیریت میشوند.
همه ممیزی ها قبلا انجام شده است و نتایج آنها امیدوار کننده است. اگر می خواهید کمی بیشتر در مورد این نکته بدانید، از شما دعوت می کنیم نتایج را در این لینک بررسی کنید .
طرح اثبات کار شما
طرح اثبات کار تصادفی (PoW) به شرح زیر است:
ابتدا یک کلید تولید می شود (به نام کلید K) که به عنوان هش یک بلوک در بلاک چین انتخاب می شود. این بلوک “بلوک کلید” نامیده می شود . برای استخراج بهینه و عملکرد تأیید، کلید باید هر ۲۰۴۸ بلاک (تقریباً ۲،۸ روز) تغییر کند و باید ۶۴ بلوک (تقریباً ۲ ساعت) بین بلوک کلید و تغییر کلید K وجود داشته باشد. با تغییر کلید زمانی که موارد زیر درست است blockHeight% 2048 == 64 (که% مدول تقسیم است) و بلوک کلید را انتخاب کنید تا keyBlockHeight% 2048 == 0.
در آن نقطه، ورودی H یک حباب هش استاندارد با مقدار nuncio انتخاب شده است.
اگرچه همه اینها کمی مبهم به نظر می رسد، اما معنای الگوریتم RandomX این است که اثبات کار آن تحت دو فرض مهم کار می کند:
- شما به یک کلید (به نام K) نیاز دارید که باید هر ۲۰۴۸ بلوک تغییر کند. این کلید برای RandomX حیاتی است تا بتواند هش ها و بلوک های معتبری را برای شبکه ایجاد کند.
- کلید با داده های زنجیره بلوکی و در نهایت با یک سیستم تولید کلید امن تولید می شود.
از سوی دیگر، الگوریتم نیز با نیاز به شرایط اجرای خاص، کارها را کمی پیچیده تر می کند. از جمله این شرایط می توان به موارد زیر اشاره کرد:
- معماری CPU 64 بیتی، به آن اجازه می دهد تا حجم زیادی از داده و حافظه را مدیریت کند.
- یک واحد FPU (واحد نقطه شناور) مطابق با استاندارد IEEE 754. اگر واحد مطابقت نداشته باشد، داده های تولید شده توسط الگوریتم قابل تایید نیستند.
- پشتیبانی از AES اگر پشتیبانی توسط سخت افزار با پسوندهایی مانند AES-NI باشد، عملکرد الگوریتم بسیار بهتر است.
- مقدار زیادی حافظه کش برای هر رشته از الگوریتم. حداقل ۱۶ کیلوبایت از L1، ۲۵۶ کیلوبایت حافظه نهان L2، و ۲ مگابایت از L3.
- یک سیستم عامل با پشتیبانی از مدیریت صفحات حافظه بزرگ. به یاد داشته باشید که RandomX از حداقل ۲ گیگابایت رم استفاده می کند و بسته به پیکربندی ممکن است تقاضا افزایش یابد.
ماشین مجازی RandomX
قابلیتی که شاید بیشترین مقاومت را در برابر ASIC ها داشته باشد و در واقع ویژگی منحصر به فرد این الگوریتم است، ماشین مجازی یا VM (ماشین مجازی) آن است.
RandomX تمام کارهای رمزنگاری و استخراج خود را در یک ماشین مجازی ساده انجام می دهد که هدف آن این است. جداسازی کل فرآیند ماینینگ به مجموعه ای از فرآیندها که تحت دستورالعمل های خود و معماری مجازی عمل می کنند.
این به دنبال افزایش پیچیدگی اجرای یک راه حل ASIC به سطوحی است که قبلاً دیده نشده بود. در عین حال، اجرای CPU ساده شده است و می توان آن را با توجه به نیازهای آینده تنظیم کرد. این ماشین مجازی به لطف مجموعه ای از دستورالعمل های سفارشی از نوع CISC می تواند وظایف مختلف خود را انجام دهد. این ویژگی امکان برقراری ارتباط بسیار آسان با CPU هایی را که از مجموعه ای از دستورالعمل ها از همان نوع استفاده می کنند، می دهد. برخلاف تراشههای ASIC که از مجموعه دستورالعملهای نوع RISC استفاده میکنند و شبیهسازی CISC-over-RISC از نظر محاسباتی گران است و پیچیدگی بیشتری به راهحل ASIC برای RandomX میافزاید.
هدف این ماشین مجازی ایجاد محیط لازم برای اثبات کار RandomX است . برای رسیدن به این هدف، این ماشین مجازی یک فضای کاری تصادفی (اسکرچ پد در حافظه)، بسیار رمزگذاری شده و پر از آنتروپی (داده های تصادفی که بعداً برای اثبات کار استفاده خواهد شد) ایجاد می کند.
هنگامی که این شرایط ایجاد شد، VM دستورالعمل شروع برنامه های ماینینگ را دریافت می کند. هر یک از این برنامه ها با استفاده از داده های تصادفی از فضای کاری ایجاد شده و منجر به یک برنامه منحصر به فرد می شود.
این برنامه تمام فرآیندهای مجاز توسط VM را برای انجام ماینینگ اعمال می کند، یعنی برنامه فقط می تواند دستورالعمل های مجاز توسط VM (256 دستورالعمل و ۲۰ ثبات) را اجرا کند، نه بیشتر. در این مرحله، آنچه در RandomX VM اتفاق میافتد، به دلیل استفاده از رمزنگاری در طول این فرآیند، عملاً برای بقیه رایانه قابل مشاهده نیست.
این فرآیند ایجاد برنامه های تصادفی برای انجام ماینینگ ، اثبات کار پویا نامیده می شود و این طرحی است که RandomX دقیقاً در این مرحله از آن استفاده می کند. این سیستم را می توان به صورت زیر تعریف کرد:
- ابتدا برنامه تصادفی تولید می شود. این همان کاری است که ماشین مجازی هنگام راهاندازی صفحه اسکرچپد و تمام عناصر برنامه در اولین چرخه کاری انجام میدهد.
- سپس VM وظیفه دارد به عنوان مترجم بین CPU و برنامه های تصادفی عمل کند. برنامه های تصادفی فقط می توانند از دستورالعمل های VM استفاده کنند، اما VM این اقدامات را به کد ماشین قابل فهم توسط CPU ترجمه می کند. به این ترتیب CPU به اقدامات پاسخ می دهد و VM پاسخ ها را دریافت می کند. همانطور که دستورالعمل ها از رمزنگاری استفاده می کنند، بهینه سازی بسیار گران است.
- در نهایت با اجرای برنامه، در این مرحله VM اجازه دسترسی به CPU و قابلیت های آن را بدون از دست دادن ارتباط با برنامه تصادفی می دهد. این نقطه تحت شرایط بسیار خاص و ویژه ای که قبلاً در الگوریتم RandomX برنامه ریزی شده است رخ می دهد. در واقع، هر گونه تغییری منجر به داده های نامعتبر می شود زیرا این فرآیند کاملاً قابل تکرار است.
بدون شک، RandomX VM پیچیده ترین و دشوارترین عنصر برای تکرار است، بنابراین بهترین سد در برابر ASIC ها است.
یکی از مشکلات بزرگ CryptoNight این است که هر تکرار یا بهبود جدید برای کار کردن به قدرت محاسباتی بیشتری نیاز داشت، که ظرفیت استخراج CPU ها را کاهش داد و فقط کمی ظاهر ASIC را که قادر به اجرای آن بود کند کرد. در مقابل، RandomX تاثیر عملکرد را پشت سر می گذارد و امنیت بهتری را ارائه می دهد، در واقع، عملکرد RandomX در برابر CryptoNight تا ۲۰ برابر بر روی همان سخت افزار است و در حال حاضر هیچ ASIC نمی تواند یک سیستم استخراج قابل اجرا را اجرا کند.
مزایا و معایب الگوریتم
طرفداران
- این یک الگوریتم با هدف امنیتی واضح است. استفاده از AES، Blake2 و Argon2 این الگوریتم را بسیار امن کرده است.
- از آنجایی که برای CPU طراحی شده و دارای ساختارهای مقاوم در برابر ASIC و GPU است، این الگوریتم می تواند بهتر از این سخت افزار بهره برداری کند. در نتیجه RandomX بازدهی بهتری را برای ماینرهای CPU ارائه می دهد تا بتوانند به کسب درآمد بیشتر برای استخراج Monero ادامه دهند.
- مقاومت در برابر ASIC به بلاک چینهایی که از RandomX استفاده میکنند اجازه میدهد تا در سطح ماینینگ غیرمتمرکزتر شوند.
- RandomX الگوریتمی است که دارای چهار ممیزی رسمی کامل است.
منفی
- پیچیده است. استفاده از VM و تصادفی بودن فرآیند، توسعه و اشکال زدایی این الگوریتم را بسیار پیچیده تر می کند.
- استفاده از VM راه را برای حملات جانبی باز می کند که می توان از آنها برای شکستن سیستم استفاده کرد و برای بهبود عملکرد تحت شرایط خاص مورد سوء استفاده قرار گرفت. با این حال، استفاده از کریپتو در اسکرچ پد این نکته را بسیار دشوار می کند، به همین دلیل است که بسیاری آن را غیرممکن می دانند.
- دستگاه های دارای CPU 32 بیتی نمی توانند از الگوریتم به درستی بهره برداری کنند.




