گواه اثبات کار یا Proof of Work که به اختصار PoW نامیده میشود، در واقع یک نوع الگوریتم اجماع است که مانع از حملات DDoS و سایر سوءاستفادهها در شبکه و همچنین مانع از ایجاد اسپم در شبکه میشود.
الگوریتم اثبات کار در بلاکچین و رمز ارزها کاربرد گستردهای دارد و اولین شبکهای که استفاده از PoW در بلاک چین را معرفی کرد، بیت کوین بود. اما Proof of Work چیست؟
در این مقاله به بررسی مفهوم PoW، تاریخچه گواه اثبات کار، الگوریتم اجماع، نحوه کارکرد اثبات کار، مراحل پیدا کردن بلاکهای معتبر توسط ماینرها، ویژگیهای اصلی Proof of Work، امنیت در PoW، مقایسه گواه اثبات کار و گواه اثبات سهام، مزایا و معایب PoW و رمز ارزهایی که از این الگوریتم استفاده میکنند، میپردازیم. با ما همراه باشید.
فهرست محتوا
الگوریتم Proof of Work چیست؟
گواه اثبات کار شکلی از روش اثبات با دانش صفر رمزنگاری شده (Cryptographic Zero-Knowledge Proof) است که یک طرف آن (اثبات کننده) به طرف دیگر (تایید کننده) اثبات میکند که محاسبات خاص و مورد نیاز را انجام داده است. تاییدکنندگان نیز متعاقبا این عمل را با حداقل تلاش تایید میکنند.
الگوریتم اثبات کار در شبکههای بلاک چینی، یک الگوریتم است که امنیت بسیاری از رمز ارزها از جمله بیت کوین و اتریوم را تامین میکند.
بلاک چین چیست؟ همه چیز درباره فناوری بلاکچین به زبان ساده
در سال ۲۰۰۹ یک پول دیجیتالی به نام بیت کوین به دنیا معرفی شد که قابل هک کردن نبود. بیتکوین یک تفاوت اساسی با دیگر ارزهای دیجیتالی پیش از خود داشت و آن، عدم نابودی یا هک شدن آن بود. بزرگترین رمز ارز دنیا روش جدیدی را برای استفاده از گواه اثبات کار پیدا کرد؛
در این شبکه گواه اثبات کار به همراه هشینگ (در ادامه توضیح خواهیم داد) به کار رفت تا در سیستم ماینینگ به کار رود و روشی باشد که از نفوذ هکرها جلوگیری کند.
گواه اثبات کار در شبکه بیت کوین، در واقع یک نوع الگوریتم اجماع است که برای تایید و اعتباربخشی به تراکنشها و افزودن بلاکهای جدید به شبکه بلاک چین مورد استفاده قرار میگیرد.
این یک مکانیزم است که باعث به اجماع رسیدن و یا توافق بر روی چیزهایی مانند موجودی آدرسها و ترتیب تراکنشها در شبکه غیرمتمرکزی مانند بیت کوین و اتریوم میشود. در واقع به دلیل وجود این الگوریتم در بلاک چین است که ماینرها با یکدیگر رقابت دارند تا تراکنشها را حل کنند و به بلاک بیافزایند.
تاریخچه الگوریتم PoW
مفهوم Proof of Work در سال ۱۹۹۳ توی سینتیا دورک (Cynthia Dwork) و مونی نائور (Moni Naor) ابداع شد و روشی برای حملات “خودداری از خدمات (Denial of Service) یا به اختصار حملات DOS” و دیگر سوءاستفادههایی مانند اسپم کردن بر روی یک شبکه بود.
DoS یک نوع حمله سایبری است که در آن، مهاجم به دنبال ایجاد اختلال برای استفاده کاربران از یک شبکه یا دستگاه متصل به اینترنت است. روش گواه اثبات کار درخواستکننده یک خدمات را وادار میکرد که برای برای انجام این درخواست، کاری (معمولا محاسبات خاصی توسط کامپیوتر خود) را انجام دهد.
اصطلاح گواه اثبات کار اولین بار در سال ۱۹۹۹ توسط مارکوس جیکوبسون (Markus Jakobsson) و آری جوئلز (Ari Juels) سازماندهی و بر روی کاغذ آورده شد. PoW بعدها توسط بیت کوین مشهور و شناخته شد.
الگوریتم اجماع چیست؟
الگوریتم اجماع (Consensus Algorithm) فرایندی در علوم کامپیوتری است که برای دستیابی سیستمهای توزیع شده به اجماع بر روی یک داده خاص استفاده میشود. الگوریتمهای اجماع برای به دست آوردن قابلیت اطمینان در یک شبکه، که شامل چندین نود غیر قابل اطمینان است، طراحی شدهاند.
کاربردهای الگوریتم اجماع شامل موارد زیر است:
- تصمیمگیری در مورد سپردن وظیفه تایید تراکنشها به دیتابیس.
- تعیین نود به عنوان رهبر برای انجام برخی وظایف.
- هماهنگ کردن تکثیر اطلاعات در ماشین حالت و ایجاد توافق بین آنها (State Machine روشی آسان و مناسب برای اعمال گردش کار است، که همواره در یک حالت قرار دارد و با تغییر ورودی یا خروجی، به حالتهای مختلف انتقال مییابد).
بلاک چین یک دیتابیس غیرمتمرکز است که توسط کامپیوترهای توزیع شده بر روی یک شبکه همتا به همتا مدیریت میشود. هر نود یا ماینر یک نسخه از کل بلاکچین را در اختیار دارد و آپدیتهای شبکه و تاییدیهها به طور مداوم بر روی تمام نسخههای نودها اعمال میشوند.
میدانیم که بلاک چین دارای امنیت، تغییرناپذیری و شفافیت است و هیچ نهاد مرکزی مسئولیت تایید تراکنشها را بر عهده ندارد؛ اما با این حال، تراکنشهای این شبکهها امن و معتبر هستند. این موضوع به دلیل حضور الگوریتم اجماع، به عنوان یک بخش اصلی در شبکههای بلاکچینی است.
Consensus Algorithm روشی برای به توافق رساندن تمام مشارکت کنندگان شبکه، درباره وضعیت فعلی بلاک چین است. با این روش، الگوریتمهای اجماع باعث دستیابی به اعتماد بین طرفینی میشوند، که یکدیگر را نمیشناسند. این الگوریتمها اطمینان حاصل میکنند که تمامی بلاکهای اضافه شده بر روی بلاکچین، همان نسخههایی باشند که تمامی نودها بر روی آن اتفاق نظر دارند.
نحوه کارکرد اثبات کار چگونه است؟
بسیاری از ارزهای دیجیتالی که قبل از بیت کوین وجود داشتند، یک نهاد مرکزی یا واسطه داشتند که تمام کاربران و مقدار داراییشان را کنترل میکردند؛ اما در کریپتوکارنسیهایی مانند بیتکوین چنین واسطهای وجود ندارد. برای ایجاد عدم تمرکز در یک رمز ارز، یکی از روشها استفاده از الگوریتم PoW است.
در اصل، گواه اثبات کار مشکل دو بار خرج کردن یا Double Spending را برطرف میکند. اگر فردی بتواند کوینهایش را دو بار خرج کند، بر روی میزان عرضه کلی آن کوین تاثیر میگذارد و باعث عدم قابلیت پیشبینی و بیارزش شدن آن میشود. Double Spending یک مسئله مرسوم در تراکنشهای آنلاین است؛
زیرا تکثیر تراکنشها کار بسیار سادهای است و درست مانند کپی کردن یک فایل و انتقال آن به جایی دیگر و یا ارسال یک ایمیل به چند نفر است.
در بیشتر ارزهای دیجیتال سنتی (مانند پولی که در کارت بانکی ما وجود دارد) مشکل دو بار خرج کردن قابل حل است؛ بانک مقدار پولی که هر نفر در حسابش دارد را بررسی میکند و اگر فردی ۱۰۰۰ تومان از کارت خود به کارت شخصی دیگر انتقال دهد، ۱۰۰۰ تومان از موجودی او کسر میشود. اما در کریپتوکارنسیها چنین نهاد واسطهای وجود ندارد؛ بنابراین این کار را الگوریتم PoW انجام میدهد.
الگوریتم اثبات کار دو بار خرج کردن یک پول دیجیتالی را بسیار دشوارتر میکند؛ واژه “اثبات” در این الگوریتم، بدین معناست که شخص باید برای ارسال تراکنش، کاری را حتما انجام دهد و در مورد این الگوریتم در بلاک چین، فرد باید محاسبات لازم را برای تراکنشها انجام دهد.
بیتکوین، گواه اثبات کار را در نقش شکلدهی به سیستم اجماع در بلاکچین غیرمتمرکز معرفی کرد که در آن، ماینرها یا استخراجکنندگان باید بلاکها را تکمیل کنند و کوین جدید تولید کنند. احتمال موفقیت هر ماینر، به نسبت میزان قدرت محاسباتی خود در شبکه بستگی دارد؛ اما اگر قدرت شبکه افزایش یابد، بلاکها به سرعت و پشت سر هم استخراج میشوند.
چه راهکاری برای این موضوع وجود دارد؟ این راهکار سختی شبکه (Difficulty) نام دارد؛ زمانی که قدرت پردازشی شبکه بیش از حد افزایش یافت، پروتکل شبکه، سختی آن را افزایش میدهد تا فرایند ماینینگ سختتر و دیرتر انجام شود و بالعکس، زمانی که قدرت محاسباتی شبکه کاهش مییابد، شبکه سختی را کاهش میدهد تا بلاکها راحتتر و سریعتر استخراج شوند. پروتکل بیت کوین، سختی شبکه را در هر ۱۶۰۰۰ بلاک (تقریبا دو هفته) طوری تنظیم میکند، که زمان ایجاد هر بلاک، تقریبا ۱۰ دقیقه باشد.
فرایند ماینینگ بر عهده نودهایی به نام ماینر است (تمام مشارکتکنندگان در یک شبکه بلاک چینی، نود نام دارند). ماینرها در شبکه باید پازلهایی را حل کنند. این نودها همچنین در حل کردن این معادلات با یکدیگر رقابت دارند؛ زیرا هر ماینری که پازلها را زودتر حل کند، میتواند تراکنش را به بلاک اضافه کند و جایزه بلاک را برای خود بردارد.
هنگامی که ماینر پازلی را حل کرد، روش حل پازل خود را در شبکه توزیع میکند تا در اختیار دیگر ماینرها قرار بگیرد و هنگامی که ماینرهای دیگر آن راهکار را تایید نمودند و به اجماع رسیدند، تراکنش به بلاک اضافه میشود و در نهایت بلاک نیز به بلاکچین افزوده میشود.
مراحل پیدا کردن بلاکهای معتبر توسط ماینرها
پروسه ماینینگ بلاک جدید بیت کوین زمانی شروع میشود که یک کاربر مقداری BTC را به فرد دیگری ارسال میکند. این تراکنش باید آنقدر در شبکه منتظر بماند، تا یک بلاک جدید استخراج شود. تراکنشهایی که هنوز تایید نشدهاند، توسط نودها جمعآوری شده و در یک بلاک قرار میگیرند و تا زمانی که بلوک جدید تولید نشده، تراکنشها هم تایید نمیشوند.
هر ماینر باید تراکنشهایی که میخواهد در بلاک جدید قرار دهد را انتخاب کند. این بلاک جدید با نام بلوک کاندید شناخته میشود و چون هنوز گواه اثبات کار معتبری بر روی آن انجام نشده، معتبر و تایید شده شناخته نمیشود.
در بلوکهای جدید، باید هدر بلاک (در هر بلوک بیت کوین، هدر یا سربرگ بلاک قرار دارد که شامل اطلاعات خلاصه در مورد آن بلاک است) قرار داشته باشد که شامل هش تراکنش قبلی، ریشه مرکل و دیتاهای مربوط به ماینینگ از جمله برچسب زمانی (Timestamp)، بیتهای بلاک، نسخه نرم افزار بلاکچین و عدد نانس است.
زمانی که ماینرها بلوک تراکنشهای خود را تشکیل دادند، باید به دنبال یافتن امضای معتبر برای بلاک خود باشند یا به عبارتی، گواه اثبات کار را انجام دهند. هر نود باید فرایند محاسبات ریاضیاتی را (که برای هر بلاک منحصر به فرد است) طی کند. بنابراین با این که روش انجام کار یکسان است، اما نتیجه برای هر نود کاملا متفاوت خواهد بود. این محاسبات پیچیده نیازمند مصرف انرژی بسیار زیادی است.
راه حلی که ماینرها به دنبال آن هستند، با نام هش (Hash) شناخته میشود و یافتن آن بسیار دشوار است؛ اما زمانی که هش صحیح پیدا شد، تایید آن توسط بقیه نودها بسیار آسان است. یافتن هش صحیح توسط عدد نانس انجام میگیرد؛ ماینرها مدام نانسهای مختلف را امتحان میکنند تا به هش صحیح برسند.
در مورد شبکه بیت کوین، هش صحیح به معنای تعداد معینی عدد صفر در ابتدای هش است و نودها باید این اعداد صفر را با امتحان کردن نانسهای مختلف به دست بیاورند.
زمانی که یک ماینر توانست هش خروجی صحیح برای بلاک جدید را پیدا کند، آن را به همراه امضای خود در شبکه منتشر میکند، تا مابقی نودها نیز آن را تایید کنند. زمانی که تعداد قابل قبولی از نودها با یکدیگر به اجماع رسیدند که این هش صحیح است، بلاک جدید به بلاکچین اضافه میشود و تمام تراکنشهای داخل آن نیز تایید میشوند.
ماینر نیز پاداش بلاک (که در حال حاضر ۶.۲۵ بیت کوین است) را به همراه کارمزد تمام تراکنشهای داخل بلاک دریافت میکند.
ویژگیهای اصلی گواه اثبات کار
ویژگی اصلی Proof of Work عدم تقارن است؛ محاسباتی که باید در این سیستمها انجام شود، در سمت اثباتکننده باید دشوار (اما نه غیرممکن) و از سمت تاییدکننده آسان باشد. این ایده همچنین به عنوان تابع هزینه CPU ، پازل کلاینت، پازل محاسباتی یا عملکرد قیمتگذاری CPU نیز شناخته میشود.
یکی دیگر از ویژگیهای مفهوم PoW ساختارهای تشویقی داخلی است، که به کلاینتهایی که این محاسبات را انجام میدهند و آنها را اثبات میکنند، به صورت یک دارایی اقتصادی تعلق میگیرد.
امنیت در PoW
ماینرها برای کاری که در شبکه بلاکچینی انجام میدهند، پاداش را به صورت کوین بومی آن شبکه دریافت میکنند. برای همین، ماینرهای بیشتری جذب استخراج رمز ارزها میشوند؛ هر چه تعداد ماینرها یا نودهای یک شبکه بیشتر باشد، امنیت آن نیز افزایش مییابد.
از آنجایی که ماینرها به صورت غیرمتمرکز در شبکه فعالیت میکنند، این غیرممکن است که همزمان دو بلاک معتبر ساخته شوند. اگر دو نود به طور همزمان پاسخ یک پازل را پیدا کنند و آن را در شبکه منتشر کنند، به طور موقت یک فورک ایجاد میشود (زنجیره دو شاخه میشود) و مابقی ماینرها از بین این دو سازنده بلاک، یکی را که دارای زنجیره بلندتر یا “سنگینتر” است را به عنوان زنجیره معتبر تایید میکنند.
تراکنشهایی که در زنجیره کوتاهتر یا نامعتبر وجود داشتند، ممکن است به زنجیره بلندتر منتقل شوند؛ اما احتمال رد شدن آنها نیز وجود دارد؛ بنابراین “قطعیت” بدین معناست که شما باید مدت زمانی را بعد از تایید شدن تراکنشتان صبر کنید تا از قرار گرفتن تراکنش در زنجیره اصلی، مطمئن شوید.
در شبکههای توزیع شده مانند Bitcoin و اتریوم، تراکنشها دارای “قطعیت” هستند؛ یعنی زمانی که در بلاک چین قرار میگیرند، دیگر قابل تغییر و برگشتپذیری نیستند.
هدف اثبات کار گسترش زنجیره است؛ بنابراین بلندترین زنجیره اعتبار بیشتری دارد. زیرا کار محاسباتی بیشتری بر روی آن انجام شده است.
در شبکه بیتکوین، برای این که یک نود خرابکار بتواند در شبکه بلاکهای مخرب (اما معتبر) بسازد، باید بیش از ۵۱ درصد قدرت ماینینگ شبکه را در اختیار بگیرد، که این نیاز به قدرت محاسباتی عظیمی دارد و انرژیای که صرف این حمله شده، بسیار بیشتر از درآمدی است که مهاجم به دست میآورد.
مقایسه گواه اثبات کار و گواه اثبات سهام
الگوریتمهای Proof of Work و Proof of Stake یا PoS مشهورترین و پرکاربردترین مکانیزمهای اجماع در رمز ارزها هستند. به بیانی ساده، الگوریتم PoS کل فرآیند اجماع را درست مانند اثبات کار، اما به صورت کاملا مجازی انجام میدهد. هدف این دو الگوریتم یکسان است، اما روش رسیدن به این هدف تفاوت دارد.
در PoW ماینرها پازلهای دشوار ریاضیاتی و رمزنگاری شده را با استفاده از منابع محاسباتی خود حل میکنند. در PoS به جای ماینر، نودهای ولیدیتور یا تاییدکننده وجود دارند. Validatorها کوینهای خود را در اکوسیستم بومی این کوین Stake یا سپردهگذاری میکنند.
سپس با توجه به میزان کوین سپردهگذاری شده هر نود، میزان قدرت او در شبکه مشخص میشود و هر نودی که قدرت بیشتری داشته باشد، زودتر میتواند بلاک بعدی را به بلاک چین اضافه کند و پاداش بلاک را دریافت کند.
مشارکتکنندگان در سیستمهای اثبات سهام، نیازی به استفاده از قدرت پردازشی خود ندارند؛ زیرا تنها فاکتوری که بر روی شانس برنده شدن در ساخت بلاکها و تایید تراکنشها دخیل است، مقدار کوینهایی است که در شبکه استیک کرده است.
از جمله مزایای Proof of Stake میتوان به موارد زیر اشاره کرد:
- صرفهجویی در انرژی
- شبکهای امنتر به دلیل افزایش هزینه حملات؛ اگر یک مهاجم بخواهد ۵۱ درصد کل کوینهای استیک شده را خریداری کند (تا بتواند قدرت شبکه را به دست بگیرد)، بازار با افزایش سریع قیمت آن کوین، واکنش نشان میدهد.
- وجود مجازات برای نودهای مخرب یا بدکار (این مورد در اثبات کار وجود ندارد)
مزایا و معایب PoW
الگوریتم گواه اثبات کار با این که هدف خوبی برای حملات مختلف سایبری است، اما معایبی نیز دارد. در ادامه، به برخی از مزایا و معایب این الگوریتم اشاره میکنیم:
مزایا:
- PoW خنثی است؛ یعنی شما نیازی به کوین مورد نظر برای شروع ندارید.
- اثبات کار یک الگوریتم اجماع امتحان شده است و سالها امنیت شبکههای بیتکوین و اتریوم را تامین کرده است.
- در مقایسه با گواه اثبات سهام، راه اندازی اثبات کار سادهتر است.
معایب:
- اثبات کار انرژی بسیار زیادی مصرف میکند و برای محیط زیست خطرناک است.
- برای استخراج رمزارزها، شما نیاز به تجهیزات مخصوص این کار دارید، که معمولا هزینه بسیار زیادی دارد.
- استخرهای ماینینگ از آنجایی که قدرت محاسباتی بسیار بالایی دارند، میتوانند باعث متمرکز شدن شبکه و ریسکهای امنیتی شوند.
نمونهای از Proof of Work در بیت کوین
اثبات کار نیازمند یک کامپیوتر است تا بتواند توابع هش را به صورت تصادفی تست کند، تا به یک خروجی با تعداد صفرهای صحیح برسد؛ برای مثال، هش بلاک شماره ۶۶۰۰۰۰ که در ۴ دسامبر ۲۰۲۰ (۱۴ آذر ۹۹) استخراج شده است، برابر است با:
۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۸eddcaf078f12c69a439dde30dbb5aac3d9d94e9c18f6
ماینر یا نودی که این بلوک را استخراج کرده بود، ۶.۲۵ واحد BTC به عنوان پاداش دریافت کرد. این بلاک برای همیشه شامل ۷۴۵ تراکنش (شامل بیش از ۱۶۶۶ بیت کوین) و هدر بلاک قبلی خواهد بود؛ زیرا این اطلاعات در این بلوک ثبت شده و بر روی بلاک چین قرار گرفتهاند؛ اگر کسی بخواهد مقدار یک تراکنش را کوچکترین تغییری دهد (حتی ۰.۰۰۰۰۰۱ بیتکوین)، هش خروجی تغییر میکند و قابل تشخیص نخواهد بود؛ در نتیجه، شبکه آن را رد میکند.
چه رمز ارزهایی از الگوریتم گواه اثبات کار استفاده میکنند؟
ارزهای رمزنگاری شده زیادی از این الگوریتم استفاده میکنند؛ در اینجا، به چند مورد از معروفترین این رمزارزها اشاره میکنیم:
- بیت کوین
- اتریوم (البته اتریوم در حال انتقال به شبکه اتریوم ۲ است و پس از این که این انتقال شبکه به طور کامل و با موفقیت انجام شد، اتریوم ۲ از سیستم گواه اثبات سهام استفاده خواهد کرد).
- بیت کوین کش (BCH)
- لایت کوین (LTC)
- مونرو (XMR)
- زی کش (ZEC)
- دوج کوین (DOGE)
- بیت کوین اس وی (BSV)
پرسش و پاسخ (FAQ)
- الگوریتم Proof of Work چیست؟
گواه اثبات کار بدین معنی است که نودهای یک شبکه، باید کار محاسباتی خاصی را انجام دهند و آن را اثبات کنند، تا بتوانند در یک فضای غیرمتمرکز به اجماع برسند و از سوءاستفاده یا حملات مهاجمان جلوگیری کنند.
- گواه اثبات کار چگونه یک تراکنش کریپتو را تایید میکند؟
در بیت کوین، محاسبات برای ساخت بلاک جدید (اثبات کار) توسط الگوریتم هشینگ SHA256 صورت میگیرد. نودی که در این رقابت “برنده” میشود، تراکنشها را از فضایی در بلاکچین به نام ممپول (Mempool) جمعآوری میکند و درون بلاک جدید قرار میدهد.
- چرا رمز ارزها از PoW استفاده میکنند؟
رمزارزهایی که به صورت غیرمتمرکز و همتا به همتا طراحی شدهاند، باید به اجماع و امنیت دست پیدا کنند. PoW یکی از روشهایی است که باعث میشود برای حمله به شبکه، نیاز به منابع زیادی باشد که این برای مهاجم، بسیار هزینهبر است. همچنین زمانی که یک بلاک جدید ساخته میشود، دیگر ماینرها نیز باید این بلوک را تایید کنند، تا در بلاکچین قرار گیرد و به این شکل، نودها با یکدیگر به اجماع میرسند.
جمعبندی
بلاک چین بیت کوین از الگوریتم اجماع گواه اثبات کار برای به اجماع رساندن مشارکتکنندگان شبکه استفاده میکند. اما Proof of Work چیست؟ در این مقاله به بررسی مفهوم PoW، تاریخچه آن، الگوریتم اجماع، نحوه کارکرد اثبات کار، مراحل پیدا کردن بلاکهای معتبر توسط ماینرها، ویژگیهای اصلی گواه اثبات کار، امنیت در PoW، مقایسه گواه اثبات کار و گواه اثبات سهام، مزایا و معایب PoW و رمز ارزهایی که از این الگوریتم استفاده میکنند، پرداختیم.