تندرمینت
تیم بحث آراد | 1398.10.18

تندرمینت چیست ؟ راهنمایی جامع برای درک کامل

Cosmoc یکی از پروژه های مهم محسوب می شود. با داشتن افرادی مثل Jae Kwon و Ethan Buchman در تیم، دارای قابلیت های زیادی است. این پروژه در قلب و روح آنها جای دارد.تندرمینت کور (Tendermint Core) الگوریتم اجماع تندرمینت (Tendermint) را با پروتکل p2p gossip ترکیب می کند. بنابراین، وقتی آن را در یک نرم افرار استیک قرار می دهید، تندرمینت کور را با لایه اپلیکیشن Cosmos-SDK دریافت می کنید.در هر صورت، قبل از آنکه بیشتر ادامه دهیم، اجازه دهید به ضرورت تندرمینت بپردازیم.

بیت کوین و بلاک چین:

Satoshi Nakamoto خالق بیت کوین، اولین سیستم رمزنگاری شده دنیا را خلق کرد. نکته خارق العاده در مورد او این است که او قادر بود مسئله فرماندهان بیزانسی را حل کند که منجر به کمک به WAN (wide area network) تا در یک محیط بی اعتماد به یک اجماع برسد. بیت کوین از الگوریتم اثبات کار برای کنترل اجماع استفاده می کرد.

با درنظر داشتن این موضوع، کار مهمی که بیت کوین انجام داد این بود که او تکنولوژی بلاک چین را به همه معرفی کرد.

یک بلاک چین به زبان ساده، یک سری زماندار از داده های ثبت شده غیرقابل تغییر است که توسط گروهی از کامپیوترها که تحت مالکیت واحدی نیستند مدیریت می شود. هر یک از این بلاک های داده ها محافظت شده و توسط اصول رمزنگاری (چین) به یکدیگر متصل هستند.

به عبارت دیگر، یک بلاک چین یک ماشین قطعی استیت است که در نودهایی که لزومی ندارد به یکدیگر اطمینان داشته باشند کپی می شود. منظورمان از قطعی این است که اگر گام های یکسانی برداشته شود، همیشه منجر به یک نتیجه خواهد شد. مثلاً 1+2 همیشه 3 می شود.

این به چه معناست؟ در این راستا بیت کوین و اتریوم را راه اندازی می نمائیم.

در بیت کوین، استیت لیستی از بالانس های هر اکانت است، که لیستی از خروجی معاملات خرج نشده (UTXO) است. استیت از طریق معاملاتی که بالانس را تغییر می دهند اصلاح می شود.

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

اگر به معماری تکنولوژی بلاک چین نگاه کنید، سه لایه خواهید دید:

Networking: انتشار اطلاعات معاملات از طریق نودها

Consensus: به نودها اجازه می دهد تا تصمیم بگیرند. البته وقتی که بیش از 3/2 از آنها نود خرابکار نباشند.

Application: مسئول پردازش معاملات است. با دادن یک استیت و معامله، اپلیکیشن استیت جدید را بازمی گرداند.

تندرمینت

مشکلات معماری بلاک چین کنونی:

ساخت یک بلاک چین از پایه با داشتن این سه لایه کار بسیار مشکلی است. بنابراین، بسیاری از پروژه ها ترجیح می دهند از بیت کوین فورک شوند. اگرچه، این ویژگی در بسیاری موارد برای آنها مفید بوده است اما محدودیت های پروتکل بیت کوین همواره با آنها همراه است. واضح است که پروژه ای که به مشکل ظرفیت دارد را نمی توان برای اجرای پروژه های پیچیده به کار برد.

پس از ورود اتریوم بسیاری از مشکلات رفع شد. اتریوم به توسعه دهندگان پلتفرمی داد که می توانستند در آن قرارداد هوشمند و سایر پروژه ها را ایجاد کنند. اگرچه، مثل بیت کوین، اتریوم دارای مشکلات مشابهی بود. هر دوی آنها دارای معماری مونولیسیک (monolithic) به جای ماژولار بودند.

معماری مونولیسیک:

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

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

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

معماری تندرمینت و اهداف:

تندرمینت از معماری ماژولار استفاده می کند. اهداف آن شامل:

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

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

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

معماری تندرمینت به صورت زیر خواهد بود:

معماری تندرمینت

همانطور که می بینید، اپلیکیشن از طریق پروتکل سوکت که به آن APCI (ApplicationBlockchain Interface) گفته می شود به تندرمینت کور وصل می شوند. از آنجائیکه تندرمینت کور و اپلیکیشنی که روی آن اجرا می شود در UNIX جدا اجرا می شوند، آنها باید روشی برای تعامل با یکدیگر داشته باشند؛ ABCI به ارتباطات بین این دو کمک می کند.

طراحی ABCI خاص است و شامل اجزای زیر می باشد:

  1. پروتکل پیام:
  • پیام های پاسخ و پرسش
  • درخواست ها توسط اجماع ایجاد می شوند درحالیکه اپلیکیشن از پاسخ ها مراقبت می کند
  • با استفاده از protobuf تعریف می شود
  1. سرور/کلاینت
  • موتور اجماع کلاینت را اجرا می کند
  • اپلیکیشن سرور را اجرا می کند
  • دو کاربرد وجود دارد: async بایت های خام و grpc
  1. پروتکل بلاک چین

ABCI براساس کانکشن است. سه مورد از کانکشن های تندرمینت کور شامل موارد زیر است:

Mempool connection: این مورد بررسی می کند که آیا معاملات باید قبل از اجرا انتقال بیایند. این کانکشن فقط از CheckTx استفاده می کندو

Consensus connection: این کانکشن به اجرای معاملات کمک می کند. ترتیب پیام برای هر بلاک به این صورت است، BeginBlock، [DeliverTx, …]، EndBlock، Commit

Query Connection: در جستجوی استیت اپلیکیشن کمک می کند. این بخش از Query و Info استفاده می کند.

در هر صورت، هدف اصلی تندرمینت فراهم کردن توسعه دهندگان با ابزاری که نه تنها کاربردی است بلکه دارای ظرفیت پذیرش بالایی است، می باشد. ویژگی هایی که تندرمینت را جذاب می کند شامل:

  1. بلاک چین عمومی یا خصوص:

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

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

  • انتشار معاملات بین نودها از طریق پروتکل gossip
  • کمک به تأیید تأیید کنندگان در مورد معاملاتی که به بلاک چین اضافه می شوند

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

  • توسعه دهندگان می توانند به اپلیکیشن اجازه دهند که یک سیستم رأی گیری داشته باشند که تأییدکنندگان را براساس تعداد توکنی که در اکوسیستم استیک کرده اند از طریق الگوریتم اثبات کار انتخاب می شوند و یک بلاک چین عمومی ایجاد می کنند
  • بعلاوه، توسعه دهندگان می توانند یک اپلیکیشن ایجاد کنند که تعدادی محدود از تأییدکننده های از قبل تعیین شده که مسئول اجماع و نودهای جدید هستند را تعریف کنند. به این گواه قدرت (proof-of-authority) گفته می شود که نشانه بلاک چین دارای مجوز دسترسی یا به عبارتی بلاک چین خصوصی است.
  1. عملکرد بالا

اپلیکیشن های ساخته شده از طریق تندرمینت کور می توانند دارای عملکرد ویژه ای باشند. تندرمینت کور دارای زمان بلاک 1 ثانیه است و می تواند تا جائیکه اپلیکیشن به آن اجازه دهد 10000 معامله در یک ثانیه را برای معاملات 250byte را کنترل کند.

  1. قطعیت:

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

همانطور که قبلاً گفتیم، بیت کوین و اتریوم (تا زمان اجرای کامل کسپر FFG) در واقع دارای قطعیت نیستند. در زمان بروز فورک سخت یا حمله 51 درصد امکان تغییر معاملات وجود دارد.

تندرمینت، از طرف دیگر، به سرعت در عرض کمتر از 1 ثانیه معامله را قطعی می کند. تا زمانیکه کمتر از 3/2 از تأیید کنندگان خرابکار باشند فورک ها در این سیستم ایجاد نمی شوند. پس از ایجاد بلاک کاربران می توانند اطمینان داشته باشند که معاملات نهائی شده است.

  1. امنیت:

تندرمینت امن است و مشارکت کنندگان را نیز وادار می کند که پاسخگوی رفتار خود باشند. همانطور که قبلاً گفتیم، تندرمینت هرگز نمی تواند فورک شود تا زمانیکه کمتر از 3/2 تأیید کنندگان خرابکار باشند. اگر در مواردی، بلاک چین فورک شود، راهی برای تعیین خسارت وجود دارد. بعلاوه، اجماع تندرمینت نه تنها تحمل خطا را دارد بلکه به طور کارآمد تحمل خطای بیزانس را نیز دارد.

  1. راحتی استفاده:

نکته مهم دیگر در مورد آن ویژگی یوزر-فرندلی است. همانطور که قبلاً گفتیم، این سیستم دارای معماری ماژولار است یعنی جائیکه لایه اپلیکیشن می تواند کاستومایز شود. این ویژگی این امکان را برای کدبیس های کنونی فرآهم می کند تا بدون زحمت و از طریق ABCI ها به تندرمینت وصل شوند. یک مثال خوب در این مورد اتریوم است که اساساً کدبیس ماشین مجازی اتریوم که روی تندرمینت سوار است می باشد.

اتریوم دقیقاً شبیه اتریوم کار می کند اما علاوه بر آن از ویژگی های مثبتی که در بالا ذکر کردیم نیز بهره می برد. تمام ابزارهای اتریوم مثل متامسک و ترافل با اتریوم سازگار هستند.

  1. مقیاس پذیری:

اجرای گواه سهام تندرمینت بسیار مقیاس پذیرتر از الگوریتم گواه کار سنتی است. دلیل اصلی این است که سیستم براساس گواه کار نمی تواند تقسیم شود.

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

تندرمینت دارای این ویژگی می باشد که سبب افزایش مقیاس پذیری می شود.

پروتکل اجماع تندرمینت:

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

حال اجازه دهید با اهداف مکانیزم اجماع آشنا شویم.

  • Agreement Seeking: یک مکانیزم اجماع باید توافق گسترده ای در گروه بدست بیاورد.
  • Collaborative: همه مشارکت کنندگان باید با یکدیگر برای رسیدن به یک نتیجه کار کنند نتیجه ای که برای کل گروه مفید است.
  • Cooperative: مشارکت کنندگان نباید منفعت خود را در اولویت گروه قرار دهد زیرا تیم چیزی فراتر از تک تک افراد است.
  • Participatory: مکانیزم اجماع باید به نحوی باشد که هر شخصی به طور فعال در فرآیندهای کلی نقش داشته باشد.
  • Inclusive: تا جای ممکن باید تعداد افراد بیشتری در آن شرکت کنند. نباید شبیه رأی گیری های معمولی باشد که در آن رأی افراد وزن کمی دارد.
  • Egalitarian: هر رأی باید وزن یکسانی داشته باشد. رأی یک نفر نباید از رأی شخص دیگر مهم تر باشد.

چه مکانیزم اجماعی باید در واحدی مثل بلاک چین مورد استفاده قرار بگیرد؟

قبل از بیت کوین، تعداد زیادی سیستم نامتمرکز ارزی peer-to-peer وجود داشت که با شکست روبرو شدند، زیرا آنها نمی توانستند پاسخی برای بزرگترین مشکل یعنی رسیدن به اجماع فرآهم کنند. به این مشکل مسئله ژنرال های بیزانسی می گویند.

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

برای اینکه کاری در شبکه peer-to-peer انجام شود، همه نودها باید به اجماع برسند. چیزی که دراین سیستم وجود دارد این است که این سیستم تأکید زیادی بر افراد دارد تا مطابق منفعت کلی جامعه عمل کنند. اگرچه، همانطور که می دانید، افراد در این زمینه قابل اطمینان نیستند و درواقع جائیست که موضوع مسئله ژنرال های بیزانسی مطرح می شود.

ژنرال های بیزانسی

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

تنها کاری که می توانند انجام دهند این است یک پیام از یک ژنرال به ژنرال دیگر فرستاده شود. اگرچه، اتفاقات مختلفی ممکن است برای پیام رسان ها بیفتد. ژنرال های فاسد می توانند آنها را متوقف کنند و پیام را تغییر دهند. بنابراین، چطور ژنرال ها می توانند از انتقال صحیح پیام ها مطمئن شوند؟ این همان مسئله مسئله ژنرال های بیزانسی است و Satoshi Nakamoto این مسئله را با استفاده از مکانیزم اجماع گواه کار حل کرد.

گواه اثبات کار چیست؟

اجازه دهید بررسی کنیم چطور گواه کار، کار می کند. فرض کنید یک ژنرال می خواهد با سایر ژنرال ها ارتباط برقرار کند.

  • یک nonce به پیام اصلی اضافه می شود. nonce یک عدد بر پایه 16 است.
  • این پیام جدید سپس هش می شود. فرض کنید که ژنرال ها قبلاً موافقت کردند که فقط پیام ها را ارسال کنند که پس از هش با چهار صفر شروع می شود.

اگر هش صفرهای مورد نظر را نداد، nonce تغییر می کند و پیام دوباره هش می شود. این فرآیند تکرار می شود تا زمانیکه هش مورد نظر بدست بیاید.

  • کل فرآیند بسیار زمانبر است و به قدرت محاسباتی بالایی نیاز دارد.
  • وقتی درنهایت آنها هش را دریافت می کنند، پیام رسان پیام واقعی و nonce را منتقل می کند. بنابراین، وقتی کسی سعی می کند پیام را متوقف کند چه؟ آیا اثر سیل (avalanche) تابع هش را به خاطر دارید؟ پیام بشدت تغییر می کند و از آنجائیکه با صفر شروع نمی شود، افراد می فهمند که پیام تغییر یافته است.

بنابراین، برای قرار دادن گواه کار در مفهوم استخراج رمزارز:

  • ماینرها شروع به حل مسائل رمزنگاری می کنند تا بتوانند یک بلاک به بلاک چین اضافه کنند.
  • فرآیند نیاز به تلاش و قدرت محاسباتی بالایی دارد.
  • ماینرها سپس بلاک خود را به شبکه بیت کوین معرفی می کنند.
  • شبکه سپس اعتبار بلاک را بوسیله بررسی هش چک می کند، اگر درست باشد به بلاک چین اضافه می شود.

بنابراین، کشف nonce مورد نیاز و هش فرآیند دشواری است، اگرچه بررسی اعتبار آن کار ساده ای است و این ماهیت گواه کار است.

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

وقتی شما یک بلاک را کشف می کنید، پاداشی معادل با 12.5 بیت کوین دریافت می کنید. پاداش پس از هر 210000 بلاک نصف می شود. پس از آنکه یک بلاک را استخراج می کنید، در بلاک یک دیکتاتور موقت خواهید شد. شما مسئول قرار دادن معاملات در بلاک می شوید و درنتیجه هزینه معاملات را نیز دریافت می کنید.تعداد بیت کوین محدود است، 21 میلیون موجود است. بنابراین، چیزی که ماینرها را از استخراج منع می کند خود بیت کوین است.

اینطور به نظر می رسد که استخراج بیت کوین با گذشت زمان سخت تر می شود که به آن “سختی” گفته می شود و با ادامه روند استخراج درجه سختی نیز افزایش می یابد.

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

مشکلات مربوط به گواه کار:

در مورد الگوریتم گواه کار سه مشکل وجود دارد. در مورد جزئیات قبلاً صحبت کردیم، بنابراین، فقط مرور می کنیم.

  • هدررفت انرژی: بیت کوین از ایرلند و اسلواکی بیشتر انرژی مصرف می کند. مصرف شدید انرژی یکی از اصول بیت کوین است. درواقع هدررفت انرژی به خاطر هدردادن انرژی است.
  • تمرکززایی: همانطور که قبلاً گفتیم، بیت کوین از آسیک برای استخراج استفاده می کند. مشکل این روش این است که آسیک ها گران هستند و استخرهایی که پول بیشتری دارند آسیک بیشتری خواهند داشت و درنتیجه قدرت استخراج بیشتری نیز خواهند داشت. به همین دلیل، بیت کوین به اندازه ای که باید نامتمرکز نیست.
  • مقیاس پذیری: معماری گواه کار از مقیاس پذیری ممانعت می کند. بیت کوین می تواند 7 معامله در هر ثانیه مدیریت کند. برای یک سیستم مالی مدرن این حجم کافی نیست.

ورود به تندرمینت:

بنابراین، برای رفع مشکلات سیستم اجماع گواه کار، Jae Kwon، یک برنامه نویس و فارغ التحصیل مهندسی سیستم، تندرمینت را ایجاد کرد. تندرمینت یک پروتکل براساس BFT است، که در یک سیستم بدون مجوز ورود که دارای الگوریتم گواه سهام است عنوان ساخته شد. بدلیل پیچیدگی، فرآیند ساخت تندرمینت 4 سال طول کشید تا کامل شود.

Jae Kwon و مدیر فنی تندرمینت، Ethan Buchman، از Raft و PBFT الهام گرفتند تا یک سیستم اجماع که در آن مسئله ژنرال بیزانس پاسخ داده شود.

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

  1. عدم امکان FLP:

عدم امکان FLP (Fischer Lynch Paterson) یعنی یک الگوریتم اجماع می تواند دو مورد از سه ویژگی زیر را داشته باشد:

  • امنیت
  • فسخ یا فعال بودن تضمین شده
  • تحمل خطا

ورود به تندرمینت

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

بنابراین، سینک شدن یکی از مشکلات است. اگرچه، محققان Dwork،  Lynch و Stockmeyers یک راهکار به نام اجماع DLS معرفی کردند.

  1. اجماع DLS و سینک جزئی:

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

بیت کوین دارای حد زمانی بالای 10 دقیقه است. بنابراین، یک بلاک از معاملات هر 10 دقیقه تولید می شود. این فرضیه زمانی در شبکه اعمال می شود تا نودها 10 دقیقه کامل برای جمع آوری اطلاعات و انتقال آن از طریق gossip داشته باشند.

اجماع DLS و سینک جزئی

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

  1. Liveness و Termination:

Termination ویژگی است که بیان می کند که هر پردازشگر صحیح باید درنهایت تصمیم بگیرد. اغلب الگوریتم های اجماع، که در حال حاضر داریم، برای تأمین امنیت و Termination بر مدل های همگام تکیه دارند. آنها موانع و قوانینی که مانع هستند را رفع می کنند، در مواقعی که آنها وجود نداشته باشند، چین به چندین پروتکل فورک می شود.

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

  1. پروتکل های قطعی و غیرقطعی:

اغلب، پروتکل های اجماع کاملاً ناهنگام بر اعضای غیرقطعی مثل اوراکل که شامل سطح گسترده ای از عدم قطعیت و پیچیدگی است می باشد.

چطور تندرمینت با همه این فاکتورها کنار می آید؟

تندرمینت یک اجماع BFT، قطعی و ناهمگام است که در آن تأییدکنندگان دارای یک استیک هستند که قدرت رأی دادن آنها را تعیین می کند. در مثلث عدم امکان FLP، در آن تحمل خطا و امنیت بر liveness ترجیح دارد.

تندرمینت دائماً بین دوره سینک شدن و نشدن حرکت می کند. به این معنی که، اگرچه بر فروض زمانی برای توسعه وابسته است، سرعت برنامه به پارامترهای سیستم وابسته نیست اما در عوض به سرعت شبکه واقعی وابسته است.

همچنین، در صورتی که کمتر از 3/1 از تأییدکنندگان فاسد/بی دقت باشند تندرمینت فورک نمی شود. دقیقاً به همین دلیل تندرمینت تحمل خطای بیزانس را دارد. همانطور که قبلاً گفتیم، تندرمینت بر امنیت بیش از liveness تمرکز دارد. بنابراین، اگر بیش از 3/1 تأییدکنندگان فاسد باشند، به جای فورک شبکه، بلاک چین تندرمینت به طور موقت متوقف می شود تا وقتی که بیش از 3/2 تأییدکنندگان به اجماع برسند.

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

تندرمینت – سیستم گواه سهام:

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

حال، اجازه دهید با کارکرد تندرمینت آشنا شویم. اجازه دهید در ابتدا به معرفی واژه هایی که در ادامه از آن استفاده خواهیم کرد بپردازیم:

  • یک شبکه از تعداد زیادی نود تشکیل شده است. نودهای که به یک نود خاص وصل هستند را پیر(peer) می گوئیم.
  • فرآیند اجماع در یک ارتفاع بلاک خاص H اتفاق می افتد. فرآیند تعیین بلاک بعدی از چندین راند تشکیل شده است.
  • راندها از چندین استیت تشکیل شده اند که شامل: NewHeight، Propose، Prevote، Precommit و Commit است. به هر استیت یک Roundstep یا فقط یک step می گویند.
  • یک نود در ارتفاع، راند و گام را (H,R,S) یا (H,R) می گویند.
  • Prevote یا precommit یعنی انتشار رأی قبل از رأی گیری و یا قبل از اجرا
  • وقتی یک بلاک بیش از 3/2 رأی ها را در (H,R) بدست بیاورد به آن proof-of-lock-change یا PoLC می گویند.

ماشین استیت چیست؟

ماشین استیت دستگاه پروتوکل تندرمینت است. بررسی نمودار زیر اطلاعات مفیدتری در اختیارتان قرار می دهد:

ماشین استیت

استیت هایی را که در هر راند اتفاق اتفاق می افتد شامل: NewHeight، Propose، Prevote، Precommit و Commit است.

از بین این موارد، Propose، Prevote،  Precommit شامل یک راند هستند درحالیکه دو مورد دیگر راندهای خاص هستند. در یک سناریوی ایده آل، انتقال استیت به شکل زیر کار می کند:

NewHeight -> (Propose -> Prevote -> Precommit)+ -> Commit -> NewHeight ->…

اگرچه، همیشه این چنین نبوده است. چندین راند قبل از ارسال بلاک مورد نیاز است. در زیر دلایل اینکه چرا چندین نود مورد نیاز است صحبت می کنیم:

  • پیشنهاد دهنده مدنظر ممکن است حاضر نباشد
  • بلاک ارائه شده ممکن است نامعتبر باشد
  • بلاک در زمان درست انتشار پیدا نکند
  • بیش از 3/2 از انتشار پیش از رأی گیری توسط نودهای تعیین کننده به موقع دریافت نمی شوند.
  • اگرچه بیش از 3/2 از انتشارهای پیش از رأی برای ورود به مرحله بعد ضروری است، حداقل یک تأیید کننده ممکن است رأی نامفهوم و یا به چیز دیگری رأی داده باشد.
  • بیش از 3/2 از انتشار قبل از اجراء هرگز توسط نودهای تأییدکننده دریافت نمی شوند بااینکه انتشار پیش از رأی آنها دریافت شده است.

در طول هر استیت چه اتفاقی می افتد؟

حال به بررسی هر استیت می پردازیم تا ببینیم همه اجزاء در کنار یکدیگر چگونه کار می کنند.

Propose:

در این گام، پیشنهاد دهنده مورد نظر، یعنی نود انتخاب شده پیشنهاد می کند یک بلاک در (H, R) اضافه شود. این گام به یکی از دو شکل زیر پایان می یابد:

بلاک پیشنهاد می شود و وارد گام انتشار قبل از رأی می شود و یا زمان پیشنهاد دهنده برای انتخاب بلاک قبل از آنکه وارد مرحله انتشار پیش از رأی شود اکسپایر می شود.

Prevote:

حال وارد مرحله قبل از رأی شدیم. در این گام، هر تأییدکننده نیاز به تصمیم گیری دارد.

  • اگر به طریقی، تأییدکننده یک بلاک پیشنهاد شده در مراحل قبلی را بگیرد، آنها به طور اتوکاتیک آن بلاک را امضاء کرده و منتشر می کنند.
  • اگر تأییدکننده پروپوزال دریافتی برای راند کنونی را بپذیرد، سپس آنها امضاء شده و یک انتشار قبل از رأی برای بلاک پیشنهادی حاصل می شود.
  • اگرچه، اگر به پروپوزال مشکوک باشند یا اصلاً پروپوزالی دریافت نکنند ( مثلاً اگر زمان پیشنهاددهنده تمام شود)، آن ها امضای باطله دریافت می کنند.
  • در این گام بلوکه کردن بلاک اتفاق نمی افتد.
  • در این دوره، همه نودها پیش رأی ها را از طریق پروتکل gossip در سیستم انتشار می دهند.

Precommit:

حال وارد گام نهائی به نام انتشار قبل از اجرا شدیم. با ورود به این مرحله، تأییدکنندگان از طریق انتشار قبل از اجرا، تصمیم خود را precommit می کنند. یکی از سه سناریوی زیر ممکن است اتفاق بیفتد:

  • اگر تأییدکنندگان بیش از 3/2 پیش اجراها را برای یک بلاک پذیرفته شده دریافت کنند، تأییدکننده پیش اجرا را امضاء کرده و در شبکه منتشر می کند. آنها همچنین آن بلاک را پیگیری می کنند. یک تأییدکننده می تواند فقط یک بلاک را در یک زمان پیگیری کند.
  • اگرچه، اگر تأییدکننده بیش از 3/2 پیش اجراهای باطله را دریافت کند سپس آنها را آنلاک کرده و پیش اجراها به باطله تغییر می کنند.
  • در نهایت، اگر آنها بخش عمده ای از 3/2 را دریافت نکنند آن را امضاء نکرده و چیزی را پیگیری نمی کنند.

در این گام، نودها همه جا در مورد  پیش اجراها در شبکه می گویند.

درنهایت، اگر بلاک پیشنهاد داده شده بیش از 3/2 پیش اجراها را دریافت کند سپس وارد گام Commit می شویم. اگرچه، اگر به آن گام نرسند وارد گام Propose راند بعدی می شوند.

Commit:

گام Commit بخشی از راند نیست. به همراه NewHeight آن را یکی از دو راند خاص می نامند. در طول این گام، دو شرط موازی بررسی می شود تا مشخص شود که آیا این شروط برقرار است یا نه.

  • در درجه اول، تأییدکننده باید بلاکی را که توسط شبکه دوباره ارجاع شده را دریافت کند. پس از آن، امضاء شده و انتشار می یابد.
  • در درجه دوم، آنها باید منتظر بمانند تا حداقل 3/2 پیش اجراها را برای بلاک دریافت کنند.

پس از آن، بلاک در شبکه اجرا می شود.

NewHeight:

ارتفاع بلوک 1 را افزایش می دهد تا نشان دهد که بلاک اضافه شده است.

انتخاب تأییدکننده:

همانطور که احتمالاً تا الان متوجه شده اید، انتخاب تأییدکننده های برای Cosmos دشوار است. بنابراین، آنها چگونه انتخاب می شوند؟

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

به همین دلیل Cosmos تصمیم گرفته تا 100 تأییدکننده در یک روز (یعنی روز جمع آوری سرمایه) داشته باشد. تعداد تأییدکنندگان هر ساله به مدت 10 سال 13 درصد افزایش می یابند تا به 300 برسند.

انتخاب تأییدکننده در تندرمینت

کسپر در برابر تندرمینت:

کسپر یکی دیگر از پیاده سازی های محبوب پروتکل گواه سهام است.

درحالیکه تندرمینت بر روی امنیت تمرکز دارد، کسپر از طریق عدم امکان FLP روی liveness تمرکز دارد. بنابراین، در طول فورک چه اتفاقی برای کسپر می افتد؟ FFG کسپر به بلاک چین اجازه می دهد تا به ساخت ادامه دهد، درحالیکه همه نودها خواهند دانست که این چین نهائی نشده است. بنابراین، بلاک چین می تواند بدون نهائی شدن در دسترس بماند.

تأییدکنندگانی چین این حق را دارند تا به چین فورک شده انتقال بیابند. اگر بیش از 3/2 تأییدکنندگان رأی بدهند، چین ها سوئیچ می شوند. بعلاوه، کسپر دارای مکانیزم اسلش معروفی است. هر نوعی از حمله خرابکارانه منجر به از بین رفتن استیک آنها می شود.