الگوریتم اثبات کار

گواه اثبات کار یا به اختصار (PoW) یا همان (Proof of Work ) یک سیستم (تابع یا پروتکل) اندازه گیری است تا در برابر  حملات محروم‌سازی از سرویس یا به اختصار (DoS) و دیگر سیستم هایی که قصد اذیت کردن را دارند مانند اسپم های  شبکه از طریق مستلزم دانستن کاری از طرف درخواست کننده سرویس جلوگیری  کند ، معمولاً این قضیه به معنی زمان پردازش شدن عملیاتی  توسط یک کامپیوتر است.این طرح و یا مفهوم توسط Cynthia Dwork و  Moni Naor در سال 1993 در قالب مقاله ژورنال کشف شد. اصطلاح "Proof of work" یا به اختصار PoW اولین بار در مقاله ای در سال 1999 توسط Markus Jakobsson و Ari Juels ابداع و بکار گرفته شد.    همچنین proof of work یا همان الگوریتم اثبات کار اولین بار سال 2008 توسط ساتوشی ناکاموتو در وایت پیپر بیت‌کوین نوشته شد و در واقع این الگوریتم اولین الگوریتمی است که برای بیت کوین و دیگر ارزها در بلاک چین استفاده شد. در حقیقت، ساتوشی ناکاموتو این الگوریتم را در جهت ایجاد یک سیستم پولی همتابه‌همتا ایجاد و استفاده کرد. 

یکی از ویژگی های کلیدی این طرح ها، عدم تقارن آنها است: کار باید برای درخواست کننده نسبتاً سخت(اما قابل حل) باشد ولی چک کردن آن برای تامین کننده سرویس(سرور) میبایست آسان باشد. 

همچنین این قضیه به عنوان ، تابع هزینه  CPU ،پازل مشتری، پازل محاسباتی یا تابع ارزش گذاری CPU نیز شناخته میشود. 

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

تغییر ناپذیری، امنیت و ناشناسی از مهم‎ترین ویژگی های این الگوریتم است که اهمیت زیادی در فناوری بلاک‌چین دارد. در حقیقت، اثبات کار به عنوان یک مکانیستم در بلاک چین معرفی می‌شود که وظیفه تایید تراکنش‌ها، تولید بلاک و همچنین حفظ امنیت شبکه را بر عهده دارد و ماینرها در این الگوریتم پردازش شبکه را انجام می‌دهند و پاداش خود را دریافت می‌کنند.

الگوریتم اجماع (Consensus) 
این مکانیزم مقاوم در برابر خطاهاست که در سیستم های رایانه‌ای و بلاک‌چین برای توافق میزان داده استفاده می‌شود. ناگفته نماند رمزارزها بدون وجود الگوریتم اجماع نمی‌توانند کار کنند و از کار می‌افتند. الگوریتم اجماع مجموعه‌ای از قوانین است که درمورد تاییدیه تراکنش ها تصمیم می‌گیرد.

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

زمینه 
یک سیستم معروف که در هش کش استفاده میشود، با استفاده از مقداری hash معکوس ثابت میکند کار انجام شده است و یک ایمیل به عنوان نشانه خوب ارسال میکند.به عنوان نمونه هدری که در ادامه قرار دارد تقریباً یک  هش 252  محاسباتی است که پیامی را برای ایمیل زیر  درتاریخ  19 ژانویه ، 2038 ارسال میکند. 
  X-Hashcash: 1: 52: 380119: calvin[at]comics dot net ::: 9B760005E92F0DAE 
با یک محاسبات تکی از طریق تابع اس اچ ای-1 هش تمبری که معتبرشده است(در مثال بالا نام هدر X-Hashcash:که شامل دونقطه میباشد و هرچه فضای خالی بعد از آن تا شماره 1 حذف میشود) 

با 52 صفر باینری معادل 13 صفر هگزادسیمال آغاز میشود. 
  0000000000000756af69e2ffbdb930261873cd71 
این که آیا سیستم های PoW در حقیقت می توانند مسئله  حملات محروم‌سازی از سرویس خاصی را مانند مشکل اسپم را حل کنند، موضوع قابل بحثی است؛   این سیستم میبایست ارسال ایمیل های اسپم را برای تولید کنندگان هرزنامه را مشکل ساز کند اما نباید جلوی کاربران مجاز را برای ارسال پیامشان بگیرد. به عبارت دیگر، یک کاربر واقعی نباید با هیچ گونه مشکلی موقع ارسال پیام خود مواجه شود، اما تولید کننده هرزنامه باید مقدار قابل توجه قدرت پردازشی را برای هربار ارسال ایمیل صرف کند . اکنون سیستم های گواه اثبات کار به عنوان مکانیزم اصلی توسط دیگر سیستم های پیچیده رمزنگاری مثل بیتکوین که از سیستمی مشابه هش کش بهره میگیرد ، استفاده میشود.

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

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

پروتکل های راه حل-شناخته شده نسبت به پروتکل های مشکلات احتمالی نا محدود به واریانس پایین تری تمایل دارند چرا که واریانسی که از توزیع مستطیلی نشات گرفته به نسبت  واریانسی که از توزیع پواسون نشات میگیرد کمتر است(نیاز به توضیح بیشتر درباره واریانس توزیع های پواسیون و مستطیلی میباشد) . یک تکنیک کلی که برای کمتر کردن واریانس می باشد که از طریق چندین زیر-چالش مستقل استفاده میشود ، به عنوان میانگین چندین نمونه واریانس کمتری نیز خواهد داشت.   

همچنین توابع  هزینه ثابت مانند زمان قفل پازل وجود دارد. 

علاوه بر این، توابع پایه ای که توسط این طرح ها استفاده می شود، ممکن است موارد زیر باشند: 
 پردازنده محدود که در آن محاسبات با سرعت پردازنده ، که تا حد زیادی در زمان و همچنین به شکل high-end سرور تا low-end دستگاهای قابل حمل است اجرا می شود.  
 حافظه محدود     جایی که سرعت محاسبات توسط دسترسی به حافظه اصلی ( یا تاخیر زمان  یا پهنای باند) محدود می شود که انتظار می رود  عملکرد آن کمتر به تکامل سخت افزار حساس باشد. 
 شبکه محدود  اگر مشتری  مجبور باشد چند محاسبات را انجام دهد،  قبل از پرس و جو از ارائه کننده سرویس دهنده نهایی باید برخی از رمز های دیجیتال یا توکن را از سرورهای راه دور جمع آوری کند. به این معناست ، کار در واقع توسط درخواست دهنده  انجام نمی‌شود و به دلیل تأخیر برای دریافت توکن های مورد نیاز، در هر صورت موجب تاخیر زمانی میشود.

در نهایت، برخی از سیستم های PoW محاسبات میانبر را ارائه میکنند که به شرکت کنندگانی که رمزی را میدانندکه معمولاً یک کلید خصوصی است اجازه میدهد تا POW های کم ارزش را تولید کنند . منطق و اساس کار  این است که صاحبان لیست نامه ممکن است تمبری برای هر گیرنده، بدون هزینه ی زیاد  تولید کنند. این که چنین کاری خوب و معقول است ، بستگی به سناریوی استفاده از آن دارد.

لیست کارهای اثبات شده کار 
در اینجا لیستی از معیارهای کار شناخته شده است: 
 ریشه مربع ریشه ای مدول عدد اول بزرگ    
 امضاء Fiat–Shamir ضعیف  
 امضای Ong-Schnorr-Shamir توسط Pollard شکست خورده  
    این مقاله  ایده اثبات کار (POW) را تصدیق می کند و "ایده وابسته bread pudding protoco " ، یک سیستم "اثبات کار قابل استفاده مجدد" (RPOW) را به رسمیت می شناسد  مثل  هش کش 
 توالی هاش  
 پازل  
 پازل مبتنی بر دیفی هالمن  
 Moderate
 Mbound  
 Hokkaido 
 چرخه Cuckoo  
 درخت مرکل  
 پروتکل پازل هدایت شده

استفاده مجدد ازگواه اثبات کار به عنوان پول الکترونیکی 
دانشمند کامپیوتر Hal Finney بر روی ایده اثبات کار ساخته شده، سیستمی را تولید کرد که از استفاده مجدد از اثبات  کار ("RPOW") بهره میگیرد.  ایده ساخت اثبات گواه کار با قابلیت استفاده مجدد برای اهداف چند منظوره پیش تر در سال 1999 اجرا شده بود.  هدف فینی برای RPOW ساخت پول توکنی بود. درست همانطور که ارزش سکه های طلا که به نظر میرسد بر اساس طلای خام مورد نیاز برای ساخت آن پایه ریزی شده است  ، ارزش یک توکن RPoW با ارزش منابع مورد نیاز  در دنیای واقعی برای «ضرب سکه» یک PoW تضمین می شود. در نسخه Finney RPoW، توکن PoW یک تکه  هش کش می باشد . 

وبسایتی نیز می تواند در ازای سرویسی یک توکن PoW درخواست کند. درخواست یک توکن PoW از طرف کاربر مانع از استفاده بیهوده و بیش از اندازه میشود و یا موجب صرفه جویی از منابع نظیر پهنای باند اینترنت یا محاسبات ، فضای دیسک، برق و یا سربار اجرایی می شود.

سیستم RPoW Finney با یک سیستم PoW در اجازه دادن تبادل توکن های تصادفی و رندوم بدون تکرار کار مورنیاز برای تولید آن ها فرق میکند. پس از آنکه یک نفر توکن «PoW» را در یک وب سایت «صرف» کرد، اپراتور وب سایت میتواند توکن PoW را برای مبادله یک  توکن RPOW جدید ذخیره کند، که بعداً میتواند در برخی از وبسایتهای شخص ثالث مجهز به پذیرش توکنRPoW خرج شود .ویژگی ضد-تقلبی بودن توکن RPoW میتواند ازطریق گواهی سنجی از راه دور نیز گارانتی شود. سرور RPoW که برای مبادلات از توکن  PoW یا RPoW  برای یک مقدار جدید از یک مقدار برابر با استفاده از گواهی سنجی از راه دور استفاده میکند نیز  به هر طرف که علاقه‌مند است ، این اجازه را میدهد که تایید یا انتخاب کند که چه نرم‌افزاری در سرور RPoW اجرا می شود . از زمانی که کد منبع نرم‌افزار RPoW Finney منتشر شد (تحت یک مجوز BSD )، هر برنامه نویسی که به اندازه کافی واردبکار باشد، با بررسی کد، میتواند تأیید کند که این نرم‌افزار (و به عبارتی سرور RPoW) هرگز یک توکن جدید صادر نمی‌کند، به استثنای مواقعی که در ازای یک توکن با ارزش برابر صرف شده باشد . 

تا سال 2009، سیستم فینی تنها سیستم RPoW بود که پیاده سازی شد؛ از این سیستم در اقتصاد هرگز به طور قابل توجهی مورد استفاده قرار نگزفت. 

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

نوع گواه اثبات کار در بیت کوین 
در سال 2009 شبکه Bitcoin آنلاین شد. بیتکوین یک رمز ارز بر حسب اثبات گواه کار است که مانند RPoW Finney نیز مبتنی بر Hashcash PoW است. اما بیتکوین  از  یک پروتکل غیر متمرکز یک-به-یک به جای استفاده از ماژول پلت فرم اعتمادسازی  سخت افزار که درRPoW استفاده می شد ، بهره میگیرد که دلیل جلوگیری از هزینه های دوگانه میباشد.  ، . Bitcoin دارای اطمینان بهتری است زیرا با محاسبات محافظت می شود. بیت کوین ها توسط تابع گواه اثبات کار هش کش توسط ماینر های منحصر به فرد استخراج میشود و توسط نود یا گره های غیر متمرکز در شبکه یک به یک به تایید میرسند . 

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

ASICs و  استخر ماینینگ 
در جامعه بیت کوین گروه هایی با هم در استخر های ماینینگ(ماینینگ به معنی استخراج بیتکوین ) درکنار هم کار میکنند .  برخی از ماینر ها از ASIC ( مدار مجتمع کاربردی خاص ) برای PoW استفاده می کنند.  برخی از PoW ها ادعا می کنند که مقاوم به ASIC هستند، یعنی محدود کردن افزایش بهره وری که ASIC می تواند بر سخت افزار چیزی مانند یک پردازنده گرافیکی داشته باشد، به میزان قابل توجهی تحت نظارت باشد. در عمل چنین ادعاهایی از زمان آزمایش مقاومت نمی‌کنند.

همچنین نگاه کنید 
 بیت کوین 
 Cryptocurrency 
 بیت ماموریت 
 اثبات سهام

یادداشت 

 1.   در اکثر سیستم های یونیکس میتوان با دستور زیر آن را تایید کرد : echo -n 1:52:380119:calvin[at]comics dot net:::9B760005E92F0DAE | openssl sha1

منابع 

رمزارزها
رمزنگاری