وقتی می‌گوییم «بیت‌کوین روی اجماع کار می‌کند»، منظور این نیست که میلیون‌ها کاربر برای هر تراکنش رأی می‌دهند یا یک سرور مرکزی تصمیم می‌گیرد کدام بلاک درست است. در بیت‌کوین، اجماع به این مربوط است که مشارکت‌کنندگان مستقل، با اجرای قواعد سازگار، بتوانند درباره وضعیت معتبر زنجیره به یک نتیجه مشترک برسند.

این موضوع یکی از مفاهیم پایه‌ای بیت‌کوین است، اما معمولاً با چند مفهوم دیگر مخلوط می‌شود: اعتبارسنجی، ماینینگ، Proof of Work و رأی‌گیری. هرکدام نقش متفاوتی دارند.

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

اجماع در بیت‌کوین دقیقاً یعنی چه؟

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

راهنمای توسعه بیت‌کوین توضیح می‌دهد که هر Full Node زنجیره‌ای شامل بلاک‌هایی را نگهداری می‌کند که خودش آن‌ها را اعتبارسنجی کرده است و وقتی چند نود روی مجموعه یکسانی از بلاک‌ها قرار دارند، در وضعیت اجماع هستند. قواعدی که نودها برای حفظ این وضعیت اعمال می‌کنند، Consensus Rules نامیده می‌شوند. citehttps://developer.bitcoin.org/devguide/block_chain.html

بنابراین اجماع یک «رأی نهایی» نیست. نتیجه اجرای مستقل قواعد روی داده‌های شبکه است.

Consensus Rules چه هستند؟

Consensus Rules مجموعه‌ای از قواعد فنی هستند که مشخص می‌کنند یک تراکنش یا بلاک از نظر پروتکل معتبر است یا نه.

برای مثال، نود باید بتواند تشخیص دهد که:

  • یک تراکنش شرایط لازم برای خرج‌کردن خروجی‌های موردنظر را دارد یا نه؛
  • امضاها و اسکریپت‌های لازم معتبر هستند یا نه؛
  • یک خروجی قبلاً خرج نشده است یا خیر؛
  • ساختار بلاک با قواعد مورد انتظار سازگار است یا نه؛
  • مقدار ایجادشده توسط Coinbase از مقدار مجاز بیشتر نیست؛
  • بلاک به زنجیره‌ای معتبر متصل است؛
  • Proof of Work بلاک شرایط لازم را دارد یا نه.

نکته مهم این است که Proof of Work یکی از شروط مرتبط با اعتبار بلاک است، اما تمام مفهوم اعتبارسنجی یا اجماع نیست. یک بلاک می‌تواند Proof of Work معتبر داشته باشد اما به دلیل نقض یک قانون دیگر، توسط نود رد شود.

نودها چگونه «رأی» می‌دهند؟

در واقع، نودها برای هر بلاک رأی‌گیری نمی‌کنند.

فرض کنید دو بلاک مختلف تقریباً هم‌زمان منتشر شوند و هر دو ظاهراً ادامه یک بلاک قبلی باشند. ممکن است بخشی از شبکه ابتدا بلاک A را ببیند و بخشی دیگر بلاک B را دریافت کند.

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

اگر هر دو بلاک معتبر باشند، موضوع دیگری مطرح می‌شود: کدام زنجیره معتبر باید ادامه پیدا کند؟ اینجا Proof of Work و میزان کار تجمعی زنجیره وارد ماجرا می‌شود.

در مدل فعلی بیت‌کوین، نودها در میان زنجیره‌های معتبر، زنجیره‌ای را دنبال می‌کنند که بیشترین کار تجمعی Proof of Work را دارد. این همان بخشی است که در زبان ساده گاهی «طولانی‌ترین زنجیره» نامیده می‌شود، اما عبارت دقیق‌تر most-work chain است؛ زیرا صرفاً تعداد بلاک‌ها معیار اصلی نیست. citehttps://developer.bitcoin.org/devguide/block_chain.html

یک مثال ساده از شکل‌گیری اجماع

فرض کنیم زنجیره فعلی این‌گونه باشد:

A، سپس B و سپس C

حالا دو ماینر تقریباً هم‌زمان دو بلاک متفاوت برای ادامه C پیدا می‌کنند:

A، سپس B، سپس C و در ادامه D1
             ↘
              D2

هر دو شاخه ممکن است در ابتدا توسط بخشی از نودها دیده شوند. نودها برای انتخاب بین آن‌ها رأی‌گیری نمی‌کنند.

اگر بعداً بلاک بعدی روی D1 ساخته شود و زنجیره D1 کار تجمعی بیشتری داشته باشد، نودها در نهایت زنجیره دارای کار بیشتر را دنبال می‌کنند و شاخه دیگر کنار گذاشته می‌شود.

این اتفاق به این معنی نیست که تراکنش‌ها «با رأی اکثریت کاربران» معتبر شده‌اند. اعتبار هر بلاک ابتدا با قواعد بررسی می‌شود و انتخاب میان زنجیره‌های معتبر با سازوکار اجماع و Proof of Work انجام می‌گیرد.

نقش Proof of Work در اجماع چیست؟

Proof of Work در اینجا نقش مهمی دارد، اما نباید آن را با خود اجماع یکی دانست.

نودها با اجرای قواعد مشخص می‌کنند یک بلاک معتبر است یا نه. Proof of Work سپس یک معیار قابل‌اندازه‌گیری برای مقدار محاسباتی می‌دهد که برای ایجاد زنجیره صرف شده است.

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

Proof of Work باعث می‌شود انتخاب زنجیره بر اساس مقدار کاری که پشت آن قرار دارد انجام شود، نه بر اساس تعداد IPها، تعداد حساب‌ها یا تعداد پیام‌های «من این زنجیره را قبول دارم».

در مقاله «Proof of Work دقیقاً چگونه کار می‌کند؟» جزئیات هش، Target، Nonce و Difficulty بررسی شده است. اینجا فقط باید نقش آن در اجماع را به خاطر بسپاریم: PoW هزینه‌ای قابل‌اندازه‌گیری به تولید تاریخچه اضافه می‌کند و به نودها در انتخاب زنجیره معتبرِ دارای بیشترین کار کمک می‌کند.

پس ماینر چه نقشی در اجماع دارد؟

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

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

مثلاً اگر ماینری تراکنشی نامعتبر را وارد بلاک کند یا قواعد مربوط به ایجاد کوین جدید را نقض کند، انجام Proof of Work این تخلف را معتبر نمی‌کند. نودهای دیگر می‌توانند بلاک را رد کنند.

به همین دلیل، قدرت هش با اختیار تغییر قواعد یکی نیست.

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

چرا یک نود نمی‌تواند هر قانونی که خواست اجرا کند؟

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

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

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

به همین دلیل تغییرات Consensus Rules موضوعی بسیار حساس هستند و به هماهنگی گسترده میان مشارکت‌کنندگان و پذیرش نرم‌افزار جدید نیاز دارند. تغییرات پروتکل می‌توانند به‌صورت soft fork یا hard fork طراحی شوند و تفاوت آن‌ها در نحوه تغییر مجموعه بلاک‌ها و تراکنش‌های معتبر اهمیت زیادی دارد. citehttps://bitcoin.org/bip/123/

اجماع با «اکثریت کاربران» یکی نیست

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

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

Bitcoin.org نیز در توضیح سازوکار تغییرات بیت‌کوین تأکید می‌کند که یک فرد یا گروه واحد تصمیم‌گیرنده نیست و تغییرات از طریق پیشنهاد عمومی، بررسی و پذیرش داوطلبانه مشارکت‌کنندگان وارد شبکه می‌شوند. citehttps://bitcoin.org/en/faq

این همان تفاوت مهم میان اجماع فنی و تصور ساده «رأی‌گیری اکثریت» است.

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

اجماع چند مسئله مهم را هم‌زمان به هم متصل می‌کند:

۱. تشخیص اعتبار

نودها باید بدانند چه تراکنش و بلاکی مطابق قواعد است.

۲. حفظ یک تاریخچه مشترک

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

۳. جلوگیری از وابستگی به مرجع مرکزی

هیچ بانک یا سرور مرکزی لازم نیست درباره معتبر بودن هر بلاک تصمیم بگیرد. Full Node می‌تواند قواعد را خودش اجرا کند. citehttps://bitcoin.org/en/posts/how-to-run-a-full-node

۴. محدود کردن قدرت ماینرها

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

اگر نودها موقتاً زنجیره‌های متفاوتی داشته باشند چه؟

این اتفاق می‌تواند در شرایط عادی و بدون وجود یک خطای دائمی رخ دهد.

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

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

بنابراین «همه نودها در هر لحظه دقیقاً یک تصویر یکسان دارند» تعریف مناسبی از اجماع نیست. تعریف دقیق‌تر این است که نودها با اجرای قواعد مشترک، در نهایت درباره زنجیره معتبر به یک وضعیت سازگار می‌رسند.

اجماع، نود و Proof of Work چه تفاوتی دارند؟

می‌توان این سه مفهوم را این‌طور از هم جدا کرد:

مفهوم نقش اصلی
Consensus Rules تعیین می‌کنند چه تراکنش و بلاکی معتبر است
Node قواعد را روی داده‌های دریافتی اجرا و اعتبارسنجی می‌کند
Proof of Work هزینه محاسباتی ایجاد تاریخچه و معیار انتخاب زنجیره را فراهم می‌کند
Miner بلاک پیشنهاد می‌کند و برای آن Proof of Work انجام می‌دهد
Blockchain تاریخچه مرتب‌شده‌ای را که شبکه دنبال می‌کند ثبت می‌کند

هیچ‌کدام از این واژه‌ها جای دیگری را نمی‌گیرد.

آیا اجماع یعنی همه همیشه موافق‌اند؟

خیر.

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

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

این نکته همچنین توضیح می‌دهد چرا اجرای یک Full Node اهمیت دارد: کاربر می‌تواند به جای پذیرش کورکورانه نتیجه یک سرویس، بخش مهمی از قواعد و تاریخچه را خودش بررسی کند.

جمع‌بندی

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

مدل بیت‌کوین بر چند جزء متصل به هم تکیه دارد:

  • Consensus Rules مشخص می‌کنند چه چیزی معتبر است؛
  • نودها این قواعد را مستقل روی تراکنش‌ها و بلاک‌ها اجرا می‌کنند؛
  • ماینرها بلاک پیشنهاد می‌کنند و Proof of Work انجام می‌دهند؛
  • Proof of Work برای تاریخچه زنجیره هزینه محاسباتی ایجاد می‌کند و در انتخاب زنجیره دارای بیشترین کار تجمعی نقش دارد؛
  • و شبکه همتا‌به‌همتا اطلاعات را میان مشارکت‌کنندگان منتقل می‌کند.

در نتیجه، اجماع را بهتر است به‌عنوان فرایندی برای رسیدن به یک وضعیت معتبر و مشترک، از طریق اجرای قواعد مشترک و سازوکار انتخاب زنجیره در نظر بگیریم؛ نه رأی‌گیری، نه صرفاً ماینینگ و نه صرفاً Proof of Work.

منابع و مطالعه بیشتر

مطالعه مرتبط در بلاگ:

بیت‌کویناجماعConsensusنودProof of Workبلاکچین

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