الگوریتم اجماع اثبات کار یا PoW در بلاک چین و ارز دیجیتال
الگوریتم اجماع مفهوم اساسی در بلاک چین است و اثبات کار- Proof of Work یکی از امنترین آنهاست. الگوریتم PoW در بلاکچین و ارز دیجیتال چیست؟
تمرکز زدایی بخش کلیدی در چشم انداز اولیه ارزهای دیجیتال بود. برای دستیابی به آن، باید به دنبال راهی برای تایید تراکنشها بدون دخالت موسسات مالی بود. اولین راه حل برای این چالش اثبات کار نام داشت. اثبات کار (PoW) شکلی از افزودن بلاکهای جدید حاوی تراکنش به بلاک چین یک رمزارز است که به عنوان اولین روش برای اعتبارسنجی تراکنشهای بلاک چین، نقش مهمی در تاریخچه رمز ارزها ایفا کرده است.
مفهوم اولیه الگوریتم اثبات کار در سال 1993 به منظور جلوگیری از حملات به سرویسهای اینترنتی ارائه شد اما هیچگاه کاربردی نشد. در سال 2009، بیت کوین شکل جدیدی از اثبات کار را برای استفاده به عنوان الگوریتم اجماع (Consensus Algorithm) معرفی کرد. افراد فعال در شبکه با استفاده از الگوریتم اثبات کار (PoW) بلاک حاوی تراکنشهای تایید شده Bitcoin را میسازند و بدین ترتیب شبکه بلاک چین بیت کوین شکل میگیرد.
اثبات کار مکانیزمی است که به شبکهای غیر متمرکز اجازه میدهد تا به اجماع و توافق برسند. این کار باعث میشود تا کاربران نتوانند کوینهای خود را دو بار خرج کنند و تضمین میکند که شبکه برای هجوم یا دستکاری بسیار مقاوم است.
از ارزهای دیجیتال مهمی که از اثبات کار استفاده میکنند، میتوان به بیت کوین (BTC)، اولین رمز ارز جهان که در سال 2009 راه اندازی شد و مفهوم اثبات کار در ارزهای دیجیتال را معرفی کرد اشاره کرد. لایت کوین (LTC) نیز در سال 2011 بر اساس کد بیت کوین به وجود آمد و مدعی شد که سرعت انجام تراکنشها را بهبود بخشیده است. در میان میم کوینهای محبوبی که از PoW استفاده میکنند نیز دوج کوین (DOGE) را می توان نام برد. اما این روش اجماع چیست و مهمترین ویژگیهای آن کدام است؟
الگوریتم اجماع اثبات کار چیست؟
برای سهولت فهم موضوع، اینطور در نظر بگیرید که در الگوریتم اجماع اثبات کار (PoW)، ماینرها با یکدیگر بر سر حل معماهای پیچیده محاسباتی به رقابت میپردازند. این معماها به سختی حل میشوند، اما بلافاصله پس از حل شدن امکان تایید شدن آن توسط دیگران وجود دارد. بنابراین زمانی که یک ماینر پاسخ این یک معما که در واقع هش یک بلاک است را پیدا میکند، آن بلاک را به شبکه ارسال مینماید. سایر ماینرها این پاسخ را تایید میکند و بلاک مذکور طی مدت کوتاهی تایید میشود.
در الگوریتم اجماع اثبات کار (PoW)، برای ایجاد یک بلاک در بلاک چین، باید یک بازی انجام دهید! بازی حدس زدن! فرض کنید تابعی وجود دارد (مثلا تابعی که بیت کوین استفاده میکند SHA-256 نام دارد)، که جواب یا ویژگیهای خاص جواب مورد قبولی که با آن بدست آورده میشود، توسط پروتکل مشخص شده است.
شما باید برای رسیدن به آن جواب، متغیرهای تابع را تغییر داده و با آزمون و خطا، بهترین ترکیب را برای دستیابی به متغیر درست بدست آورید. در الگوریتم PoW؛ فرمول به دست آوردن هش باید به صورتی باشد که تغییر حتی یک کاراکتر در دادههای شما نتیجهای کاملا متفاوت تولید کند و بنابراین هیچ راهی برای پیش بینی خروجی وجود نداشته باشد. مثلا در الگوریتم اجماع بیت کوین با استفاده از تابع SHA-256، همیشه هشهایی با 64 کاراکتر تولید میشود که تغییر حتی یک ورودی، کل هش را تغییر میدهد.
هر بلاک حاوی اطلاعات مربوط به تمام تراکنشهایی است که در آن قرار گرفته که ترکیب آن دادهها با هم یک هش ثابت (فرض کنید A) را تولید میکند. از آنجایی که A همیشه ثابت است، برای تولید هش و دستیابی به محدوده جواب مورد قبول (فرض کنید Y محدوده جواب و یا پاسخی با شرایط و ویژگیهای خاصی است که سیستم آن را قبول دارد)، باید اطلاعات اضافی را با این دادهها به عنوان متغیر تصادفی ترکیب کنید. این داده متغیر همان چیزی است که ما آن را نانس (nonce) مینامیم، عددی که هر بار آن را تغییر میدهید، یک پاسخ متفاوت از تابع یا هش متفاوتی دریافت میکنید. در واقع با ترکیب کردن نانسهای متفاوت با A، هر بار هش متفاوتی تولید میکنید تا تصادفا به جواب مورد نظر در محدوده Y برسید و با اعلام آن به شبکه، در ماینینگ به روش اثبات کار، شانس خود را برای به اصطلاح بستن و استخراج یک بلاک در زنجیره امتحان کنید.
خلاصه کلام این است که در الگوریتم PoW شما با به دست آوردن نانس مورد نظر، در فرآیند استخراج یا ماینینگ شرکت کرده و به شبکه اثبات میکنید که وقت و انرژی لازم را صرف کرده و مستحق پاداش هستید.
در این روش، ماینینگ فرآیند جمعآوری دادههای بلاک چین و هش کردن آن به همراه یک nonce است تا زمانی که هش خاصی را پیدا کنید و حق اضافه کردن بلاک جدیدی را به مجموعه بلاک چین داشته باشید. در نظر بگیرید که هرچه هش ریت شبکه بیشتر باشد، یافتن هش معتبر و استخراج بلاک دشوارتر است. همه این کارها برای اطمینان از این است که بلاکها خیلی سریع پیدا نشوند و همانطور که میتوانید تصور کنید، تلاش برای حدس زدن مقادیر زیادی هش میتواند چقدر هزینه و انرژیبر باشد. الگوریتم اثبات کار مثلا در مورد بیت کوین به صورت افزودن یک بلاک جدید در هر 10 دقیقه است. برای انجام این کار، خود سیستم سختی استخراج بیت کوین را بسته به سرعتی که ماینرها بلاکها را اضافه میکنند، تنظیم میکند. اگر استخراج خیلی سریع انجام شود، محاسبات هش سختتر میشود و اگر خیلی کند پیش برود، رسیدن به هش مورد نظر راحتتر است.
اگر نرخ هش کافی و دستگاه ماینری با قدرت مناسب در اختیار داشته باشید و هش معتبر را پیدا کنید، طبق پروتکل به شما با ارز دیجیتال پاداش داده میشود. به طور خلاصه، برنده باید آخرین بلاک تراکنشها را به بلاک چین اضافه کند و پاداش را در قالب کوینهای تازه و کارمزد تراکنشها دریافت کند. در نظر بگیرید که مثلا در بیت کوین حداکثر عرضه ثابت 21 میلیون کوین است، اما پس از استخراج همه آنها، ماینرها با دریافت کارمزد تراکنش در ازای خدمات خود به کارشان ادامه خواهند داد.
از آنجایی که ماینرها به صورت غیر متمرکز کار می کنند، چند بلاک معتبر میتوانند همزمان استخراج شوند. این پروسه یک فورک موقت ایجاد میکند و باعث میشود زنجیره به اصطلاح یک سر نداشته باشد و شاخه شاخه شود. اما در نهایت، با گذشت زمان، آن شاخهای مورد قبول است که طولانیتر باشد. روش پذیرش شاخه معتبر در بلاک چینها مختلف با هم متفاوت است؛ مثلا در زنجیره اصلی اتریوم گفته میشود کمی بیش از یک دقیقه (زمان لازم برای استخراج 6 بلاک) برای حصول اطمینان از تایید تراکنش خود صبر کنید. این بدان معناست که تراکنش مورد نظر باید در بلاکی در زنجیره طولانیتر بوده تا پذیرفته و تایید شده باشد. در غیر این صورت تراکنش تایید نشده و به اصطلاح به مم پول ماینرها برای قرار دادنش در بلاک جدید باز می گردد.
بیایید آنچه را که تا کنون درمورد الگوریتم اثبات کار میدانیم را خلاصه کنیم:
- برای استخراج کردن به روش الگوریتم PoW باید از توان محاسباتی دستگاه ماینر استفاده کنید.
- اگر یک بلاک معتبر در زنجیره تولید کنید، به شما به صورت رمز ارز بومی آن بلاک چین خاص پاداش داده میشود.
- یک شبکه مبتنی بر بلاک چین توسط تعداد بسیاری گره (Node) نگهداری میشود و فقط برخی از این گرهها تحت عنوان ماینر شناخته میشوند و مسئول اضافه کردن بلاکهای جدید به شبکه هستند. با ارایه نانس توسط یک ماینر، هر کاربر میتواند به راحتی آن را با دادههای بلاک ترکیب کرده و هش آن را بررسی کند. در اصل محاسبه و جاگذاری یک نانس خاص برای کاربران غیر ماینر نیز ممکن است و آنها میتوانند اعتبار یک بلوک را بدون صرف توان محاسباتی زیادی تأیید کنند.
پروتکل اثبات کار ماینرها را ملزم میکند تا برای یافتن nonce یک بلاک، در رقابت شدیدی از آزمون و خطا شرکت کنند و فقط بلاکهایی با نانس معتبر میتوانند به زنجیره اضافه شوند. سوالی که پیش میآید این است که اگر بخواهید در فرآیند الگوریتم اجماع اثبات کار تقلب کنید، چه چیزی شما را از تولید یک هش معتبر در ازای قرار دادن یکسری تراکنشهای تقلبی در بلاک باز میدارد؟ در ادامه به پاسخی که الگوریتم اجماع اثبات کار برای این مشکل دارد نگاهی میاندازیم.
امنیت در الگوریتم PoW
برای مقابله با تقلب و دستکاری اطلاعات، رمزنگاری کلید عمومی کاربردی میشود. ما در این مقاله به عمق آن نمیپردازیم، اما در پاسخ به این سوال که رمزنگاری کلید عمومی چیست و چه فایدهای دارد، میتوان به طور خلاصه گفت که ترفندهای رمزنگاری دقیقی در بلاک چین بکار گرفته میشوند که به هر کاربری اجازه میدهد بررسی کند که آیا شخصی حق دارد دارایی دیجیتالی را که میخواهد خرج یا جابجا کند یا خیر. در روش کریپتو گرافی یا رمزنگاری، وقتی تراکنشی ایجاد میشود، آن را امضا میکنید. هر کسی در شبکه میتواند امضای شما را با کلید عمومی شما مقایسه کند و بررسی کند که آیا آنها با هم مطابقت دارند یا خیر. آنها همچنین قادرند بررسی کنند که آیا واقعاً میتوانید وجوه خود را خرج کنید و مجموع ورودیهای شما از مجموع خروجیهای شما بیشتر نباشد. هر بلوکی که شامل تراکنش نامعتبری باشد به طور خودکار توسط شبکه رد میشود. در نظر بگیرید حتی تلاش برای تقلب کردن هم گران و مستلزم مصرف انرژی زیاد است.
از زیباییهای الگوریتم PoW این است که تقلب در آن گران تمام میشود، در حالی که صادقانه عمل کردن آن را سودآور میکند. هر ماینر که بخواهد منطقی عمل کند و به دنبال بازگشت سرمایه باشد، به گونهای رفتار میکند که درآمدش را تضمین کند.
از سویی دیگر هم هدف اثبات کار، گسترش زنجیره است. طولانیترین زنجیره بهعنوان معتبرترین زنجیره پذیرفته میشود، زیرا بیشترین کار محاسباتی را انجام داده است. تقلب در این روش تقریبا غیرممکن است و دلیلش این است که یک ماینر مخرب باید همیشه نانس بلاک را سریعتر از دیگران پیدا کرده و آن را به اصطلاح ماین کند. برای ایجاد پیوسته بلاکهای مخرب و دستکاری شده و در عین حال معتبر، به بیش از 51 درصد از قدرت استخراج شبکه نیاز است تا بتوان دیگران را شکست داد. این عمل به حمله 51 درصد معروف است و برای اینکه این مقدار “کار” انجام شود، به قدرت محاسباتی زیادی نیاز است، در حالی که انرژی صرف شده حتی ممکن است بیشتر از دستاوردهای یک حمله باشد.