الگوریتم اجماع (Consensus Algorithms) چیست؟
یکی از مهمترین خصوصیات شبکههای بلاک چین و سایر «دفاتر کل توزیعشده» ٰ(Distributed Ledger) این است که غیرمتمرکز هستند. در حقیقت غیرمتمرکز بودن این شبکهها به این معنی است که تمامی دادهها و اطلاعات، بر روی سرور اصلی ذخیره و پردازش نشده و بر روی چندین رایانه گوناگون ذخیره و نگهداری میگردد. به سرورهایی که مسئول نگهداری این دادهها هستند، «گره» یا نود (Node) گفته میشود.
از طرفی اصلیترین علت استفاده از دفاتر کل توزیعشده همچون بلاک چین، افزایش سطح امنیت و کسب اطمینان در مورد عدم از بین رفتن یا خرابی دادهها است. درواقع اگر دادههایی که بر روی یکی از نودها قرار دارند، به هر دلیلی از بین بروند تا خراب شوند، بیشمار نود دیگر وجود دارند که این اطلاعات را بر روی خود ذخیره دارند.
ما در زمان استفاده از بلاک چین یا دیگر اقسام دفاتر کل توزیعشده، یک موضوع بسیار مهم مطرح است؛ در حقیقت وقتیکه قرار بر این باشد که دادهها مرتبا بهروزرسانی گردند، این بهروزرسانی لزوما باید بر روی تمامی سرورها یا گرهها انجام شود و جهت انجام این کار از الگوریتم یا مکانیزمی به نام «الگوریتم اجماع» (Consensus Mechanism) استفاده میشود.
اساسا در عرصه ارزهای رمزنگاریشده و شبکه بلاک چین، الگوریتم اجماع دارای اهمیت بسیار زیادی است، بهگونهای که چنین مفهومی، اصلیترین نقش را در امنیت شبکههای بلاک چین و سیستمهای توزیعشده در آن دارد. از این رو در این مطلب قصد داریم تا به مفهوم الگوریتم اجماع و انواع گوناگون آن بپردازیم و در قدم نخست باید ببینیم که اساسا الگوریتم اجماع چیست و چه ساختاری دارد.
الگوریتم اجماع (Consensus Algorithms) چیست؟
از آنجا که شبکههای بلاک چینِ غیرمتمرکز، در قالب سیستمهای توزیعشده هستند، که به هیچ مرجع یا قدرتی وابستگی ندارند، «الگوریتم اجماع» (Consensus Algorithms) را میتوان نوعی مکانیزم تعریفشده نامید که بهوسیله آن شبکه بلاک چین قادر است تا در مورد یک مسئله به نتیجه یا اجماعی کلی برسد. در این روش برای تایید تراکنشهای انجامشده، تعداد بخصوصی از گرهها یا نودهای شبکه، باید به توافقی کلی برسند.
در حقیقت الگوریتمهای اجماع تضمین میکنند که مقررات مرتبط با پروتکلها بهصورت کاملا صحیح رعایت و اجراشده و تمامی تراکنشها و نقل و انتقالات ارزهای دیجیتال در شبکه بلاک چین در حالتی صحیح و در چهارچوب مقررات مرتبط با آن انجام گردیدهاند.
در حقیقت اساسا مفهوم الگوریتم اجماع در داخل یک شبکه بلاک چین به این شکل است که باید میان تعداد معین و مشخصشده از نودها (حداقل بیش از نیمی از نودهای شبکه)، درباره انجام یک تراکنش و انتقال بهصورت دستهجمعی توافقی حاصل گردد، تا چنین انتقالی در داخل یک شبکه بلاک چین انجام شود.
دادههای ثبتشده بر روی یک شبکه بلاک چین میتوانند در هر دستهبندی یا هر شکلی اعم از: انتقال یک یا چند ارز دیجیتال، تعیین مالکیت یک رمز ارز مشخص، هویت یک کاربر بخصوص در شبکه، توافق میان دو کاربر یا مقدار برق مصرفشده باشند.
در حقیقت هر نود شبکه، تراکنش را ثبت کرده و دادههای مربوط به آن تراکنش را به نسخه دفتر کل خود اضافه خواهد کرد. ازاینرو اگر دادهها از روی دفتر کل یک نود پاک شده و یا آن نود دچار مشکل گردد، گرههای دیگر همچنان میتوانند به آن اطلاعات دسترسی داشته باشند. حال در ادامه با ما همراه باشید تا ببینیم که اساسا چرا به مفهومی مثل الگوریتم اجماع نیاز داریم؟
چرا به الگوریتم اجماع نیاز داریم؟
همانطور که در ابتدای این مطلب نیز به آن اشاره کردیم، یکی از برجستهترین خصوصیات بلاک چین، غیرمتمرکز بودن آن است و این غیرمتمرکز بودن بدین معنی است که دادهها بر روی سروری مرکزی ذخیره و پردازش نشده و تمامی دادهها در چندین سرور و رایانهی متفاوت ذخیره میگردند که به هرکدام از آنها یک گره یا نود میگوییم.
همچنین اشاره کردیم که اگر دادههای ذخیرهشده بر روی هر نود از بین بروند، چندین نود دیگر وجود دارند که همان دادهها را بر روی سرور خود ذخیره کردهاند و این همان کاربرد الگوریتم اجماع است و به این دلیل است که ما به چنین مکانیزمی در شبکهی بلاک چین ارزهای دیجیتال نیاز داریم.
در یک سیستم متمرکز، مانند یک شرکت، در زمانی خاص تمام کارمندان در دسترس هستند، درحالیکه این مسئله در سیستمهای غیرمتمرکز متفاوت است، بنابراین الگوریتم اجماع شکل گرفته تا این مشکل را حل کند. در این سیستمهای غیرمتمرکز، به جای تمامی نودها، به حداقل تعدادی از آنها نیاز است که یک تراکنش را تأیید یا تغییری را تصویب کنند. بهعنوان مثال اگر 51 درصد از نودهای شبکه در الگوریتم اجماع بلاک چین به این نتیجه برسند که دادههای شبکه باید بهروزرسانی شوند، این امر رخ خواهد داد.
جدا از اینکه از الگوریتم اجماع جهت تصمیمگیری در مورد صلاحیت یا عدم صلاحیت یک تراکنش برای تأیید استفاده میشود، از آن جهت انتخاب نودها برای مدیریت امور دفتر کل توزیعشده، یکدست کردن دادههای ذخیرهشده بر روی سیستمهای هر گره و… نیز استفاده میشود.
خب! تا اینجا دیدیم که اساسا مفهوم الگوریتم اجماع به چه معنا است و چرا نیاز داریم که از آن استفاده کنیم. اما الگوریتم اجماع تنها به یک شکل وجود ندارد و در دستهبندیهای مختلف در عرصهی ارزهای دیجیتال مورداستفاده قرار میگیرد که در ادامه قصد داریم تا به هرکدام از آنها بپردازیم.
انواع مختلف الگوریتمهای اجماع
اساسا در پشتصحنه فعالیت هر رمز ارز معتبر و محبوب، شاهد این هستیم که یک الگوریتم اجماع بسیار خوب در حال اجرا است. هرکدام از الگوریتمهای اجماع، خصوصیات و ویژگیهای منحصربهفرد خود را دارد و البته که هیچکدام از آنها نیز بدون نقطهضعف نیست.
پس با ما همراه باشید تا انواع مختلف الگوریتمهای اجماعی که در عرصهی ارزهای دیجیتال مورداستفاده قرار میگیرند را بررسی کنیم. نخستین الگوریتم اجماعی که به سراغ آن خواهیم رفت، بهاحتمالزیاد شناختهشدهترین الگوریتم اجماع در میان کاربران است. نخستین الگوریتمی که در ادامه آن را معرفی خواهیم کرد، الگوریتم گواه اثبات کار است.
الگوریتم گواه اثبات کار (Proof of Work)
الگوریتم «گواه اثبات کار» (Proof of Work) که بهصورت خلاصه با PoW معرفی میشود، بهنوعی شناختهشدهترین و یکی از نخستین الگوریتمهای اجماعی است که به وجود آمد. این مکانیزم در آغاز کار خود در عرصه دیجیتال، در شبکه بلاک چین بیت کوین مورداستفاده قرار گرفت، ولی حقیقت این است که مدتها پیش از بیت کوین در تکنولوژیها و صنایع دیگر نیز مورداستفاده قرار گرفته است.
بهصورت کلی در مکانیزم گواه اثبات کار، اعتبارسنجهای شبکه که درواقع همان ماینرها هستند، دادههایی را که قصد اضافه شدن به شبکه را دارند، بهاصطلاح «هش» (Hash) میکنند تا برای آنها راهحلی معین بهدست بیاورند.
اساسا هش به رشتهای از اعداد و حروف گفته میشود که زمانی که دادهها را وارد یک تابع هش کنیم، به عنوان خروجی، ایجاد خواهد شد. از طرفی طول این رشته از اعداد و حروف همواره ثابت است، ولی حتی با کوچکترین تغییر در ورودی، هش بهکلی تغییر خواهد کرد.
حال دقت کنید که در الگوریتم گواه اثبات کار، شاهد تنظیم شدن یک سری مقررات هستیم تا بهواسطه آنها مشخص شود که کدامیک از بلوکهای شبکه دارای اعتبار هستند. ازاینرو تنها راهی که ماینرها (اعتبارسنجها) میتوانند یک معادله با چنین قوانینی ایجاد کنند و به پاسخ آن دست پیدا کنند، این است که ورودیها را به شکلی Brute Force وارد کنند.
به این معنا که شروع به حدس زدن ورودیهای متفاوت میکنند تا خروجی مدنظر و هش خود را پیدا کنند. هر ماینری که بتواند توسط سختافزارهای پیشرفته و نرمافزار مخصوص آن به هش مورد نظر دست پیدا کند، پاداش شبکه را (که همان کوین شبکهی بلاک چین است) دریافت میکند.
به چنین فرایندی استخراج یا ماینینگ (Mining) گفته میشود. البته دقت کنید که چنین فرایندی بهوسیلهی سختافزار و نرمافزارهایی که مخصوص این کار طراحی و ساخته شدهاند (مانند ASICها)، انجام میشود و بدون وجود آنها رسیدن به جواب معاملات پیچیده عملا غیرممکن است.
از این رو نتیجهای که میگیریم این است که الگوریتم اثبات کار، یک شبکه بلاک چین را ایمن میکند و این موضوع را تضمین میکند که عملکرد شبکه، طبق مقررات تعیینشده پیش برود.
همچنین از بزرگترین ایرادات این الگوریتم میتوان به هزینههای گزاف، بیفایده بودن محاسبات انجامشده در زمینههای دیگر و حمله ۵۱ درصدی اشاره کنیم. در بین این ایرادات، مبحث حملات ۵۱ درصدی از اهمیت بسیار بالاتری برخوردار است. بهصورت کلی زمانی که صحبت از بلاک چینهایی مبتنی بر الگوریتم اثبات کار میشود، افزایش نرخ هش یک ماینر، باعث افزایش شانس او جهت یافتن پاسخی معتبر برای بلوک بعدی است.
از طرفی مثلا در مورد بیت کوین، در آغاز پیدایش این ارز دیجیتال، تعداد ماینرهای شبکه آن کم بود، ولی با رشد شبکه این رمز ارز، تعداد بیشماری ماینر به شبکه بیت کوین ملحق شده و بر سر کسب پاداش استخراج این ارز دیجیتال با هم به رقابت پرداختند. در حقیقت این رقابت بر سر کسب پاداش، از جمله مهمترین علل امنیت بیت کوین است.
در حقیقت حمله ۵۱ درصدی شرایطی است که در آن بیشتر نرخ هش شبکه بلاک چین یک ارز دیجیتال در اختیار یک شخص یا گروهی قرار بگیرد و به این ترتیب آنها توانایی ایجاد اخلال در شبکه را به دست بیاورند. در این حالت، فرد یا گروه مهاجم قادر هستند تا ترتیب تراکنشها را حذف یا اصلاح کرده یا حتی تراکنشهایی که انجام میدهند را معکوس کرده و باعث ایجاد مشکل دو بار خرج کردن شوند.
حال به سراغ دومین الگوریتم خواهیم رفت که پس از الگوریتم گواه اثبات کار بیشترین استفاده را در عرصه ارزهای دیجیتال دارد. الگوریتم بعدی که به معرفی و بررسی آن خواهیم پرداخت، الگوریتم گواه اثبات سهام است.
الگوریتم گواه اثبات سهام (Proof of Stake)
پس از اینکه شاهد ضعف الگوریتم گواه اثبات کار در برابر حمله ۵۱ درصدی بودیم، اتفاقی که افتاد این بود که یک الگوریتم اجماع جدید به وجود آمد که به آن الگوریتم «گواه اثبات سهام» (Proof of Stake) یا PoS میگویند. بر اساس الگوریتم اثبات سهام، اعتبارسنجهایی که قصد شرکت در فرایند تولید بلوکها را دارند و در ازای این کار خود پاداش دریافت خواهند کرد، باید توکنهای بومی شبکه را خریده و آنها را به خود شبکه اختصاص داده یا به بیانی دیگر آنها را «سهامگذاری» (Staking) کنند.
در حقیقت فرایند سهامگذاری بهوسیله قفلکردن توکنهای کاربر در بلاک چین جهت ایجاد و تأیید بلوکها انجام میگیرد و اعتبارسنجها به نسبت میزان سهامگذاری خود، پاداشی را از شبکه دریافت میکنند. در این الگوریتم کاربران بر اساس مقدار سهمی که در شبکه دارند، این قابلیت را دارند تا تغییراتی در شبکه ایجاد کنند. در حقیقت این توانایی کاربران هیچ وابستگیای به مقدار قدرت محاسباتی سختافزارهای ماینینگ ندارد.
به بیانی دیگر، اگر یک کاربر ۵ درصد از سهام یک شبکه باشد، ۵ درصد قدرت شبکه در اختیار وی قرارگرفته و این قابلیت را دارد تا ۵ درصد از تراکنشهای شبکه را مورد تأیید خود قرار دهد. ازاینرو اگر هکرها قصد طرحریزی و اجرای یک حمله ۵۱ درصدی دیگر را داشته باشند، نیاز است تا حداقل ۵۱ درصد از کوینهای شبکه را بخرند. درواقع با در نظر گرفتن اینکه چنین حجمی از کوینها در شبکههایی مثل بیت کوین، رقمی سرسامآور خواهد بود، پس عملا انجام این حمله در شبکههای مبتنی بر الگوریتم گواه اثبات سهام غیرممکن به نظر میرسد.
از طرفی دیگر با وجود اینکه چنین موضوعی منجر به ایجاد شکلی از انحصارطلبی در شبکه بلاک چین چنین رمز ارزهایی خواهد شد و انحصارطلبی با هدف نخستین ایجاد این شبکهها (که همان تمرکززدایی از قدرت در شبکه است) تضاد دارد، این نکته هماکنون بهعنوان اصلیترین نقطه ضعف شبکههای مبتنی بر مکانیزم گواه اثبات سهام در نظر گرفته میشود. در ادامه به معرفی الگوریتم اجماع بعدی یعنی الگوریتم گواه اثبات مالکیت خواهیم پرداخت.
الگوریتم گواه اثبات مالکیت (Proof of Ownership)
الگوریتم «گواه اثبات مالکیت» (Proof of Ownership) مکانیزمی است که بهوسیله دفتر کل غیرمتمرکز (یا همان بلاک چین) بیت کوین یا دیگر فناوریهای مرتبط با بیت کوین، جهت ردیابی مالکیت اطلاعات بهخصوص در زمانهای خاص از آن استفاده میشود. در حقیقت هنرمندان یا حتی کسبوکارهای مختلف میتوانند از این نوع از الگوریتم اجماع جهت تأیید صحت، تاریخ انتشار و حق مالکیت آثار یا قراردادهای مربوط به آثار یا خدمات خود استفاده کنند. از طرفی در شبکههای بلاک چین مبتنی بر این الگوریتم، تنها کاربرانی که دارای کلید خصوصی مرتبط با امضاها باشند میتوانند مالکیت خود را ثابت کنند.
همچنین مکانیزم اثبات مالکیت همواره به یک داده متصل است. درواقع این بدین معنی است که تأیید مالکیت اطلاعاتی بخصوص در بلاک چین، ثابت خواهد کرد که این اطلاعات در زمانی مشخص وجود داشتهاند و بهاینترتیب همواره رابطهای مستقیم بین این الگوریتم و یک داده حقیقی بخصوص وجود دارد.
علاوه بر این مکانیزم اثبات مالکیت همواره با استفاده از توابع رمزنگاریشده است که به دادهای خاص ارتباط پیدا میکند و این موضوع باعث میشود تا دادهها پس از تأیید اعتبار آنها در شبکه، امکان تغییر را نداشته باشند. ازاینرو اگر دادهای حتی بهاندازه یک bit تغییر کند، تمامی گواهی مالکیت صادرشده نامعتبر میگردد.
تا به اینجا با ۳ مورد از انواع الگوریتمهای اجماع آشنا شدیم و نوبت به مکانیزم بعدی یعنی گواه اثبات مسئولیت میرسد.
الگوریتم گواه اثبات مسئولیت (Proof of Authority)
در شبکههایی که «گواه اثبات مسئولیت» (Proof of Authority) با نام اختصاری PoA استفاده میکنند، تراکنشها و بلوکها بهوسیله حسابهای تأییدشدهای که به نام تأییدکنندگان معتبر شبکه است تأیید میگردند. درواقع در شبکههایی مبتنی بر الگوریتم PoA، این تأییدکنندگان، با اجرای نرمافزارهایی، این قابلیت را بهدست میآورند تا تراکنشها را در داخل بلوکها قرار دهند.
در حقیقت این فرایند بهصورت خودکار انجام گرفته و نیازی به نظارت دائم تأییدکنندگان بر روی رایانهها نخواهد بود. به بیانی دیگر، درست برعکس الگوریتم گواه اثبات سهام که مقداری از رمز ارز شبکه در داخل خود شبکه تحت عنوان تضمین انجام کار گرهها بهعنوان ضمانت نگه داشته میشود، در الگوریتم گواه اثبات مسئولیت، تضمین انجام معاملات بهوسیله نودهای معتبری که بهعنوان گرههای قابلاعتماد انتخاب شدهاند، انجام میگیرد.
در ادامه با ما همراه باشید تا به معرفی و بررسی دیگر الگوریتمهای مورداستفاده در شبکه بلاک چین ارزهای دیجیتال بپردازیم. الگوریتم بعدی که قصد معرفی آن را داریم، الگوریتم گواه اثبات وجود است.
الگوریتم گواه اثبات وجود (Proof of Existence)
بهصورت کلی الگوریتم «گواه اثبات وجود» (Proof of Existence) را میتوان نوعی سرویس آنلاین در نظر گرفت که وجود فایلهای رایانهای را بهوسیله تراکنشهایی که در بلاک چین بیت کوین دارای برچسب زمانی هستند تأیید میکند. این الگوریتم در سال ۲۰۱۳ و تحت عنوان پروژهای متنباز و بهوسیله «مانوئل آراوز» (Manuel Araoz) و «استبان اردانو» (Esteban Ordano) ایجاد شد و تاکنون بهوسیله پروژههایی همچون Poex.io ،HeroNode و DragonChain استفاده شده است.
از جمله کاربردهای این الگوریتم میتوان به توافق امضاهای دیجیتال، بدون افشای محتوای حقیقی این امضاها، اثبات تملک دادهها، بدون افشای محتوای حقیقی آنها، افزودن برچسب زمانی به اسناد موجود در شبکه بلاک چین و بررسی یکپارچه بودن دادههای موجود در شبکه اشاره کرد.
خب! در ادامه به ۲ الگوریتم اجماع دیگر که به ترتیب عبارتاند از الگوریتم گواه اثبات پرداخت و گواه اثبات هویت خواهیم پرداخت.
الگوریتم گواه اثبات پرداخت (Proof of payment)
اساسا الگوریتم «گواه اثبات پرداخت» (Proof of Payment) نوعی سند پرداختی یا مدرک انتقال بانکی است که با بارگذاری آن شبکه این امکان را به کاربر خواهد داد تا پیش از پرداخت وجه، حساب وی دارای اعتبار گردد. در حقیقت چنین اعتباری میتواند جهت پوشش نیازهای جانبی و دیگر اهداف تجاری کاربران شبکه مورداستفاده قرار گیرد.
مثلا زمانهایی پیش میآید که شما قصد این را دارید تا مبلغی را برای فردی دیگر انتقال دهید و سیستم نقل و انتقالات بانکی نمیتواند بهسرعت این کار را برای شما انجام دهد و در اینجا میتوانید بهصورت آنی این کار را بهوسیله مکانیزم گواه اثبات پرداخت انجام دهید. اگرچه باید به این نکته نیز توجه داشته باشید که تا زمان تسویهحساب وجه درخواستی خود با شبکه، امکان برداشت وجه یا انتقال آن به حسابهای بیرون از شبکه وجود ندارد و شما تنها میتوانید از این قابلیت برای نقل و انتقالات درونشبکهای استفاده کنید.
الگوریتم گواه اثبات هویت (Proof of Identity)
الگوریتم «گواه اثبات هویت» (Proof of Identity) یا PoI در حقیقت نوعی مدرک رمزنگاریشده است که تأیید میکند کاربرانی که کلید خصوصی داشته باشند، دارای هویتی معتبر در شبکه هستند و از لحاظ رمزنگاری به تراکنشی بخصوص مربوط میشوند. درواقع این الگوریتم تأیید میکند که هر کاربری که تراکنشی را در شبکه انجام داده باشد، یعنی به کلید خصوصی دسترسی دارد و این بدین معنی است که هویت کاربر مورد تأیید شبکه قرار گرفته است. در شبکههای بلاک چینی که از این الگوریتم استفاده میکنند، هر کاربر میتواند یک مدرک رمزنگاری (PoI) ایجاد کرده و آن را به هر گرهای که مدنظر دارد ارائه کند تا هویت وی مورد تأیید قرار بگیرد.
سخن پایانی
در دنیای امروز که تمامی عرصهها بهسوی دیجیتالی شدن قدم برداشتهاند، یکی از مهمترین فاکتورها استفاده از غیرمتمرکزسازی است. در حقیقت مدیریت شکل زندگی جوامع بدون یک نهاد مرکزی، دارای خصوصیات بسیاری خواهد بود که این امر تنها بهوسیله غیرمتمرکزسازی قابلاجرا خواهد بود. از طرفی با توجه به اینکه طول عمر فناوری بلاک چین آنچنان زیاد نیست، انتظار این است که در آیندهای نزدیک، این فناوری بهعنوان یک جایگزین برای سیستمهای متمرکز در نظر گرفته شود و الگوریتم اجماع مهمترین ابزاری است که شبکه بلاک چین برای رسیدن به این هدف، از آن کمک میگیرد.
در حقیقت تمامی ارزهای دیجیتال بر اساس یک الگوریتم اجماع مخصوص به خود کار میکنند و اساسا این الگوریتمهای اجماع هر شبکه بلاک چین ارز دیجیتال هستند که سازوکار آن ارز دیجیتال را متمایز از دیگری میسازند. نتیجتا اینکه الگوریتمهای اجماع درواقع جهت حفظ ایمنی و اعتماد شبکه ارزهای دیجیتال مورداستفاده قرار میگیرند و جزو فاکتورهای اساسی موجود به حساب میآیند. از طرفی دیگر این مکانیزمها را میتوان ابزاری جهت توافق میان کاربران شبکه در نظر گرفت که صحت تراکنشهای شبکه را تأیید میکنند.
در این مطلب تلاش کردیم تا ضمن توضیح مفهوم الگوریتم اجماع و علت اینکه چرا به این مکانیزم نیاز داریم، به انواع گوناگون الگوریتمهای اجماعی که در ارزهای دیجیتال از آنها استفاده میشود بپردازیم و امیدواریم که این مطلب مورداستفاده شما همراهان عزیز قرار گرفته باشد.
برای دریافت مشاوره تخصصی رایگان از کارشناسان ما، اطلاعات خواسته شده رو تکمیل فرمایید.