دنیای رمز ارزها در طی سال‌های اخیر محبوبیت زیادی را کسب کرده است. در ابتدای کار ارزهای دیجیتال، تنها عمل سودآوری که در قبال آنها صورت می‌گرفت، مرتبط با خرید و فروش ارز دیجیتال در طی معاملات بود؛ این در حالی است که پس از گذشت مدتی و با بوجود آمدن فرایند ماینینگ یا همان استخراج ارز دیجیتال، خیلی از کاربران به این سبک درآمدزایی روی آوردند. 

در استخراج ارز دیجیتال اکثریت ارزها، بلاکچین اختصاصی خود را عرضه کردند که هر کدام از آنها برای استفاده از تجهیزات مختلفی توسعه یافته است. Scrypt یکی از الگوریتم‌هایی به شمار می‌رود که می‌تواند از دلایل توسعه شبکه‌های ارزی باشد. اما Scrypt چیست؟ و مزیت، کارکرد، نحوه استفاده و بسیاری دیگر از اطلاعات مرتبط با آن شامل چه مواردی است؟ همه این سؤالات را در ادامه پاسخ می‌دهیم، پس با ما همراه باشید.

 

الگوریتم Scrypt چیست؟

Scrypt یکی از الگوریتم‌های مورد استفاده در استخراج ارزهای دیجیتال است. این الگوریتم یکی از اولین الگوریتم‌های هش می‌باشد که بر روی بستر بلاکچین‌ پیاده‌سازی می‌شود. اسکریپت یک الگوریتم هشینگ در مکانیزم اجماع اثبات کار (Proof of Work) است که جایگزینی برای الگوی هشینگ SHA-256 استفاده ‌شده در فرآیند استخراج بیت کوین محسوب می‌شود.

مثل اکثر روش‌های استخراج ارز دیجیتال، اسکریپت ماینینگ شامل حل مسائل پیچیده ریاضی و کدهای رمزنگاری شده در بلاکچین‌های پشتیبان این الگو می‌باشد که در جهت افزودن بلاک‌های جدید به شبکه و کسب پاداش، مورد استفاده قرار می‌گیرد.

الگوریتم Scrypt چیست؟

بررسی توسعه الگوریتم Scrypt بر اساس تاریخچه آن

Scrypt یک الگوریتم هش است که در سال ۲۰۰۹ توسط Colin Percival ابداع شد. هدف اصلی از ایجاد این الگوریتم، ایجاد یک روش ایمن برای ذخیره‌سازی رمز عبور بود که نسبت به حملات مبتنی بر FPGA و ASIC مقاوم باشد. این الگوریتم برای استفاده در سیستم‌های احراز هویت دو مرحله‌ای (2FA) و استفاده در سیستم‌های ارز دیجیتال مانند Litecoin طراحی شده بود.

در ابتدا، Scrypt برای ایجاد کلید‌های شخصی (private keys) در طول فرایند احراز هویت دو مرحله‌ای استفاده شد. اما در سال ۲۰۱۳، Litecoin این الگوریتم را برای استفاده در فرایند استخراج ارز دیجیتال خود به کار گرفت. به دلیل اینکه Scrypt نیاز به منابع حافظه بیش‌تری نسبت به الگوریتم SHA-256 داشت، استخراج ارز به کمک ASIC برای Scrypt بسیار سخت‌تر بود.

در سال ۲۰۱۴، یک حمله با نام “time-memory trade-off” برای کاهش زمان مورد نیاز برای انجام عملیات‌های محاسباتی در Scrypt، ارائه شد. به دلیل این حمله، برخی از ارزهای دیجیتال مانند Dogecoin در استفاده از این الگوریتم صرف نظر کرده و به جای آن، الگوریتم SHA-256 را جایگزین کردند.

در سال ۲۰۱۵، یک نسخه بهبود یافته از Scrypt با نام “scrypt-jane” توسط Colin Percival ابداع شد. در این نسخه از Scrypt، تعداد پارامترهای قابل تنظیم افزایش یافت که باعث شد، تنظیمات امنیتی بهتری در طول زمان اعمال شوند.

به طور کلی، Scrypt الگوریتم قدرتمند و مقاومی است که می‌تواند در برابر حملات مبتنی بر FPGA و ASIC مقاومت بیش‌تری از خود نشان دهد. اما مانند هر الگوریتم دیگری، Scrypt هم ممکن است در برابر حملاتی که در آینده وقوع آنها محتمل است، کمی آسیب‌پذیر باشد.

بررسی توسعه الگوریتم Scrypt بر اساس تاریخچه آن

ویژگی‌های الگوریتم هش Scrypt

از ویژگی‌های اصلی این الگوریتم که باعث تفاوت آن نسبت به دیگر الگوریتم‌های موجود می‌شود، عبارت است از:

امنیت بالا: Scrypt به دلیل استفاده از حجم زیادی از حافظه به منظور ایجاد هش، امنیت بیش‌تری را نسبت به الگوریتم‌های هش معمولی در بردارد. همچنین این الگوریتم از تابع‌های هش ایمن مانند SHA-256 و SHA-3 برای ایجاد هش استفاده می‌کند که به نوبه خود، امنیت آن را افزایش می‌دهد.

سرعت کم‌تر: به دلیل نیاز اسکریپت به مقدار زیادی حافظه، این الگوریتم ممکن است در صورت عدم تهیه فضای کافی نسبت به دیگر الگوریتم‌های هش معمولی مانند SHA-256، کندتر عمل ‌کند. این ویژگی باعث این شده است تا Scrypt بیش‌تر برای استفاده در سیستم‌های احراز هویت دو مرحله‌ای و همچنین، استخراج ارز دیجیتال به کار گرفته شود.

کارایی: تابع اسکریپت در مقایسه با پیچیدگی کاری که انجام می‌دهد، بار کاری کمی دارد. استفاده از یک کلید، موازی‌سازی فرآیندها، تولید اعداد تصادفی و همچنین توانایی تعدیل مقادیر تابع بدون به‌ خطر انداختن امنیت، باعث افزایش کارایی اسکریپت می‌شود.

بررسی مزیت‌های الگوریتم Scrypt

از سری نکات مثبتی که در رابطه با الگوریتم Scrypt بتوان به آنها اشاره داشت شامل:

  • کارمزد تراکنش‌ کم‌تری را نسبت به خیلی از پلتفرم‌ها دریافت می‌کند.
  • مصرف انرژی در آن بهینه است.
  • نسبت به سایر الگوریتم‌های استخراج ارز دیجیتال از پیچیدگی کم‌تری برخوردار است.
  • در صورت ایجاد شرایط مناسب می‌تواند، چند برابر بیت کوین سرعت استخراج بیش‌تری داشته باشد. 
  • به دلیل مقاومت بالای Scrypt در برابر حملات کنترل منابع محاسباتی، این الگوریتم برای استفاده در سیستم‌های احراز هویت دو مرحله‌ای مناسب است.
بررسی مزیت‌های الگوریتم Scrypt

کارکرد الگوریتم اسکریپت چگونه است؟

از آنجایی که الگوریتم Scrypt برای ایجاد هش از مقدار زیادی حافظه استفاده می‌کند؛ به دلیل این ویژگی، کارکرد آن با الگوریتم‌های هش معمولی متفاوت است.

مراحل کارکرد الگوریتم Scrypt به این شکل است:

۱. تعیین پارامترها: در ابتدا باید پارامترهای الگوریتم، شامل تعداد مراحل محاسباتی، تعداد بلاک‌های حافظه و تعداد مراحل پردازشی در هر بلاک تعیین شود. این پارامترها برای هر مورد استفاده از الگوریتم Scrypt در نظر گرفته می‌شوند.

۲. تولید بلاک‌های حافظه: در این بخش برای هر بیت از داده‌های ورودی، یک بلاک حافظه تولید می‌گردد. در واقع هر بلاک حافظه شامل تعدادی کلمه ۸ بایتی است که به صورت تصادفی تولید شده‌اند.

۳. اجرای مراحل پردازشی: این مرحله مربوط به محاسبات هش است. در این مرحله برای هر بلاک حافظه، یک ماتریس ۸ در ۱۶ ایجاد می‌شود که هر سطر آن شامل ۸ کلمه ۸ بایتی است.

۴. ترکیب نتایج: در این مرحله، نتایج حاصل از مراحل پردازش با هم ترکیب می‌شوند تا هش نهایی حاصل شود.

عملکرد الگوریتم Scrypt در بلاکچین

خلاصه عملکرد الگوریتم اسکریپت در بلاکچین را می‌توان در موارد زیر بیان کرد:

  • پیچیدگی کمتر در مقایسه با سایر الگوریتم‌های استخراج در بلاکچین
  • شیوه‌ای مناسب برای رمزگذاری کیف پول، فایل‌ها و رمزهای عبور مختص بلاکچین
  • استخراج سریع ارزهای دیجیتال در بلاکچین
  • کارمزد کم‌تر برای تراکنش‌های بستر بلاکچین
  • کاهش مصرف انرژی در مقایسه با سایر الگوریتم‌های بلاکچین مانند SHA-256
عملکرد الگوریتم Scrypt در بلاکچین

بررسی وضعیت امنیت در الگوریتم اسکریپت

امنیت الگوریتم Scrypt وابستگی خاصی به تنظیمات و پارامترهای آن دارد. در صورتی که پارامترهای مناسبی انتخاب شوند، این الگوریتم می‌تواند توانایی مقاومت در برابر اکثر حملات را داشته باشد.

در سال ۲۰۱۵، یک تحلیل امنیتی از الگوریتم Scrypt توسط چندین پژوهشگر صورت گرفت که نشان داد؛ در صورتی که پارامترهای مناسبی انتخاب شوند، این الگوریتم می‌تواند توانایی مقاومت در برابر حملات کنترل منابع محاسباتی را داشته باشد؛ اما در صورتی که از پارامترهای نامناسبی استفاده گردد، این الگوریتم با حملات کنترل منابع محاسباتی مواجه خواهد شد.

الگوریتم Scrypt به دلیل مقاومت بالا در برابر حملات کنترل منابع محاسباتی، به عنوان یکی از الگوریتم‌های هش محبوب در بلاکچین‌ها استفاده می‌شود. اما همانطور که اشاره شد، برای رسیدن به این امنیت، باید پارامترهای مناسب و پیچیدگی‌های خاصی برای استفاده از الگوریتم Scrypt در نظر گرفته شود.

کدام ارزها از الگوریتم Scrypt استفاده می‌کنند؟

برخی از ارزهایی که سابقه استفاده از الگوریتم Scrypt را داشته و یا اینکه در حال حاضر، از آن برای هش اطلاعات و تراکنش‌های خود استفاده می‌کنند، شامل موارد زیر است:

  • دوج کوین (DOGE): این ارز دیجیتال نوعی میم کوین است که موفقیت‌های بسیاری را تجربه کرده است و از الگوریتم Scrypt برای استخراج بلاک‌های خود استفاده می‌کند.
  • لایت کوین (LTC): Litecoin هم یکی از ارزهای دیجیتال محبوبی است که از الگوریتم Scrypt برای استخراج بلاک‌ها استفاده می‌کند. این ارز دیجیتال مشابه بیت کوین طراحی شده و در واقع، یکی از هارد فورک‌های بیت کوین به شمار می‌رود.
  • Reddcoin (RDD): این ارز از آن دسته ارزهای دیجیتال به شمار می‌رود که سابقه استفاده از الگوریتم اسکریپت را به همراه داشته، اما در حال حاضر از آن استفاده نمی‌کند. مدت زمان استفاده از الگوریتم اسکریپت توسط این پلتفرم، به شش ماه اول فعالیت آن باز می‌گردد که بعد از آن، الگوریتم PoSV جایگزین آن شد.
  • Monacoin (MONA): این پلتفرم هم به مانند پلتفرم قبلی، الگوریتم خود را تغییر داده است؛ یعنی در استفاده از الگوریتم Scrypt به استفاده از الگوریتم Lyra2REv2 تغییر یافته است.
  • Einsteinium (EMC2): ارز دیجیتال Einsteinium در سال 2014 به عنوان کد منبع بیت کوین راه‌اندازی شد و در حالی که در ابتدای کار خود از الگوریتم SHA-256 استفاده می‌کرد؛ اما در ادامه مسیر خود Scrypt را به عنوان الگوریتم هش خود انتخاب کرد.
کدام ارزها از الگوریتم Scrypt استفاده می‌کنند؟

نحوه استخراج یک ارز مبتنی بر الگوریتم Scrypt

برای استخراج یک ارز مبتنی بر الگوریتم Scrypt، معمولاً باید ابتدا یک کیف پول رمز ارز مناسب تهیه کرد. سپس باید یک نرم‌افزار استخراج را بسته به دستگاه مورد نظر خود مانند کامپیوتر و یا موبایل نصب نمود. این نرم‌افزار باید قابلیت استخراج با الگوریتم Scrypt را داشته باشد.

در ادامه، مراحل استخراج ارز دیجیتال، مبتنی بر الگوریتم Scrypt را به  شرح زیر بیان می‌کنیم.

پس از نصب نرم‌افزار، باید آن را پیکربندی کنید. برخی از پارامترهایی که می‌بایست آنها را تنظیم کنید شامل آدرس کیف پول، پورت استخراج، نام کاربری و رمز عبور است.

پس از پیکربندی نرم‌افزار، باید آن را فعال نموده و فرایند استخراج را آغاز کنید. بعد از آن که استخراج بلاک‌ها را انجام دادید، پاداشی را در قبال اینکار دریافت خواهید کرد. پاداش دریافتی شما بستگی به ارز دیجیتالی دارد که شما در حال استخراج آن هستید.

در نهایت موارد بدست آمده در طی استخراج را می‌توان به شیوه‌های مختلفی سرمایه‌گذاری نموده و یا در ساده‌ترین حالت، آنها را به فروش رساند.

تأثیر مقاومت الگوریتم Scrypt در برابر ASIC

اثرگذاری الگوریتم Scrypt علیه اسیک ماینرها نیازمند ارزیابی نحوه ظهور اسیک‌های سازگار با این الگو در طی سال‌های گذشته و بررسی میزان سودآوری استخراج آنهاست. در ادامه به این موضوعات می‌پردازیم.

حذف ماینینگ کردن CPU و GPU از رقابت

زمانی که اولین ریگ استخراج اسیک به بازار عرضه شد، CPUها به ‌سرعت توانایی خود در ماین کردن کوین‌های مبتنی بر الگوی اسکریپت از دست دادند؛ در کنار آن، پیاده‌سازی الگوریتم Scrypt توسط لایت کوین، به اندازه‌ای که باید دارای حافظه مناسبی نبود. بنابراین از آن زمان تا کنون، دیگر از CPUها وGPUها برای استخراج رمز ارزهای مبتنی بر این الگوریتم استفاده نمی‌شود.

الگوریتم‌های Scrypt-ChaCha، Scrypt-N و Scrypt² همگی نوعی از الگوریتم Scrypt استاندارد می‌باشند که دارای سختی حافظه بیش‌تری هستند. با این وجود، تا به امروز این طرح‌ها از استقبال زیادی برخوردار نبوده‌اند. علاوه‌بر Scrypt، الگوریتم‌های اثبات کار دیگری به دنیای ارز دیجیتال معرفی شدند که از محبوبیت زیادی در بین کاربران این زمینه بهره‌مندند. مثلاً الگوریتم‌های CryptoNight  و Equihash نمونه‌های بارز آن هستند.

میزان سودآوری استخراج با سخت‌افزار ASIC

اگر به دنبال چند تا از برترین سخت‌افزارهای سودآور اسیک باشید می‌توانیم دستگاه‌های ++Bitmain Antminer L3 وInnosilicon A6+ LTC Master را به شما پیشنهاد کنیم که بر پایه الگوریتم Scrypt فعالیت می‌کنند. این دو دستگاه برای استخراج لایت کوین و دوج کوین در دسترس هستند. البته دستگاه‌های دیگری هم برای استخراج موجود هستند که با الگوریتم SHA-256 فعالیت دارند. SHA-256 به هیچ وجه برای مقاومت در برابر ASIC در نظر گرفته نشده است؛ به همین علت گزینه‌های کمتری برای Scrypt وجود دارد.

میزان سودآوری استخراج با سخت‌افزار ASIC

کدهای الگوریتم اسکریپت

علاوه بر استخراج و هشینگ در بلاکچین، شما می‌توانید از اسکریپت برای رمزنگاری والت، برنامه و فایل‌های خود استفاده کنید که در ادامه موارد آن را بررسی می‌کنیم.

نمونه شبه‌ کدها

الگوریتم Scrypt یک الگوریتم پیچیده است که برای استخراج ارزهای دیجیتال مانند Litecoin استفاده می‌شود.

کد زیر تنها نمونه‌ای از شبه کدهای اسکریپت است.

func Scrypt(

passphrase, // string of characters to be hashed

salt, // random salt

costFactor, // CPU/Memory cost, must be power of 2

blockSizeFactor,

parallelizationFactor, // (1..232-1 * hLen/MFlen)

desiredKeyLen // Desired key length in bytes

) derivedKey {

const blockSize = 128 * blockSizeFactor

const initialSalt = PBKDF2(HMAC-SHA256, passphrase, salt, 1, blockSize * parallelizationFactor)

splitSalt := [][1024]byte(initialSalt)

for i, block := range splitSalt {

newBlock := roMix(block, costFactor)

splitSalt[i] = newBlock

}

expensiveSalt := append([], splitSalt…)

return PBKDF2(HMAC-SHA256, passphrase, expensiveSalt, 1, desiredKeyLen)

}

پارامترهای ورودی الگوریتم اسکریپت

الگوریتم Scrypt برای تولید کلید از مجموعه‌ای از پارامترهای ورودی استفاده می‌کند. پارامترهای اصلی این الگوریتم به شرح زیر آورده شده است:

Password: متنی است که برای تولید کلید استفاده می‌شود و به عنوان ورودی در قالب بایت‌ها به الگوریتم داده می‌شود.

Salt: یک رشته تصادفی است که برای تقویت امنیت به متن ورودی یعنی password اضافه می‌شود. این پارامتر به صورت بایت‌ به الگوریتم داده می‌شود.

N: تعداد دفعاتی که الگوریتم برای تولید کلید اجرا می‌شود. این پارامتر باید توانی از ۲ باشد.

R: تعداد بلاک‌هایی که برای تولید کلید استفاده می‌شوند. این پارامتر باید یک عدد صحیح و مثبت باشد.

 P: تعداد پردازش‌هایی به طور همزمان برای تولید کلید استفاده می‌شود. این پارامتر باید یک عدد صحیح و مثبت باشد.

Dklen: طول کلید تولید شده با الگوریتم Scrypt است. این پارامتر باید یک عدد صحیح و مثبت باشد. مثلاً 32 بایت (256 بیت)

تعیین دقیق مقادیر این پارامترها برای هر استفاده‌ای برعهده‌ برنامه‌نویس آن است. انتخاب این پارامترها باید به گونه‌ای باشد که هزینه‌ محاسباتی الگوریتم را در مقدار مناسبی تعیین کرده و درعین‌حال، امنیت کافی را برای کلید تولید شده فراهم نماید.

پارامترهای ورودی الگوریتم اسکریپت

شناخت الگوریتم اسکریپت به شما کمک می‌کند تا با اطلاع از نحوه عملکرد آن بتوانید، در صورت لزوم از این الگوریتم به منظور استخراج ارزهای دیجیتال مدنظر خود اقدام نمایید. اسکریپت دارای ویژگی‌ها و مزیت‌هایی است که در این مقاله به موارد آن مانند امنیت بالا در برابر حملات خاص اشاره کردیم. با در نظر گرفتن مطالب فوق می‌توان الگوریتم اسکریپت را به عنوان یکی از الگوریتم‌های استخراج ارز دیجیتال مدنظر داشت.