الگوریتم اثبات کار (POW) در بلاک چین و ارز دیجیتال بیت کوین چیست؟

لینک صفحه

الگوی Proof of Work راهی برای جلوگیری از دابل اسپندینگ یا دو بار خرج کردن است. اما الگوریتم گواه اثبات کار POW چگونه و چطور کار می‌کند؟

الگوریتم اثبات کار (Proof of Work) که عموما به صورت خلاصه با PoW شناخته می‌شود، مکانیزمی برای جلوگیری از دابل اسپندینگ (Double Spending) یا همان دو بار خرج کردن در بلاک چین است. اکثر رمز ارزهای بزرگ از این الگوریتم اجماع استفاده می‌کنند. این الگو در واقع روشی برای تامین امنیت دفتر کل یک ارز دیجیتال است.

دو بار خرج کردن چیست؟

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

اما در پول دیجیتال، امکان انجام این کار وجود دارد. احتمالا تا به حال یک فایل کامپیوتری را با کپی و پیست کردن دو بار ذخیره کرده‌اید. یا مثلا می‌توانید یک ایمیل را برای 10، 20 و 50 نفر بفرستید. از آنجایی که پول دیجیتال صرفا از داده تشکیل شده است، باید از کپی شدن و خرج یک واحد یکسان در مکان‌های مختلف جلوگیری کنید. در غیر این صورت، ارز شما در زمان کوتاهی سقوط خواهد کرد.

اثبات کار از کجا شروع شد؟

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

الگوریتم هش کش (HashCash) آدام بک (Adam Back) یکی از اولین نمونه‌های الگوی اثبات کار در روزهای پیش از تولد رمز ارزهاست. این الگو از طریق ملزم کردن فرستنده به انجام مقداری کار محاسباتی پیش از ارسال یک ایمیل، به گیرنده در کاهش دریافت اسپم‌ها کمک می‌کند. این محاسبات برای یک فرستنده مشروع تقریبا هیچ هزینه‌ای در بر ندارد، اما برای فردی که به‌طور دسته جمعی ایمیل ارسال می‌کند، گران خواهد بود.

چرا الگوریتم اثبات کار ضروری است؟

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

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

تایید اثبات کار

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

حالا شاید فکر کنید که این کار در یک گروه کوچک به خوبی انجام می‌شود. همه همدیگر را می‌شناسند و احتمالا سر اینکه چه کسی تراکنش‌ها را به دفترچه اضافه کند، اتفاق نظر خواهند داشت. اما اگر یک گروه 10,000 نفره داشته باشیم چه؟ در این حالت، ایده دفترچه یادداشت به‌خاطر عدم اعتماد افراد به یک فرد غریبه برای مدیریت آن، مقیاس پذیری خوبی نخواهد داشت.

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

الگوی PoW چگونه کار می‌کند؟

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

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

هش کردن داده‌های بلاک یعنی وارد کردن آن داده‌ها به داخل یک تابع هشینگ (Hashing Function) برای تولید هش بلوک. حالا این هش بلاک مانند یک «اثر انگشت» کار می‌کند؛ هویتی برای داده‌های ورودی و برای هر بلوک منحصربه‌فرد است.

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

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

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

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

تایید بلاک

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

پس تا اینجا یاد گرفتیم که:

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

اما اگر تقلب کنید چه می‌شود؟ چه چیزی شما را از قرار دادن تراکنش‌های تقبلی در بلاک و تولید هش معتبر برحذر می‌دارد؟

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

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

هر بلاکِ دارایِ یک تراکنش نامعتبر به صورت خودکار توسط شبکه رد می‌شود. بنابراین، حتی تلاش برای تقلب هم بسیار هزینه‌بر است. در واقع بدون دریافت هیچ پاداشی منابع‌تان را به هدر داده‌اید. بنابراین، زیبایی الگوریتم اثبات کار در این نهفته است که «تقلب کردن را هزینه‌بر، اما فعالیت صادقانه را سودآور» می‌کند. هر ماینر عاقلی هم به‌دنبال بازگشت سرمایه (ROI) است، بنابراین رفتار تضمین‌کننده درآمد هم از آن‌ها انتظار می‌رود.

مثالی از نحوه کار الگوی اثبات کار اتریوم

تراکنش‌های اتریوم درون بلاک‌ها پردازش می‌شوند. هر بلاک دارای موارد زیر است:

  • سختی بلاک: مثلا 3,324,092,183,262,715
  • میکس‌هش: مثلا 0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29
  • نانس: مثلا 0xd3ee432b4fb3d26b

این داده‌های بلاک مستقیما با خود اثبات کار در ارتباط هستند.

مقایسه اثبات کار و اثبات سهام

الگوریتم‌های اجماع زیادی وجود دارند، اما یکی دیگر از محبوب‌ترین آن‌ها، الگوی اثبات سهام (Proof of Stake) یا PoS است. این مفهوم به سال 2011 برمی‌گردد و توسط پروتکل‌های کوچکتر پیاده‌سازی شده است. اما استفاده از آن توسط بلاک چین‌های بزرگ هنوز جای کار دارد.

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

البته هر کاربری هم انتخاب نمی‌شود. پروتکل بر اساس یک سری فاکتورها این افراد را انتخاب می‌کند. برای واجدالشرایط بودن، مشترکان باید مقداری رمز ارز را استیک (Stake) یا به اصطلاح «سهام‌گذاری» کنند، که در واقع مقداری از ارز دیجیتال محلی شبکه است. استیکینگ شبیه به وثیقه عمل می‌کند: درست مثل زمانی که متهمان مقدار زیادی پول را به دادگاه می‌دهند تا از عدم حضورشان برای محاکمه جلوگیری شود، ولیدیتورها هم مقداری رمز ارز را برای جلوگیری از تقلب استیک می‌کنند. در صورت عدم صداقت، کل استیک (یا بخشی از آن) گرفته می‌شود.

الگوریتم اثبات سهام نسبت به اثبات کار یک سری مزیت دارد. قابل توجه‌ترین آن، کوچک‌تر بودن ردبای کربنی است؛ از آنجایی که نیازی به استفاده از مزارع ماینینگ بزرگ در PoS وجود ندارد، برق مصرفی نیز بسیار ناچیزتر از PoW خواهد بود.

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

مشکلات استفاده از اثبات کار چیست؟

چندین مشکل در الگوی PoW وجود دارد که عبارتند از:

  • مصرف بالای انرژی: بیت کوین به‌خاطر الگوریتم اثبات کار خود، به‌اندازه کشور سوئیس انرژی مصرف می‌کند. البته با اینکه بخشی از این میزان توسط انرژی تجدیدپذیر تامین می‌شود، اما مقدار مصرف با پیوستن ماینرهای بیشتر به شبکه برای کسب رمز ارز BTC رو به افزایش است.
  • حمله 51 درصد: اگر یک واحد ماینینگ بتواند 51 درصد از هش ریت استخراج بیت کوین را به‌دست آورد، قادر به عدم پیروی موقت از قوانین، انجام دابل اسپندینگ و مسدودسازی تراکنش‌هاست.
  • تمرکزگرایی ماینینگ: اثبات کار یعنی ساخت یک ارز بدون دخالت یک مسئول متمرکز. با این وجود، این سیستم در عمل نسبتا متمرکز است و تنها سه استخر استخراج تقریبا 50 درصد قدرت محاسباتی بیت کوین را کنترل می‌کنند. با این وجود، توسعه‌دهندگان به‌دنبال بهبود این مشکل هستند.
سهم اسخرهای استخراج ارز دیجیتال از قدرت هش شبکه بیت کوین
سهم اسخرهای استخراج ارز دیجیتال از قدرت هش شبکه بیت کوین

چرا قدرت ماینینگ بیشتر به معنای امنیت بالاتر است؟

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

حمله 51 درصد چیست؟

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

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

حمله 51 درصد در اثبات کار

در ادامه، ماینرها به یکی از این شاخه‌ها می‌پیوندند. از آنجایی هم که این افراد اکثریت قدرت محاسباتی را در اختیار دارند، زنجیره آن‌ها دارای بلاک‌های بیشتری است.

51 درصد ماینرها

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

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

مزیت استفاده از الگوی اثبات کار چیست؟

مزیت اصلی استفاده از PoW، محافظت در برابر حملات DoS و اثرگذاری کم روی امکانات ماینینگ است.

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

با وجود استفاده اکثر ارزهای دیجیتال از الگوی PoW، برخی دیگر در حال آزمایش راه‌های متفاوت تامین امنیت شبکه هستند. از جمله شناخته‌شده‌ترین رمز ارزهای مبتنی بر اثبات کار عبارتند از:

  • بیت کوین
  • اتریوم (البته در اتریوم 2، اثبات سهام جایگزین PoW خواهد شد)
  • بیت کوین کش
  • لایت کوین
  • مونرو

جمع‌بندی

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

منابع:

مطالب مرتبط
افزودن نظر