
ده سال از تاریخ تولد بیتکوین، رمزارزی که با ظهورش تحول عظیمی را در دنیای تبادلات مالی نوید داد، سپری شده است. بیتکوین بر اساس الگوریتم اثبات کار(Proof-of-Work) کار میکند، الگوریتمی که سعی میکند با ارائهی مشوقهایی امنیت و پایداری شبکه را حفظ کند و روش جدیدی را در توزیع عادلانهی داراییها بر اساس توان محاسباتی کاربر پیشنهاد نماید. در این مقاله الگوریتم اثبات کار، روش عملکرد و نقاط ضعف و قوت آن مورد بررسی قرار میگیرد.
الگوریتم اثبات کار(Proof-of-Work) چیست؟
Proof-of-Work یا PoW، الگوریتم اصلی اجماع در شبکهی بلاکچین است.
در بلاکچین از این الگوریتم برای تایید تراکنشها و تولید و افزودن بلاکهای جدید به زنجیره استفاده میشود. در PoW ماینرها برای تکمیل تراکنشهای شبکه و دریافت پاداش با یکدیگر رقابت میکنند.
کاربران در یک شبکه به یکدیگر توکنهای دیجیتالی ارسال میکنند. یک دفتر کل غیر متمرکز تمامی تراکنشها را در بلاکها جمعآوری میکند. با این وجود، برای تایید تراکنشها و سازماندهی بلاکها، مراقبتهایی لازم است. این مسئولیت به گرههای ویژهای که به آنها ماینر گفته میشود و عملیاتی که آن را به عنوان فرآیند ماینینگ میشناسیم، سپرده شده است.
اصول اصلی این عملیات بر حل معماهای پیچیدهی ریاضی و احتمال دستیابی به پاسخ معما استوار است.

منظور از معمای ریاضی چیست؟
نیاز به توان محاسباتی بالا برای حل مسائل ریاضی، از مشکلات الگوریتم PoW بهشمار میرود.
توابع زیادی در این زمینه وجود دارند برای مثال:
- تابع هش(Hash Function)، یا رابطهی خروجی نسبت به ورودی.
- فاکتورگیری عدد صحیح(Integer Factorization)، به عبارتی دیگر ارائهی عددی که حاصل ضرب دو عدد اول دیگر است. سیستمهای رمزگذاری از حاصل ضرب اعداد اول بزرگ استفاده میکنند، همانطور که میدانیم اعداد اول به غیر از خودشان و یک به عدد دیگری بخش پذیر نیستند. بنابراین در زمانی که عدد بزرگی را بدون یکی از مضارب اول آن در اختیار داریم، یافتن مضارب اول آن کار بسیار دشواری است چرا که باید تعداد زیادی از اعداد اول را امتحان کنیم. با افزایش ارقام، پیچیدگی یافتن مضارب افزایش مییابد. به همین دلیل دانشمندان علوم کامپیوتر دائما برای یافتن اعداد اول بزرگتر تلاش میکنند.
- پروتکل معمای هدایت شده(Guided Tour Puzzle Protocol)، در صورتی که سروری مشکوک به حملات DoS باشد، (برای مقابله با حمله) برخی گرهها در یک دستور تعیین شده به محاسبات تابع هش نیاز خواهند داشت. در این مورد مسئله، چگونگی یافتن زنجیرهی مقادیر تابع هش است.
پاسخ مسئلهی PoW و یا یک سوال ریاضی هش نامیده میشود.
با رشد شبکه، سختی شبکه(Difficulty) نیز افزایش مییابد. الگوریتم برای حل مسئلهی ریاضی به قدرت هش بالاتری نیاز خواهد داشت. بنابراین پیچیدگی مسئلهی ریاضی، فاکتور بسیار مهمی است.
پیچیدگی معمای ریاضی
عملکرد دقیق و سرعت سیستم بلاکچین به این عامل بستگی دارد
اما مسئلهی ریاضی نباید پیچیدگی زیادی داشته باشد. در این صورت تولید هر بلاک زمان زیادی را نیاز خواهد داشت. تراکنشها بدون اجرا شدن روی هم انباشته شده و در نتیجه عملکرد سیستم برای مدت زمانی متوقف خواهد شد. در صورتی که در بازهی زمانی تعیین شده، یافتن پاسخ مسئلهی ریاضی امکان پذیر نباشد، تولید هر بلوک به امری دشوار تبدیل خواهد شد.
در صورتی که مسئلهی ریاضی بیش از حد ساده باشد، آسیبپذیری سیستم و در نتیجه امکان اجرای حملات DoS و اسپم(Spam) افزایش مییابد.
راه حل باید به سادگی قابل بررسی باشند. در غیر این صورت تمام گرهها قادر به بررسی صحت محاسبات نخواهند بود. در این صورت باید به دیگر گرهها اعتماد نمایید. این موضوع در تضاد با یکی از مهمترین ویژگیهای بلاکچین یعنی شفافیت(Transparency) خواهد بود.
یک الگوریتم چگونه در بلاکچین اجرا میشود؟
ماینرها معما را حل میکنند، بلاک جدید را تشکیل داده و تراکنشها را تایید(Confirm) میکنند.
پیچیدگی معما به تعداد کاربران، هشریت(توان محاسباتی) کنونی و بار شبکه بستگی دارد. هش هر بلاک، هش بلاک قبلی را در برگرفته است، این موضوع موجب افزایش امنیت شده و از امکان نقض بلاکها جلوگیری میشود.

در صورتی که ماینری موفق به حل معما شود، بلاک جدید تشکیل میشود. تراکنشها در این بلاک قرار گرفته و تایید میشوند.

PoW معمولا در کجا اجرا میشود؟
الگوریتم Proof-of-Work در بسیاری از رمزارزها استفاده میشود.
معروفترین کاربرد الگوریتم PoW در بیتکوین است. بیتکوین بنیاد این نوع اجماع را پایهگذاری کرد. معما Hashcash(نوعی الگوریتم رمزنگاری بر پایهی هش) است. این الگوریتم اجازه میدهد پیچیدگی مسئلهی ریاضی بر اساس هشریت کل شبکه تغییر کند. متوسط زمان شکلگیری هر بلاک 10 دقیقه است. رمزارزهای مبتنی بر بیتکوین، همانند لایتکوین(Litecoin) سیستم مشابهی دارند.
پروژهی بزرگ دیگری که از PoW استفاده میکند اتریوم(Ethereum) است. با توجه به اینکه تقریبا سهچهارم پروژهها در این حوزه بر روی پلتفرم اتریوم اجرا میشوند، با اطمینان میتوان گفت که بیشتر برنامههای بلاکچینی از مدل اجماع PoW استفاده میکنند.
چرا در آغاز از الگوریتم اجماع PoW استفاده کنیم؟
مزایای اصلی این الگوریتم دفاع در برابر حملات DoS و عدم تاثیرگذاری میزان داراییها بر عملیات ماینینگ است
دفاع در برابر حملات DoS. الگوریتم PoW محدودیتهایی را بر روی فعالیتهای شبکه اعمال میکند. برای اجرای این حملات به تلاش زیادی نیاز است. حملات موثر به توان محاسباتی بالا(هشریت بالا) و همچنین زمان زیادی برای محاسبات نیاز دارد. بنابراین انجام این نوع حملات امکان پذیر است ولی به دلیل هزینهی بالا، برای مهاجم بیفایده خواهد بود.
احتمالات ماینینگ: در الگوریتم PoW داراییهای رمزارزی که در کیف پولتان نگهداری میکنید، اهمیتی ندارد. بلکه در اختیار داشتن توان محاسباتی بالا برای حل معما و ایجاد بلاک جدید، اهمیت زیادی دارد. بنابراین در این الگوریتم ثروتمندان بزرگ رمزارزی(کسانی که مقدار زیادی رمزارز در کیف پول خود نگهداری میکنند)، مسئول تصمیمگیری برای کل شبکه نیستند.
آیا در الگوریتم اجماع PoW آسیبپذیری وجود دارد؟
هزینههای بالا، بیاستفاده بودن محاسبات و امکان اجرای حملات 51 درصد از معایب اصلی این الگوریتم به شمار میروند
هزینههای بالا: عملیات ماینینگ به سخت افزار کامپیوتری بسیار تخصصی برای اجرای الگوریتمهای پیچیده نیاز دارد. انگیزهی مدیریت هزینهها موجب میشود، اجرای عملیات ماینینگ تنها در استخرهای ماینینگ خاصی امکان پذیر گردد. دستگاههای ماینینگ برای فعالیت به توان الکتریکی بالایی نیاز دارند، این موضوع هزینهی فعالیت ماینینگ را افزایش میدهد. همانطور که بهسادگی در رمزارز بیتکوین قابل مشاهده است، هزینههای بالا، موجب تمرکز بیشتر سیستم میشود.

بیفایدگی محاسبات: ماینرها برای ایجاد بلاکها محاسبات زیادی را انجام میدهند، این موضوع موجب مصرف توان الکتریکی بالایی میشود. با این وجود نتیجهی این محاسبات کاربرد دیگری ندارد. فعالیت ماینرها امنیت شبکه را تضمین میکند اما نتیجهی این فعالیت را نمیتوان برای زمینههای علمی، تجاری و یا هر زمینهی دیگری استفاده نمود.
حملات 51 درصد
حملات 51 درصد(51 Percent Attack) که با نام حملات اکثریت(Majority Attack) نیز شناخته میشود، در زمانی قابل اجرا است که یک کاربر و یا گروهی از کاربران، اکثریت هش ریت شبکه را در دست میگیرند.
در این صورت مهاجمان قدرت کافی برای کنترل اکثر رویدادهای شبکه را در اختیار دارند.
آنها میتوانند از تکمیل بلاکها توسط ماینرهای دیگر جلوگیری کنند و تولید بلاکهای جدید و در نتیجه دریافت پاداش را در انحصار خود درآورند.
آنها میتوانند تراکنشها را معکوس کنند.
فرض کنیم آلیس(Alice) با استفاده از بلاکچین به باب(Bob) مقداری پول میفرستند. آلیس گرفتار حملات 51 درصد شده است، در حالی که باب این شرایط را ندارد. این تراکنش در بلاک قرار میگیرد. اما مهاجمان اجازه نمیدهند انتقال پول انجام شود. بنابراین توسط مهاجمان در زنجیره فورک اجرا میشود.

در نتیجه ماینرها به یکی از شاخهها ملحق میشوند(زنجیرهی رمزارز اصلی و یا زنجیرهی ایجاد شده توسط مهاجمین). از آنجایی که مهاجمان اکثریت توان محاسباتی(هش ریت شبکه) را در اختیار دارند، زنجیرهی آنها دارای بلاکهای بیشتری است.

در شبکه، زنجیرهی طولانیتر باقی مانده و زنجیرهی کوتاهتر پذیرفته نمیشود. بنابراین تراکنش میان آلیس و باب اتفاق نمیافتد. باب پولی را دریافت نمیکند.

مهاجمان پس از طی این مراحل، میتوانند تراکنشها را معکوس کنند.
حملات 51 درصد گزینهی سودآوری برای مهاجمان نیست. اجرای این حملات به توان محاسباتی بالایی نیاز دارد. معمولا، هنگامی که اجرای این حملات برای عموم آشکار میشود، خروج کاربران از شبکه را در نتیجه خواهد داشت. این موضوع قیمت رمزارز را به شکل قابل توجهی کاهش میدهد. در نتیجه این داراییها ارزش خود را از دست میدهند.
آیا با استفاده از الگوریتم PoW در سیستم رمزارزها موافقید؟ به نظر شما مزایا و معایب استفاده از این الگوریتم چیست؟ شما میتوانید سوالات و نظرات خود را در بخش دیدگاهها با ما به اشتراک بگذارید.
سلام و خسته نباشید، ممنون از مطالب بسیار مفیدتون فقط یه سوالی برام پیش اومده با توجه به اینکه بیت کوین غیرمتمرکز هستش، و سرور مشخصی نداره پس این معمای ریاضی از کجا برای ماینر ها ارسال میشه؟ و ضمناً چه لزومی برای ارسال معما و بعد حل کردن اونها توسط ماینر ها وجود داره؟