الگوریتم اجماع (Consensus Algorithm) قانونی است که به هزاران کامپیوتر یک بلاکچین اجازه می‌دهد بدون هیچ مدیر یا داوری، سر یک نسخه از تاریخچه‌ی تراکنش‌ها به توافق برسند. این قانون دو سؤال را جواب می‌دهد: چه کسی حق دارد بلاک بعدی را پیشنهاد بدهد، و شبکه از چه لحظه‌ای آن بلاک را قطعی حساب می‌کند. اثبات کار و اثبات سهام، که اسمشان را زیاد شنیده‌اید، فقط به سؤال اول جواب می‌دهند. سؤال دوم را قاعده‌های دیگری جواب می‌دهند؛ مثلاً در بیت‌کوین «زنجیره‌ای که بیشترین کار پشتش است برنده است» و در شبکه‌های خانواده‌ی BFT «بلاکی قطعی است که بیش از دوسوم اعتبارسنج‌ها تأییدش کرده باشند».

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

خانواده‌های اجماع در یک نگاه

خانواده

ایده‌ی اصلی

نمونه‌ها

نقطه‌ضعف اصلی

اثبات کار (PoW)

حق ساختن بلاک با خرج برق و دستگاه به دست می‌آید

بیت‌کوین، لایت‌کوین، دوج‌کوین

مصرف برق زیاد؛ تراکنش هیچ‌وقت صددرصد قطعی نمی‌شود

اثبات سهام (PoS)

حق ساختن بلاک به اندازه‌ی سکه‌ی وثیقه‌شده است

اتریوم، کاردانو، آوالانچ

قدرت پیش دارندگان و سرویس‌های بزرگ استیکینگ جمع می‌شود

اثبات سهام نمایندگی‌شده و شاخه‌هایش

دارندگان سکه چند نماینده انتخاب می‌کنند و فقط نماینده‌ها بلاک می‌سازند

ترون، BNB Smart Chain

قدرت دست چند ده نماینده است

رأی‌گیری BFT

بلاک با رأی بیش از دوسوم اعتبارسنج‌ها قطعی می‌شود

شبکه‌های کازموس، سوی، TON

اگر بیش از یک‌سوم اعتبارسنج‌ها از کار بیفتند، شبکه می‌ایستد

اثبات اعتبار (PoA)

فقط امضاکننده‌های شناخته‌شده و مجاز بلاک می‌سازند

شبکه‌های خصوصی و آزمایشی

کاملاً متمرکز؛ آدم عادی نمی‌تواند وارد شود

این خانواده‌ها از هم جدا نیستند و خیلی از شبکه‌ها چند تا را با هم ترکیب می‌کنند؛ مثلاً اثبات سهام را برای انتخاب اعتبارسنج‌ها و رأی‌گیری BFT را برای قطعی کردن بلاک‌ها.

اجماع چه مشکلی را حل می‌کند؟

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

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

مسئله‌ی ژنرال‌های بیزانس

سال ۱۳۶۱، لزلی لمپورت (Leslie Lamport) و دو همکارش این مشکل را در قالب یک داستان مطرح کردند. چند ژنرال دور یک شهر اردو زده‌اند و فقط با پیک با هم حرف می‌زنند. یا باید همه با هم حمله کنند یا همه با هم عقب بکشند، ولی بعضی از ژنرال‌ها خائن‌اند و به هر کس پیام متفاوتی می‌فرستند. مقاله‌ی آن‌ها نشان داد که وقتی پیام‌ها امضا ندارند، با یک خائن دست‌کم چهار ژنرال لازم است، با دو خائن دست‌کم هفت ژنرال، و در حالت کلی تعداد ژنرال‌ها باید بیش از سه برابر خائن‌ها باشد. به زبان ساده، تا وقتی خائن‌ها کمتر از یک‌سوم باشند، وفادارها می‌توانند به یک تصمیم برسند. همین «یک‌سوم» را در خیلی از الگوریتم‌های اجماع امروزی دوباره می‌بینید. لمپورت بعدها نوشت که اسم اول مقاله «ژنرال‌های آلبانیایی» بود و آن را عوض کردند تا به کسی برنخورد.

مشکل هویت‌های جعلی

ساده‌ترین راه این است که نودها رأی بدهند و نظر اکثریت اجرا شود. ولی در شبکه‌ای که هر کسی بدون اجازه می‌تواند به آن وصل شود، یک نفر می‌تواند هزاران نود جعلی راه بیندازد و اکثریت را از آن خودش کند. به این حمله «حمله‌ی سیبیل» (Sybil Attack) می‌گویند. ساتوشی در وایت‌پیپر صریحاً نوشته است که اگر رأی‌گیری بر اساس «هر آدرس IP یک رأی» باشد، هر کسی که بتواند تعداد زیادی IP جور کند، نتیجه را در دست می‌گیرد. نتیجه این است که رأی دادن باید خرجی داشته باشد که نشود مجانی تکثیرش کرد.

هر الگوریتم اجماع دو کار انجام می‌دهد

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

پس هر الگوریتم اجماع را می‌شود در دو لایه دید:

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

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

پولکادات حتی لایه‌ی دوم را دو تکه کرده است. سازوکاری به اسم BABE مدام بلاک می‌سازد و سازوکار دیگری به اسم GRANDPA جداگانه و به موازات آن، بلاک‌ها را نهایی می‌کند. پایین‌تر می‌بینید چرا این کار را کرده‌اند.

خانواده‌های اصلی اجماع

اثبات کار (PoW)

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

اثبات سهام (PoS) و شاخه‌هایش

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

  • اثبات سهام نمایندگی‌شده (DPoS): دارندگان سکه به چند نماینده رأی می‌دهند و فقط همان نماینده‌ها بلاک می‌سازند. در ترون ۲۷ نماینده به نوبت بلاک می‌سازند.
  • اثبات سهام نامزدشده (NPoS): در پولکادات دارندگان DOT پشت اعتبارسنج‌هایی که به آن‌ها اعتماد دارند سکه می‌گذارند و شبکه از میان نامزدها، گروه اعتبارسنج‌ها را انتخاب می‌کند. مهر ۱۴۰۵ تعداد اعتبارسنج‌های فعال پولکادات ۶۰۰ بود.
  • اثبات سهام و اعتبار (PoSA): در BNB Smart Chain هر روز ۴۵ اعتبارسنج بر اساس سهام انتخاب می‌شوند و ۲۱ نفرشان که بیشترین سهام را دارند، بیشتر بلاک‌ها را می‌سازند. اثرش روی کارمزد را در چرا کارمزد BSC کم است توضیح داده‌ایم.

رأی‌گیری BFT

BFT کوتاه‌شده‌ی Byzantine Fault Tolerance است، یعنی «تحمل خطای بیزانسی»؛ به این معنی که شبکه حتی وقتی بعضی اعضا خراب‌اند یا عمداً دروغ می‌گویند، بتواند به توافق برسد. این روش‌ها مستقیم از همان مسئله‌ی ژنرال‌ها آمده‌اند. یک اعتبارسنج بلاکی پیشنهاد می‌دهد، بقیه در یک یا چند دور به آن رأی می‌دهند و وقتی رأی بیش از دوسوم جمع شد، بلاک قطعی می‌شود.

مستندات کازموس درباره‌ی CometBFT، موتوری که شبکه‌های ساخته‌شده با Cosmos SDK از آن استفاده می‌کنند، می‌گوید این موتور تا وقتی کمتر از یک‌سوم قدرت رأی خراب باشد، بلاک درست می‌سازد و تا وقتی بیش از دوسوم اعتبارسنج‌ها آنلاین باشند، از کار نمی‌افتد. بلاکی هم که ثبت شد، دیگر برنمی‌گردد.

خیلی از شبکه‌های سریع امروزی نسخه‌ای از همین ایده را به کار می‌برند و هر کدام ترفندی برای سریع‌تر شدنش دارند. در سوی، اجماعی به اسم Mysticeti اجازه می‌دهد چند اعتبارسنج همزمان بلاک پیشنهاد بدهند و برای ثبت، رأی بیش از دوسوم قدرت رأی لازم است. هایپرلیکویید با HyperBFT کار می‌کند که از پروتکلی به اسم HotStuff الهام گرفته است. اعتبارسنج‌های TON هم با پروتکلی به اسم Catchain به توافق می‌رسند.

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

نمونه‌گیری تکراری: اجماع آوالانچ

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

اثبات اعتبار (PoA)

در اثبات اعتبار، فقط چند امضاکننده‌ی مجاز حق ساختن بلاک دارند و هویتشان برای همه روشن است؛ مثلاً شرکت‌های شناخته‌شده یا افرادی که احراز هویت شده‌اند. ethereum.org می‌گوید این روش بیشتر در شبکه‌های خصوصی، شبکه‌های آزمایشی (Testnet) و محیط‌های توسعه به کار می‌رود. چون امضاکننده‌ها کم‌اند، تأیید تراکنش می‌تواند کمتر از یک ثانیه طول بکشد. در عوض، شبکه متمرکز است و آدم عادی نمی‌تواند امضاکننده شود. اگر امضاکننده‌ها با هم دست به یکی کنند، می‌توانند تراکنش‌ها را سانسور کنند یا برگردانند. پولکادات هم در روزهای اول کارش، بهار ۱۳۹۹، مدتی با همین روش و زیر نظر بنیاد وب۳ کار کرد و بعد سراغ اثبات سهام نامزدشده رفت.

اثبات تاریخ (PoH): یک ساعت، نه یک اجماع

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

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

تراکنش کی واقعاً قطعی می‌شود؟

«نهایی شدن» (Finality) لحظه‌ای است که دیگر نمی‌شود تراکنش را برگرداند. برای شما که رمزارز می‌فرستید یا واریز می‌کنید، این مهم‌ترین اثر الگوریتم اجماع است و سه شکل دارد.

نهایی شدن احتمالی

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

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

نهایی شدن قطعی

در شبکه‌هایی که با رأی‌گیری قطعی می‌کنند، بلاک از لحظه‌ای که رأی کافی را بگیرد قطعی است و دیگر برنمی‌گردد؛ در رأی‌گیری BFT یعنی رأی بیش از دوسوم اعتبارسنج‌ها. در TON و آوالانچ این لحظه معمولاً کمتر از یک ثانیه بعد از ثبت تراکنش می‌رسد. در ترون باید دست‌کم ۱۹ نماینده از ۲۷ نماینده بلاک را تأیید کنند و این کار حدود یک دقیقه طول می‌کشد. اتریوم کندتر است: بلاک بعد از حدود ۱۵ دقیقه نهایی می‌شود و از آن به بعد، کسی که بخواهد برش گرداند باید از دست دادن دست‌کم یک‌سوم کل اتر سپرده‌شده را بپذیرد.

ترکیبی از هر دو

پولکادات هر دو را با هم دارد. ویکی پولکادات می‌گوید این ترکیب برای این است که شبکه از مزیت هر دو روش استفاده کند: با BABE همیشه می‌تواند بلاک تازه بسازد و با GRANDPA به نقطه‌ای می‌رسد که دیگر هیچ راه برگشتی ندارد. BABE هم همیشه روی آخرین بلاکی ادامه می‌دهد که GRANDPA نهایی کرده است.

وقتی شبکه به مشکل بخورد: توقف یا دوشاخه شدن؟

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

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

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

  • سولانا، ۱۷ بهمن ۱۴۰۲: طبق گزارش رسمی سولانا، نهایی شدن بلاک‌ها متوقف شد و حدود پنج ساعت طول کشید تا اپراتورهای اعتبارسنج نسخه‌ی اصلاح‌شده را نصب کنند و شبکه را با هماهنگی دوباره راه بیندازند.
  • آوالانچ، ۴ اسفند ۱۴۰۲: طبق گزارش وضعیت شبکه، باگی در نرم‌افزار نودها باعث شد شبکه‌ی اصلی چند ساعت هیچ بلاکی را نهایی نکند تا وقتی که بخش بزرگی از اعتبارسنج‌ها نسخه‌ی اصلاحی را نصب کردند.
  • سوی، ۲۴ دی ۱۴۰۴: به گزارش CoinDesk و به استناد گزارش بنیاد سوی، اعتبارسنج‌ها از داده‌ی یکسان به نتیجه‌های متفاوت رسیدند و نتوانستند سر تراکنش‌های تازه توافق کنند. شبکه حدود شش ساعت کار نکرد. در توقف‌های خرداد ۱۴۰۵ هم، طبق گزارش بنیاد سوی، هیچ تراکنش تأییدشده‌ای برنگشت.

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

اجماع شبکه‌های معروف کنار هم

این دو جدول را از مستندات خود شبکه‌ها در مهر ۱۴۰۵ جمع کرده‌ایم. جدول اول نشان می‌دهد هر شبکه دو لایه‌ی اجماعش را چطور پر کرده است:

شبکه

حق ساختن بلاک با کیست؟

توافق چطور حاصل می‌شود؟

نهایی شدن

بیت‌کوین

هر کسی با دستگاه ماینینگ (اثبات کار)

زنجیره‌ای که بیشترین کار پشتش است

احتمالی

اتریوم

اعتبارسنج‌هایی که اتر سپرده‌اند (اثبات سهام)

Gasper: وزن رأی‌ها، و چک‌پوینت با تأیید دوسوم سهام

قطعی، حدود ۱۵ دقیقه

کاردانو

استخرهای استیک به نسبت سهامشان (Ouroboros Praos)

قاعده‌ی انتخاب زنجیره‌ی Ouroboros

بر اساس عمق بلاک؛ در عمل احتمالی

پولکادات

۶۰۰ اعتبارسنج منتخب (NPoS)

BABE بلاک می‌سازد، GRANDPA نهایی می‌کند

ترکیبی

سولانا

اعتبارسنج‌ها به نسبت سهام، با ساعت اثبات تاریخ

رأی‌گیری Tower BFT

قطعی، حدود ۱۲٫۸ ثانیه

آوالانچ

اعتبارسنج‌ها با دست‌کم ۲٬۰۰۰ AVAX سهام

نمونه‌گیری تصادفی تکراری (Snowman)

قطعی، کمتر از یک ثانیه

BNB Smart Chain

۴۵ اعتبارسنج منتخب روزانه، ۲۱ نفر اصلی (PoSA)

ساخت نوبتی بلاک بین اعتبارسنج‌های منتخب

قطعی، حدود یک ثانیه

ترون

۲۷ نماینده‌ی منتخب (DPoS)

ساخت نوبتی بلاک، تأیید دست‌کم ۱۹ نماینده

قطعی، حدود یک دقیقه

TON

اعتبارسنج‌ها با وثیقه‌ی بزرگ

رأی‌گیری اعتبارسنج‌ها با Catchain

قطعی، معمولاً کمتر از یک ثانیه

سوی

اعتبارسنج‌ها به نسبت سهام (DPoS)

Mysticeti با رأی بیش از دوسوم

قطعی

XRP Ledger

اعتبارسنج‌های فهرست مورد اعتماد (UNL)، بدون وثیقه

نزدیک کردن پیشنهادها در چند دور

قطعی، چند ثانیه

شبکه‌های CometBFT (کازموس)

اعتبارسنج‌ها به نسبت سهام

رأی‌گیری با بیش از دوسوم قدرت رأی

قطعی و فوری

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

شبکه

تا کجا عادی کار می‌کند؟

کی متوقف می‌شود؟

کی تاریخچه در خطر است؟

بیت‌کوین

تا وقتی اکثر قدرت پردازش دست ماینرهای درستکار است

با رفتن ماینرها متوقف نمی‌شود، فقط کند می‌شود

وقتی مهاجم بیش از نصف قدرت پردازش را داشته باشد

اتریوم

تا وقتی کمتر از یک‌سوم سهام دست مهاجم است

با یک‌سوم سهام، نهایی شدن متوقف می‌شود ولی بلاک‌ها ساخته می‌شوند

با دوسوم سهام، مهاجم زنجیره‌ی دلخواهش را نهایی می‌کند

شبکه‌های CometBFT

تا وقتی کمتر از یک‌سوم قدرت رأی خراب است

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

از یک‌سوم به بالا، دیگر تضمینی نیست

XRP Ledger

تا وقتی کمتر از ۲۰ درصد اعتبارسنج‌های مورد اعتماد خراب‌اند

وقتی بین ۲۰ تا ۸۰ درصدشان خراب باشند؛ شبکه می‌ایستد ولی تراکنش اشتباه ثبت نمی‌کند

وقتی بیش از ۸۰ درصدشان تبانی کنند

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

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

کدام الگوریتم اجماع بهتر است؟

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

  • امنیت: حمله چقدر خرج دارد و اگر حمله شد، شبکه چطور خراب می‌شود؛ می‌ایستد یا دوشاخه می‌شود؟
  • پخش بودن قدرت: چند نفر بلاک می‌سازند و ورود به این جمع چقدر سخت است. در بیت‌کوین هر کسی که دستگاه ماینینگ داشته باشد می‌تواند وارد شود و در اتریوم هر کسی که اتر داشته باشد؛ ولی در ترون فقط ۲۷ نماینده بلاک می‌سازند و در اثبات اعتبار فقط چند امضاکننده‌ی معین.
  • سرعت: هرچه اعتبارسنج‌ها کمتر باشند، توافق سریع‌تر است. BNB Smart Chain و ترون بخشی از سرعتشان را از همین جمع کوچک گرفته‌اند و در عوض قدرت در دست افراد کمتری است.
  • انرژی: اثبات کار برق زیادی مصرف می‌کند و بقیه‌ی خانواده‌ها تقریباً نه. ethereum.org به نقل از برآورد مؤسسه‌ی CCRI می‌گوید رفتن اتریوم از اثبات کار به اثبات سهام، مصرف برق سالانه‌اش را بیش از ۹۹٫۹۸۸ درصد کم کرد.

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

این‌ها در عمل برای شما چه معنایی دارد؟

  • زمان واریز به صرافی. اینکه واریز بیت‌کوین ممکن است حدود یک ساعت طول بکشد و واریز روی ترون حدود یک دقیقه، از همین فرق نهایی شدن می‌آید. صبر صرافی برای چند تأیید خرابی نیست؛ دارد مطمئن می‌شود تراکنش برنمی‌گردد.
  • وقتی یک شبکه متوقف می‌شود. در توقف شبکه‌های BFT، تراکنش‌های قبلاً نهایی‌شده سر جایشان می‌مانند و فقط تراکنش‌های تازه منتظر می‌مانند. ممکن است صرافی‌ها هم واریز و برداشت روی آن شبکه را تا برگشتن اوضاع ببندند.
  • انتقال داخلی. اگر رمزارز را بین دو حساب سواپ‌ولت جابه‌جا کنید، تراکنشی روی بلاکچین ثبت نمی‌شود و منتظر اجماع هیچ شبکه‌ای نمی‌ماند. طبق راهنمای سواپ‌ولت، انتقال به مخاطبان سواپ‌ولت آنی است. ولی برداشت به یک آدرس بیرونی روی بلاکچین می‌رود و تابع قواعد همان شبکه است.
  • بررسی یک پروژه‌ی تازه. وقتی پروژه‌ای اجماعش را «انقلابی» معرفی می‌کند، دنبال دو عدد بگردید: چه سهمی از شبکه می‌تواند متوقفش کند و چه سهمی می‌تواند تاریخچه را عوض کند. بعد ببینید آن سهم الان دست چند اعتبارسنج است و آیا شبکه تا حالا متوقف شده است یا نه. جواب این سؤال‌ها معمولاً در مستندات فنی خود پروژه هست.

پرسش‌های رایج

الگوریتم اجماع با ماینینگ یکی است؟

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

اثبات تاریخ سولانا الگوریتم اجماع است؟

نه. اثبات تاریخ ساعتی است که ترتیب رویدادها را مشخص می‌کند. تصمیم درباره‌ی پذیرفتن بلاک‌ها را اعتبارسنج‌های سولانا با رأی‌گیری بر اساس سهام می‌گیرند.

یک بلاکچین می‌تواند الگوریتم اجماعش را عوض کند؟

بله، اگر بیشتر نودها و اعتبارسنج‌ها نرم‌افزار تازه را بپذیرند. اتریوم ۲۴ شهریور ۱۴۰۱ از اثبات کار به اثبات سهام رفت و پولکادات چند هفته بعد از راه‌اندازی، اثبات اعتبار را کنار گذاشت و به اثبات سهام نامزدشده رسید. اگر بخشی از شبکه تغییر را قبول نکند، ممکن است زنجیره دو تکه شود.

اگر اعتبارسنج‌ها سر یک بلاک اختلاف داشته باشند چه می‌شود؟

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

چرا بعضی شبکه‌ها فقط چند ده اعتبارسنج دارند؟

چون توافق بین چند ده نفر خیلی سریع‌تر از توافق بین هزاران نفر است. همین به شبکه‌ای مثل BNB Smart Chain کمک می‌کند بلاک را در حدود یک ثانیه نهایی کند. بهایش این است که قدرت در دست عده‌ی کمتری جمع می‌شود.

حمله‌ی ۵۱ درصد فقط در اثبات کار ممکن است؟

نه، ولی عدد خطرناک در هر خانواده فرق می‌کند. در اثبات کار مهاجم به بیش از نصف قدرت پردازش نیاز دارد. در اتریوم یک‌سوم سهام برای متوقف کردن نهایی شدن کافی است و دوسوم برای نهایی کردن زنجیره‌ی دلخواه. در XRP Ledger برای ثبت تراکنش جعلی، تبانی بیش از ۸۰ درصد اعتبارسنج‌های مورد اعتماد لازم است.