الگوریتم اثبات کار چیست؟ — Proof of Work به زبان ساده

۸۳۶ بازدید
آخرین به‌روزرسانی: ۱۸ اردیبهشت ۱۴۰۲
زمان مطالعه: ۱۷ دقیقه
دانلود PDF مقاله
الگوریتم اثبات کار چیست؟ — Proof of Work به زبان سادهالگوریتم اثبات کار چیست؟ — Proof of Work به زبان ساده

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

997696

بلاک چین چیست ؟

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

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

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

بلاک چین چیست

الگوریتم اجماع چیست ؟

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

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

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

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

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

«الگوریتم اجماع اثبات کار» (Proof of Work | PoW) اولین الگوریتم اجماع استفاده شده در شبکه‌های بلاک چینی است اما تاریخچه آن به خیلی قبل‌تر از آن و به سال 1993 برمی‌گردد. این الگوریتم در آن زمان به عنوان روشی در مقابل حملات «خودداری از خدمات» (DOS) که برای از کار انداختن سیستم و اسپم کردن بر روی شبکه اینترنت انجام می شد، استفاده شد.

چند سال بعد «هال فینی» (Hall Finney) دانشمند حوزه رمزنگاری و علوم کامپیوتر از این الگوریتم برای تولید پول دیجیتال استفاده کرد اما موفقیت چندانی به دست نیاورد. در نهایت، در سال 2009 «ساتوشی ناکاموتو» خالق ناشناس بیت کوین از این الگوریتم در کنار سایر تکنیک‌های رمزنگاری برای اجماع در شبکه استفاده کرد.

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

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

الگوریتم اجماع اثبات کار ارز دیجیتال

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

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

معادله ریاضی استفاده شده یک مساله‌ای است که به توان محاسباتی زیادی برای به جواب رسیدن نیاز دارد. از توابع زیادی می‌توان برای این کار استفاده کرد که مهم‌ترین آن‌ها به صورت زیر هستند.

  • «توابع هش» (hash functions): مساله، پیدا کردن ورودی یک تابع با داشتن خروجی آن است.
  • «فاکتورگیری اعداد صحیح» (integer factorization): در این حالت مساله، نحوه ارائه یک عدد به صورت ضرب دو عدد دیگر است.
  • «پروتکل تور با راهنما» (guided tour puzzle protocol): در این روش اگر سرور مشکوک به حمله DOS شود، از برخی نودهای شبکه می‌خواهد که تعدادی از توابع هش را با ترتیب مشخص شده حل کنند و به شبکه ارسال کنند. در واقع مساله، چگونگی پیدا کردن مقادیر زنجیره‌ای از توابع هش است.

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

ویژگی‌های معادلات ریاضی الگوریتم اثبات کار چیست ؟

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

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

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

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

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

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

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

تراکنش‌های شبکه هر کدام هش مخصوص خود را دارند. این هش‌ها با استفاده از «درخت مرکل» (Merkel Tree) به همدیگر متصل شده و در نهایت «ریشه مرکل» (Merkel Root) را به وجود می‌آورند که با استفاده از آن امنیت تراکنش‌های موجود در یک بلاک حفظ می‌شود. کمترین تغییر در هر یک از تراکنش‌ها، منجر به تغییر در ریشه مرکل می‌شود و این مساله بلاک را بی‌اعتبار می‌کند. کاربران با داشتن اطلاعات مختلف مثل تراکنش‌ها، ریشه درخت مرکل، مهر زمانی و غیره فعالیت اثبات کار را شروع می‌کنند. در واقع تمامی مراحل ذکر شده تا به الان مقدمات ورود به بحث الگوریتم اثبات کار بوده است.

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

توابع هش و الگوریتم اثبات کار

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

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

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

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

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

مقدار پاداش در هر شبکه بلاک چینی با الگوریتم اثبات کار متفاوت است. پاداش الگوریتم اثبات کار بیت کوین در سال‌های اولیه برابر 50 بیت کوین بود که هر چهار سال یکبار این عدد نصف شده و در حال حاضر برابر با 6/25 بیت کوین است. با توجه به محدودیت 21 میلیونی کل سکه‌های بیت کوین، این مقدار سکه تا سال 2140 استخراج خواهد شد و از آن پس تنها کارمزدهای تراکنش‌ها به عنوان پاداش استخراج در نظر گرفته خواهد شد.

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

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

سلب مسئولیت مطالب اقتصاد: این مطلب صرفاً‌ با هدف افزایش آگاهی عمومی در حوزه اقتصاد نوشته شده است. برای سرمایه‌گذاری،‌ تجارت و آگاهی دقیق از قوانین مربوط به آن‌ها، لازم است حتماً از دانش و مشاوره افراد متخصص کمک گرفته شود. دقت داشته باشید که قوانین بازار سرمایه و قوانین تجاری و اقتصادی کشور، همواره در حال تغییر هستند و بر همین اساس، ممکن است برخی موارد ذکر شده در این مطلب، دیگر صحت نداشته باشند. مسئولیت هر گونه بهره‌برداری از این نوشتار با هدف سرمایه‌گذاری، تجارت، کسب درآمد و غیره، بر عهده خود افراد بوده و مجله فرادرس هیچ مسئولیتی در این رابطه ندارد. برای اطلاعات بیشتر + اینجا کلیک کنید.
بر اساس رای ۱۳ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
InvestopediaCointelegraph
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *