مقدمه
چیزی که امروزه شاهد آن هستیم، ظهور یک مفهوم تازه در امور مالی و سایر صنایع است که با تکیه بر بلاک چین، وارد مرحله جدیدی شده است. ایجاد سیستمهایی که بتوانند بصورت غیر متمرکز یک فرآیند را به درستی به سرانجام برسانند، دستاورد بزرگی است که تکنولوژی زنجیره بلوک برای ما به ارمغان آورده است. مفهوم الگوریتم اجماع، یکی از ملزومات اصلی برای انجام صحیح فرآیندها در Blockchain است که در این مقاله به آن پرداختهایم.
Consensus Algorithms چیست و چه ارتباطی با ارزهای دیجیتال دارد؟ الگوریتم اجماع مکانیزمی است که به کاربران یا ماشینها اجازه میدهد در یک محیط توزیع شده، با یکدیگر و با خود بلاک چین هماهنگ شوند. باید اطمینان حاصل شود که همه عوامل در سیستم میتوانند در مورد یک موضوع خاص به توافق برسند، حتی اگر آن عامل منجر به شکست شود. به عبارت دیگر، سیستم باید خطاپذیر باشد.
ما در این مقاله به بررسی ماهیت الگوریتم اجماع، انواع این الگوریتم و کاربرد آن، همچنین ارتباط آن با ارزهای دیجیتال میپردازیم. پس اگر از فعالان بازار رمز ارزها یا علاقهمند به دنیای تکنولوژی هستید، این مقاله از مجله بید ارز را از دست ندهید.
الگوریتمهای اجماع و ارزهای دیجیتال
در ارزهای دیجیتال، موجودی کاربران در یک پایگاه داده یا همان بلاک چین، ثبت میشود. ضروری است که همه (یا به شکل دقیقتر، هر گره) یک کپی یکسان از این پایگاه داده نگهداری کنند. در غیر این صورت، کاربران با اطلاعات متناقضی مواجه میشوند که کل هدف شبکه ارزهای دیجیتال را تضعیف میکند.
کلید عمومی افراد، با فرآیند رمزنگاری تضمین میکند که کاربران نمیتوانند سکههای یکدیگر را خرج کنند. اما هنوز باید یک منبع موثق وجود داشته باشد که مشارکتکنندگان شبکه به آن تکیه کنند و این منبع تعیین کند که آیا داراییها قبلا خرج شده است یا خیر. در حوزه ارزهای دیجیتال از این مورد با عنوان دوباره خرج کردن (Double Spending) یاد میشود.
ساتوشی ناکاموتو، خالق ارز دیجیتال بیت کوین، سیستم اثبات کار (PoW) را برای هماهنگ کردن شرکتکنندگان پیشنهاد کرد. ما در ادامه به نحوه عملکرد این سیستم و سایر سیستمها خواهیم پرداخت، اما پیش از آن تفاوت سیستم متمرکز و غیر متمرکز و برخی از ویژگیهای مشترک بسیاری از الگوریتمهای اجماع موجود را بررسی میکنیم.
سیستم متمرکز در مقابل سیستم غیر متمرکز
در یک سیستم متمرکز، یک موجودیت واحد بر کل سیستم نظارت داشته و آن را کنترل میکند. در بیشتر موارد، آنها میتوانند هر طور که میخواهند تغییراتی را در سیستم ایجاد کنند. همچنین سیستم حاکمیتی پیچیدهای برای دستیابی به اجماع بین بسیاری از مدیران وجود ندارد.
اما در یک ساختار غیر متمرکز، داستان کاملا متفاوت است. در یک ساختار غیر متمرکز، تصمیمات طبق توافق اکثریت کاربران انجام میگیرد. حال سوال اصلی این است که در یک پایگاه داده، چگونه میتوان در مورد تصمیمات یا ورودیهای جدیدی که به این سیستم اضافه میشوند به توافق رسید؟ اینجاست که الگوریتم اجماع کاربرد پیدا میکند.
غلبه بر این چالش در محیطی که کاربران با یکدیگر غریبه هستند و به یکدیگر اعتماد ندارند، شاید مهمترین پیشرفتی بود که راه را برای بلاک چین هموار کرد.
واقعیت الگوریتم اجماع چیست؟
پیش از هر چیز، ما کاربرانی را در بلاک چین نیاز داریم که به زنجیره، بلاک جدید اضافه کنند که به این افراد اعتباردهنده (Node Validator) میگوییم. سپس درخواست شبکه از اعتباردهندهها این است که در ازای کار در شبکه، سهامی را به عنوان وثیقه در آن قرار دهند تا در صورتی که این افراد کار خود را صادقانه انجام ارائه ندادند، بتوان جلوی وثیقه آنها را گرفت. این ریسک نوعی ارزش در شبکه است که اعتباردهنده را از رفتار غیر صادقانه منصرف میکند. اگر Validatorتقلب کند، سهام خود را از دست خواهد داد. این ارزش به عنوان مثال میتوان قدرت محاسباتی، ارز دیجیتال یا حتی شهرت فرد باشد.
سوال بعدی این است که چرا افراد باید منابع و دارایی خود را در معرض خطر قرار دهند؟ پاسخ ساده است، در ازای این ریسک، پاداش دریافت خواهند کرد. این پاداش معمولا ارز دیجیتالی بومی پروتکل است و از کارمزدهای پرداخت شده توسط سایر کاربران، واحدهای ارز دیجیتال تازه تولید شده یا هر دو تشکیل میشود. برای مثال، ماینرهای بیت کوین در ازای کمک به پیشبرد اهداف شبکه و ایجاد بلاکهای جدید، BTC دریافت میکنند.
آخرین چیزی که ما نیاز داریم شفافیت است. ما باید بتوانیم تشخیص دهیم که کسی در حال فعالیت صادقانه است یا خیر. در حالت ایدهآل، تولید بلوکها برای افراد هزینهبر است، اما اعتبارسنجی این بلاکها برای هر کسی ارزان است. این مسئله تضمین میکند که اعتبارسنجیها توسط کاربران عادی نیز کنترل میشوند.
کاربرد الگوریتم اجماع چیست؟
همان طور که عنوان شد اولین کاربرد الگوریتم اجماع، هماهنگ کردن تمامی کاربران شبکه است. اما در کنار این، موارد دیگری نیز وجود دارد که باید آنها را هم در نظر بگیریم:
- تایید تراکنشهای شبکه و بررسی صلاحیت آنها
- انتخاب گرهها برای کنترل و مدیریت دفتر کل شبکه
- تضمین یک دستسازی اطلاعات شبکه و بخشهای مختلف آن
برای درک بهتر این موارد، به شکل خلاصه فرآیند ایجاد یک بلاک در بلاک چینها را بررسی میکنیم. در یک واحد بلاک، جزئیاتی مانند اطلاعات فرستنده و گیرنده و میزان دارایی جابهجا شده و هش بلاک قبلی و هش بلاک فعلی ذخیره میشود. حال یک کاربر تراکنشی را به شبکه میفرستد تا نُدها، آن را بررسی کنند. اگر این تراکنش با اطلاعات شبکه و تراکنشهای قبلی سازگار باشد، گرهها آن را تایید میکنند. سپس مقدار مشخصی از تراکنشها در کنار یکدیگر، بلاکها را ایجاد میکنند. مکانیزم اجماع تمام این مسیر را تسهیل میکند، به این شکل که سیستمی برای توافق بین گرهها ایجاد ارائه میدهد.
انواع روشهای الگوریتم اجماع در بلاک چین
ایجاد یک توافق بین اکثر افراد، کار چندان سادهای نیست. به همین دلیل روشهای مختلفی برای اجماع به وجود آمده است. در ادامه به این روشها اشاره و دو شیوه مهم را مفصل توضیح دادهایم.
الگوریتم اجماع اثبات کار یا Proof of Work (PoW)
الگوریتم اجماع اثبات کار (PoW)، پدرخوانده الگوریتمهای اجماع بلاک چین است. این نوع از اجماع، اولین بار در بیت کوین پیادهسازی شد، گرچه مفهوم واقعی آن از قبل وجود داشته است. در PoW، اعتباردهندهها (که به آنها استخراجکننده گفته میشود) دادهها را هش میکنند. این دادهها در واقع همان اطلاعاتی هستند که اعتباردهنده میخواهد به شبکه اضافه کند.
هش (Hash)، یک رشته به ظاهر تصادفی از حروف و اعداد است که هنگام اجرای دادهها از طریق یک تابع هش ایجاد میشود. نکته مهم در رابطه با هش این است که اگر دوباره همان دادهها را از طریق آن اجرا کنید، همیشه با همان خروجی مواجه خواهید شد. با این حال، حتی اگر یکی از جزئیات خیلی کوچک را تغییر دهید، هش نهایی شما کاملا متفاوت خواهد بود.
با نگاه کردن به خروجی، احتمالاً نمیتوانید بگویید که چه اطلاعاتی به عملگر وارد شده است. همچنین هش با زمان در ارتباط است. زیرا زمان ثبت هر بلاک (که اطلاعات آن هش شدهاند) مشخص است. بنابراین هشها برای اثبات اینکه شما یک قطعه داده را قبل از زمان مشخصی میدانستید، مفید هستند. میتوانید هش آن را به شخص دیگری بدهید و وقتی بعدها دادههای خود را ارائه کردید، آن شخص میتواند آن هش را از طریق تابع اجرا کند تا مطمئن شود خروجی یکسان است.
در Proof of Work، پروتکل شرایطی را برای موارد معتبرکنندهی یک بلوک، تعیین میکند. به عنوان مثال، ممکن است بگوییم، فقط بلوکی که هش آن با 00 شروع میشود معتبر خواهد بود. از طرف دیگر، تنها راه شما برای بازگرداندن سرمایه اولیه، استخراج است که اگر با موفقیت یک بلوک جدید به بلاک چین اضافه کنید، پاداش قابل توجهی به همراه خواهد داشت.
تأیید اینکه شما واقعاً بلوک مناسب را ایجاد کردهاید، برای شبکه امری بی اهمیت است. حتی اگر تریلیونها ترکیب را برای بدست آوردن هش مناسب امتحان کرده باشید، این ترکیبها فقط باید یک بار دادههای شما را از طریق یک تابع به درستی اجرا کنند. اگر دادههای شما یک هش معتبر تولید کند، پذیرفته میشود و پاداشی دریافت خواهید کرد. در غیر این صورت، شبکه آن را رد میکند و شما زمان و برق را بیهوده تلف کردهاید.
الگوریتم اجماع اثبات سهام یا Proof of Stake (PoS)
الگوریتم اجماع اثبات سهام (PoS) در روزهای اولیهی بیت کوین به عنوان جایگزینی برای اثبات کار پیشنهاد شد. در یک سیستم PoS، هیچ مفهومی از ماینرها، سختافزارهای تخصصی یا مصرف انبوه انرژی وجود ندارد. تنها چیزی که نیاز دارید، یک کامپیوتر معمولی است. در واقع این الگوریتمها کمک شایانی به حظ امنیت و بهبود کارایی شبکه میکنند که در نهایت، منجر به سهولت و گسترش خرید و فروش ارز دیجیتال خواهد شد.
در اثبات سهام، شما یک منبع خارجی (مانند برق یا سختافزار) ارائه نمیکنید، بلکه یک منبع داخلی، یعنی ارز دیجیتالی را ارائه میکنید. قوانین این مدل از اجماع در هر پروتکل متفاوت است، اما به طور کلی یک مقدار حداقل از ارز دیجیتال آن پروتکل وجود دارد که برای واجد شرایط بودن برای سهامداری یا استیک (Stake) باید آن را در کیف پول دیجیتال خود یا داخل خود پروتکل نگهداری کنید.
تا اینجای کار، مسیر کلی کمی مشخص شد. یعنی شما باید وجوه خود را در یک کیف پول دیجیتال قفل کنید (در حین فرآیند سهامداری یا استیکینگ، نمیتوان داراییهای دیجیتال را جابهجا کرد). شما معمولاً در مورد اینکه چه تراکنشهایی در بلوک بعدی انجام میشود، با اعتبارسنجهای دیگر موافقت خواهید کرد. به زبان ساده، شما روی بلاکی که احتمال انتخاب شدن دارد، ریسک میکنید و پروتکل یکی را انتخاب میکند.
حال اگر بلوک شما انتخاب شود، بسته به سهم خود، نسبتی از کارمزد تراکنش را دریافت خواهید کرد. هر چه سرمایههای بیشتری را قفل کرده باشید، درآمد بیشتر به دست خواهید آورد. اما اگر با پیشنهاد معاملات نامعتبر سعی کنید تقلبی انجام دهید، بخشی از سهام (یا تمام سهام) خود را از دست خواهید داد. بنابراین، مکانیزم اثبات سهام، الگوریتمی مشابهی با PoW دارد؛ صادقانه عمل کردن سود بیشتری نسبت به رفتار غیر صادقانه دارد.
در این روش به طور کلی، سکههای تازه ایجاد شده به عنوان بخشی از پاداش اعتبارسنجی در نظر گرفته نمیشود. بنابراین، ارز اصلی بلاک چین باید به روش دیگری صادر و توزیع شود. این مسئله را میتوان از طریق توزیع اولیه سکه (یعنی یک ICO یا IEO) و یا با راهاندازی اولیه پروتکل با سیستم PoW و سپس انتقال به PoS انجام داد.
تا به امروز، سیستم اجماع اثبات سهام خالص فقط در ارزهای دیجیتال کوچکتر به کار گرفته شده است. بنابراین، مشخص نیست که آیا میتواند جایگزین مناسبی برای PoW باشد یا خیر. شاید از نظر تئوری، PoS کاملا درست و مفید به نظر برسد، اما در عمل ممکن است چالشهای زیادی داشته باشد.
هنگامی که PoS در شبکهای با ارزش زیاد راهاندازی شود، این سیستم و شبکه، به میدان تقابل مشوقهای مالی و استراتژیهای گوناگون تبدیل میشود. ما به زودی شاهد آزمایش اجماع اثبات PoS در مقیاس بزرگ خواهیم بود. این اتفاق در ارتقا شبکه اتریوم به اتریوم 2.0 پیاده سازی خواهد شد. در این ارتقا که از آن با عنوان ارتقای بزرگ (The Merge) یاد میشود، قرار است کل شبکه اتریم از الگوریتم اجماع اثبات کار به اثبات سهم تبدیل شود. شاید بتوان بسیاری از شک و شبههای آینده در مورد یک سیستم PoS را بعد از این ارتقا پاسخ داد.
دو الگوریتم اثبات کار و اثبات سهام از جمله مهمترین الگوریتمهای اجماع بلاک چین هستند. سایر این شیوهها عبارتاند از:
الگوریتم تحمل خطای بیزانس (Practical Byzantine Fault Tolerance)
تحمل خطای بیزانس عملی (Practical Byzantine Fault Tolerance) یک الگوریتم اجماع است که توسط باربارا لیسکوف (Barbara Liskov) و میگل کاسترو (Miguel Castro) معرفی شد. تحمل خطای بیزانس برای اجرای کارآمد در سیستم های غیرهمزمان طراحی شده است. هدف PBFT، حل کردن مشکلات در راهکارهای تحمل خطای بیزانس و کاربرد آن در محاسبات توزیع شده و بلاک چین است.
اجماع اثبات سهام وکالتی (Delegated Proof of Stake)
عملکرد اثبات سهام وکالتی از طریق یک رای گیری پیش میرود. به این صورت که طی آن، نمایندگانی انتخاب میشوند و کاربران از طریق توکنهایی که در دست دارند، به نمایندگان شبکه رای میدهند. این نمایندگان که از سوی کاربران انتخاب شدهاند، وظیفه ایجاد و تایید بلاکها و برقراری امنیت در شبکه را دارند.
الگوریتم اجماع سوزاندن (Proof of Burn)
در الگوریتم اثبات سوزاندن، ارزهای دیجیتال به عنوان راه حلی برای سرمایه گذاری منابع در بلاک چینها استفاده و سوزانده میشود تا ماینرهای جدید نیازی به سرمایهگذاری منابع فیزیکی نداشته باشند.
اجماع اثبات اعتبار (Proof of Authority)
Proof of Authority یا PoA مکانیزم اجماع مبتنی بر اعتبار است و یک راه حل عملی و کاربردی برای شبکههای بلاک چین است. در سال 2017 گاوین وود، که یکی از بنیانگذاران و رئیس سابق فناوری اتریوم است، استفاده از این شیوه را پیشنهاد داد.
اجماع اثبات وزن (Proof of Weight)
اثبات وزن (PoW) یک مکانیسم اجماع بلاک چین است که به کاربران بر اساس مقدار ارز دیجیتالی که دارند، اعتبار یا به اصطلاح «وزن» میدهد.
اجماع اثبات شهرت (Proof of Reputation)
اثبات شهرت (PoR) یک مکانیسم اجماع بلاک چین است که برای حفظ امنیت شبکه، به شهرت شرکت کنندگان اتکا دارد.
الگوریتم اجماع فضا-زمان (Proof of Spacetime)
اثبات فضا-زمان (PoS) اثباتی است که نشان می دهد اثباتکننده مقداری از زمان را صرف حفظ فضای رزرو شده بدون تغییر کرده است. توسعهدهندگان آن بیان میکنند که هزینه ذخیرهسازی نه تنها با ظرفیت آن، بلکه با زمان استفاده از آن ظرفیت مرتبط است.
اجماع اثبات فعالیت (Proof of Activity)
این الگوریتم اجماع، برای افزایش امینیت و بهره وری شبکه، دو مکانیزم اثبات سهام و اثبات کار را ترکیب میکند.
اثبات زمان سپری شده (Proof of Elapsed Time)
لگوریتم PoET در ابتدا توسط مهندسین کمپانی اینتل برای پلتفرم هایپرلجر (Hyper Ledger) توسعه داده شد. در این الگوریتم، شیوه اثبات کار (PoW) با زمان انتظاری که به طور تصادفی توسط یک محیط اجرای قابل اعتماد (TEE) ایجاد میگردد، جایگزین میشود.
اجماع اثبات تاریخچه (Proof of History)
Proof of History یا PoH شیوه جدیدی است که برای اطمینان از دقیق بودن دادههای تاریخی و افزایش امنیت با اطمینان از عدم دستکاری استفاده میشود. این روش الگوریتم اجماع، با استفاده از یک تابع هش برای ایجاد یک ماهیت منحصر به فرد (مانند اثر انگشت) از مجموعهای از دادهها (به عنوان مثال: تراکنش های گذشته) به دست میآید.
اثبات قابلیت همکاری (Proof of Interoperability)
اثبات قابلیت همکاری یا PoI شیوهای مبتنی بر انطباق با پروتکل FHIR است، به این معنی که ماینرها باید پیامهای ارسال شده به بلاک چین خود را تأیید کنند تا مطمئن شوند که با استانداردهای ساختاری و معنایی شناخته شده سازگار هستند.
سایر الگوریتمهای اجماع که در حال استفاده و توسعه هستند را میتوان در موارد زیر خلاصه کرد:
اجماع اثبات اهمیت (Proof of Importance)
اجماع اثبات سهام اجاره شده (Leased Proof of Stake)
اجماع اثبات ظرفیت (Proof of Capacity)
اجماع اثبات کار با تاخیر (Delayed Proof of Work)
جمعبندی
مکانیسمهای دستیابی به اجماع، برای عملکرد سیستمهای توزیع شده حیاتی هستند. بسیاری بر این باورند که بزرگترین نوآوری در بیت کوین استفاده از Proof of Work برای قادر ساختن کاربران به توافق بر سر مجموعهای از حقایق مشترک بوده است.
امروزه الگوریتمهای اجماع نه تنها زیربنای سیستمهای پول دیجیتال، بلکه Blockchain هستند که به توسعهدهندگان اجازه میدهند کدهای خود را در یک شبکه توزیع شده اجرا کنند. آنها اکنون سنگ بنای فناوری بلاک چین هستند و برای دوام طولانی مدت شبکههای مختلف، موجود حیاتی و با اهمیت به حساب میآیند.
در بین همه الگوریتمهای اجماع، اثبات کار (PoW) پیشنهاد غالب باقی میماند که هنوز جایگزینی قابل اعتمادتر و مطمئنتر برای آن ارائه نشده است. با این حال، تحقیقات و توسعه عظیمی برای انتخاب جایگزین PoW وجود دارد و احتمالا در سالهای آینده شاهد ظهور تعداد بیشتری از آنها خواهیم بود.