آشنایی با پروتکل های اجماع بلاک چین
اجماع چیست؟
اجماع (Consensus) در لغت به معنای توافق کلی (general agreement) می باشد. وقتی یک گروه قصد انجام فعالیت مشترکی را داشته باشند. اگر هیچ اختلاف نظری در مورد کاری که باید انجام شود، وجود نداشته باشد به معنای این است که بین اعضای گروه، اجماع حاصل شده است. چنانچه بین اعضای گروه اختلاف نظر وجود داشته باشد، باید ابزاری در اختیار داشته باشند تا در مورد کاری که قرار است انجام شود، تصمیم بگیرند. در غیراینصورت، گروه در نهایت از هم جدا خواهد شد.
موضوع توافق، در بلاک چین نیز وجود دارد. برای مثال در بلاک چین اتریوم، این فرآیند رسمی شده است و رسیدن به توافق در اتریوم، به این معنی است که حداقل 66 درصد از گره های شبکه بلاک چین در مورد وضعیت کلی شبکه (global state) توافق دارند.
اجماع مکانیزمی برای تأیید صحت (Verification) و ثبت تراکنش در بلاک چین می باشد. تراکنش ها در قالب بلاک (Block) به بلاکچین اضافه می شوند. قبل از اینکه یک بلاک به زنجیره اضافه شود، ابتدا باید یک تصمیم گیری مشترک میان اکثریت نودهای شبکه انجام شده و صحت و اعتبار بلاک تایید شود. بلاک های ساخته شده بعد از بلاک آغازین (Genesis Block)، ابتدا باید از طریق مکانیسم اجماع، مرحله اعتبارسنجی (Validation) را گذرانده و سپس در زنجیره بلوک اضافه شوند.
هر کاربر، زمان پیوستن به یک بلاک چین، ابتدا باید در مورد حالت اولیه (Initial State) بلاک چین، با بقیه نودهای شبکه به توافق برسد تا تبدیل به یک گره فعال (Active Node) شود. یک نود فعال، فقط در اعتبارسنجی بلاک هایی می تواند شرکت کند، که پس از ورود آن گره، ساخته شده باشند. حالت اولیه (Initial State) و موضوع اعتبارسنجی بلوک های بعدی، توافق روی وضعیت فعلی (Current State) بلاک چین، را برای کاربر امکانپذیر می کند.
مکانیزم اجماع چیست؟
معمولا از اصطلاح مکانیسم اجماع (consensus mechanism) برای الگوریتم های اثبات کار (PoW)، اثبات سهام (PoS) یا اثبات صلاحیت (PoA) استفاده می شود. این تعریف، از لحاظ تخصصی صحیح نیست. چراکه، این الگوریتم ها فقط بخشی از مکانیزم اجماع هستند که از وقوع حملات سیبل (Sybil Attacks) جلوگیری می کنند. مکانیزم های اجماع، در واقع پشته (stack) کاملی از ایدهها (ideas)، پروتکلها (protocols) و مشوقها (incentives) هستند که به گرههای شبکه اجازه می دهد تا بتوانند در مورد state بلاکچین به توافق برسند.
مثال: مکانیزم اجماع اتریوم
اتریوم از مکانیزم اجماع مبتنی بر اثبات سهام (proof-of-stake) استفاده می کند. مکانیسم اجماع اتریوم از مولفه های زیر تشکیل شده است.
یک ساختار انگیزشی که از طریق یک سری جایزه و جریمه اعمال شده روی سرمایه سهامداران (stakers)، امنیت اقتصاد رمزارزی (crypto economic) اتریوم را تضمین می کند. این ساختار انگیزشی، سهامداران را تشویق میکند تا اعتبارسنجی صادقانه ای داشته باشند و کسانی که رفتار صادقانه ای ندارند را تنبیه (punish) کرده و هزینه حمله به شبکه را تا حد امکان بالا ببرند.
پروتکل دیگری نیز وجود دارد که نحوه انتخاب Validator های صادق برای پیشنهاد یا اعتبارسنجی بلاک ها، پردازش تراکنش ها و رای دادن به دیدگاه آن ها در مورد head زنجیره را کنترل می کند. در موقعیتهای خاصی که چندین بلاک در یک موقعیت نزدیک head زنجیره قرار گرفته باشند، مکانیزم انتخاب چنگال (fork-choice) استفاده می شود. این مکانیزم بلوکهایی را انتخاب میکند که سنگینترین زنجیره (heaviest chain) را تشکیل داده باشند که معیار سنگینی زنجیره عبارت است از تعداد validator هایی که به بلاکهای وزنگذاری شده با میزان اتر استیک شده آنها، رأی دادهاند. برخی از مفاهیم اجماع نیز اصولاً نباید به صراحت در کد تعریف شوند.
الگوریتم های اجماع
- Proof of Work (POW)
- Proof of Stake (POS)
- Proof of Activity (POA)
- Proof of Elapsed Time (PoET)
- Proof of Capacity (PoC)
- Round Robin Consensus
هر کدام از مکانیزم های اجماع ذکر شده، ویژگی هایی دارند که در ادامه به معرفی آنها خواهیم پرداخت.
اثبات کار – Proof of Work (POW)
در الگوریتم اجماع PoW، ماینرها باید یک پازل رمزنگاری را حل کنند. حل (solve) این معما دشوار ولی بررسی صحت (verify) آن آسان است. اولین فردی که مسئله را حل می کند (ماینر)، راه حل آن را در شبکه پخش (broadcast) می کند و سایر گره ها آن را بررسی (verify) می کنند و اگر راه حل ارائه شده صحیح بود، ماینر پاداش خود را دریافت می کند.
برای اینکه بلوک معتبر (Valid) باشد، هش محاسبه شده باید با تعداد مشخصی صفر شروع شده باشد. تعداد این صفرها بستگی به دشواری یا سختی شبکه (Difficulty) دارد.
قدرت محاسباتی شبکه، خروجی را تغییر می دهد. شبکههای بیتکوین، سختی را تنظیم میکنند و این به کاهش سرعت ایجاد بلاکهای جدید کمک میکند. در بیت کوین، 10 دقیقه طول می کشد تا Proof of Work محاسبه شود و یک بلوک جدید به زنجیره اضافه شود. برای تولید مقدار هش با مقدار صفر مورد نظر، در ابتدا، ماینرها یک (Nonce (Number Only Used Once را به شماره بلوک اضافه می کنند. این اولین عدد مورد نیاز برای حل یک بلوک است.
این عددی است که ماینرها به دنبال آن هستند تا بلاک را حل کنند. احتمال انتخاب ماینر برای به روز رسانی بلوک بعدی توسط قدرت محاسباتی که یک ماینر کنترل می کند تعیین می شود. به عنوان مثال، اگر یک ماینر 20٪ از توان شبکه را کنترل کند، احتمال برنده شدن او 20٪ است. هر چه قدرت محاسباتی بیشتر باشد، شانس به دست آوردن بیت کوین جدید بیشتر می شود.
اثبات سهام – Proof of Stake (POS)
–
اثبات فعالیت – Proof of Activity (POA)
–
اثبات صلاحیت – Proof of Authority(POA)
–
اثبات زمان سپری شده – Proof of Elapsed Time (PoET)
–
اثبات ظرفیت – Proof of Capacity (PoC)
–
روند رابین – Round Robin
–
مقایسه مکانیزم های اجماع
–
درباره مجید شبیری
کارشناس ارشد فناوری اطلاعات از دانشگاه صنعتی امیرکبیر. مدیر و مؤسس "علوم نوین امیرکبیر"، متخصص برنامه نویسی، شبکه، لینوکس و امنیت. از سال 84 همزمان با شروع تحصیلات دانشگاهی، وارد حوزه تخصصی مهندسی نرم افزار شدم و اکنون مشغول تحقیق، توسعه و آموزش در حوزه بلاک چین هستم و معتقدم بلاکچین به زودی فضای کسب و کارها را منقلب خواهد کرد.
نوشته های بیشتر از مجید شبیری
دیدگاهتان را بنویسید