الگوریتم اجماع اثبات کار (Proof of Work)

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

1- اجتناب از پرداخت‌های دوگانه

2- تایید درست بودن معاملات درون هر بلاک

الگوریتم کلی اجماع اثبات‌کار در بلاکچین به صورت زیر می‌باشد.

در ابتدا، یک نانس (nonce) که یک عدد 16 رقمی تصادفی است، تولید می‌شود و به داده‌ی اصلی بلاک، اضافه می‌گردد سپس درهم‌سازی (hash) داده و نانس اضافه شده محاسبه می‌شود. فرض می‌کنیم، شبکه فقط پیام‌هایی را که درهم‌سازی آن‌ها با تعداد معینی صفر آغاز می‌شود را به اشتراک می‌گذارد و هرچه سرعت تولید بلاک در شبکه افزایش یابد، به طور خودکار سختی کار (تعداد صفرها) نیز افزایش می‌یابد، در حال حاضر پیام‌های شبکه بیت کوین با 70 صفر آغاز می‌شوند و این تعداد در بازههای زمانی افزایش مییابد. اگر شرایط تابع درهم‌ساز برقرار باشد، پیام و درهم‌ساز پیام در شبکه ارسال می‌شود. درغیر اینصورت، یک نانس دیگر تولید می‌شود و دوباره تابع درهم‌سازی پیام محاسبه می‌گردد تا نتیجه دلخواه حاصل شود. این عمل بسیار وقتگیر است و حجم محاسبات آن زیاد است. چنانچه گیرنده پیامی دریافت کند که درهم‌سازی آن با مقدار مورد نیاز صفر شروع نشده باشد، از آن صرف‌نظر می‌کند. اما اگر درهم‌ساز پیام دریافتی شامل تعداد مورد نیاز صفر بود، دریافت‌کننده پیام بایستی نانس صحیح را حدس بزند و به پیام دریافت شده اضافه نماید، و دوباره درهم‌ساز آن را محاسبه کند و سپس با داده‌ی درهم‌ساز دریافتی، مطابقت دهد که آیا برابر هستند یا خیر؟

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

شکل (1)  فرایند اجماع در الگوریتم اجماع POW
شکل (1) فرایند اجماع در الگوریتم اجماع POW


مرحله اول) تولید بلاک جدید و محاسبه‌ی تابع درهم سازی آن

مرحله دوم) ارسال داده‌ی بلاک و تابع درهم ساز به تمام گره‌های شبکه

مرحله سوم) انجام عملیات ماینینگ به طور همزمان توسط تمام گره‌ها، جهت تایید بلاک

مرحله چهارم) اولین ماینری که پازل محاسباتی را حل نماید، نانس صحیح را به دیگر گره‌های شبکه ارسال می‌نماید.

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

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

نقاط قوت اثبات‌کار:

1- تضمین امنیت و یکپارچگی بلاکچین به طور موثر

2- پدیده چند شاخه شدن یا fork در اثبات‌کار بسیار نادر است.

3- برنامه ریزی و حمله به الگوریتم اثبات کار بسیار پرهزینه است.

نقاط ضعف اثبات‌کار:

1- نیاز به محاسبات کامپیوتری سنگینی به نام ماینینگ دارد.

2- افزودن بلاک جدید به زنجیره بلاکچین زمان‌بر است و حداقل 10 دقیقه طول می‌کشد.

3- نیاز به منابع و تجهیزات بیشتر جهت انجام محاسبات دارد.