تندرمینت یکی از نرم افزارهایی است که امروزه با هدف مدیریت شبکه بلاکچین و سازماندهی لایههای آن مورد استفاده قرار میگیرد. این برنامه کاربردی که کمتر از یک دهه از معرفی آن میگذرد، یکی از ابزارهایی است که به شما کمک میکند تا با مرتب سازی و برنامه ریزی برای تراکنشهای بستر بلاکچین، شبکه مخصوص خود را پیاده سازی کرده و برنامههای مبتنی بر آن را به راحتی و بدون دست کاری لایههای اصلی بلاکچین راه اندازی کنید. همچنین این برنامه به اعضای بلاکچین کمک میکند تا بدون آسیب دیدن از طرف نودهای خرابکار بتوانند الگوریتم اجماع اثبات کار را به درستی در سطح شبکه اجرا کرده و با صداقت و شفافیت، درباره اضافه شدن هر بلوک به زنجیره تصمیم گیری کنند. اگر شما نیز درخصوص ماهیت ترندرمینت، نحوه عملکرد آن و اهدافی که دنبال میکند سوالاتی در ذهن دارید، با این مقاله از وبلاگ کیف پول من همراه باشید.
موضوع 📜 | تندرمینت چیست؟ |
مدت زمان مطالعه ⌛ | 9 دقیقه |
منتشر شده توسط 🙍♂️ | صرافی ارز دیجیتال کیف پول من |
تاریخ انتشار 📅 | 1402/02/10 | 4/30/2023 |
خطای بیزانس و معماری نادرست بلاکچین؛ علت راه اندازی تندرمینت
مفهومی به نام تمرکززدایی سالها پیش باعث شد تا ما در سیستمهای بلاکچینی نیاز به وجود نودهایی داشته باشیم که بتوانند نسبت به اضافه شدن اطلاعات و بلوکهای جدید به زنجیره رای دهند و تصمیم بگیرند. هرکاربر به عنوان نودهای اعتبارسنجی میتوانست در این رای گیری شرکت کند و تصمیمات تنها از طرف یک ارگان یا فرد خاصی گرفته نمیشد؛ اما همین مفهوم غیرمتمرکز بودن باعث شد تا اطلاعات درستی درباره نیت و ماهیت نودها در دسترس نباشد. به مرور، نودهای خرابکاری در سطح بلاکچین یافت میشوند که در تراکنشها اخلال ایجاد میکنند و یا با اضافه شدن یک بلوک به زنجیره مخالفت میکنند. گاهی نیز موقعیتهایی پیش میآید که به علت خطای فنی، آفلاین بودن نودها و یا تاخیر بسیار زیاد در شبکه، همه نودها نمیتوانند به درستی و در زمان مناسب در رایگیری شرکت کنند. خطای بیزانس مفهومی است که به همین موضوع اشاره میکند.
از طرفی، عموم بلاکچینها به علت عدم بهره برداری از معماری ماژولار به صورت یکپارچه ارائه میشدند که همین باعث میشد برای ایجاد یک تغییر کوچک، کل چهارچوب طراحی آنها بهم بریزد. این موضوع درحالی اتفاق میافتاد که طراحی ماژولار به توسعه دهندگان اجازه میداد بدون دردسر و با انعطاف پذیری شبکه، هر تغییری را در هر قسمت از آن، به صورت مجزا اعمال کنند. بعد از اعمال معماری ماژولار به بلاکچینها، عموم آنها از لایههای متفاوتی تشکیل شدند که عبارتند از لایه شبکه، لایه اجماع و لایه کاربردی. این تقسیم بندی باعث شد بلاکچینها بتوانند در لایه اجماع و شبکه، ارتباط نودها را با یکدیگر برقرار کرده و درباره وضعیت بلوکها تصمیم بگیرند و در لایه کاربردی، بدون دخالت الگوریتمهای اجماع و خطای بیزانس، پیاده سازی برنامههای غیر متمرکز و هوشمند را انجام دهند.
مطلب پیشنهادی : بررسی لایه های بلاکچین
تندرمینت؛ ابزاری برای ساخت و بهبود بلاکچین
بعد از اینکه ایمن نبودن طراحی و معماری پیشین بلاکچینها مورد سوال قرار گرفت و موجب تغییر معماری آنها و طراحی ماژولار شد، برنامهای نیاز بود که بتوان به وسیله آن لایههای بلاکچین را مدیریت کرده و باعث تحمل خطای بیزانس یا به عبارتی کنترل و هدایت آن شود. تندرمینتTendermint در سال 2014 توسط توسعه دهندگان خود یعنی جائه کووان (Jae Kwon) و ایثن بوکمن (Ethan Buchman) به دنیا معرفی شد. این برنامه در اصل پروتکلی بود که کمک میکرد بدون اینکه لایههای پایینی بلاکچین درگیر شوند، شما بتوانید برنامههای هوشمند خود را به راحتی در لایه کاربردی بلاکچین راه اندازی کرده، با دیگر بخشهای بلاکچین آن را سازگار کنید و آن را به صورت یک سیستم یکپارچه ارائه دهید. تندرمینت درواقع یکی از اعضای کیت توسعه نرم افزاری شبکه کازماس (Cosmos) است. کازماس، پروژهای است که به کمک تندرمینت درتلاش است تا مشکلات همکاری نودها را در سطح بلاکچین حل کند. به کمک این کیت توسعه شما میتوانید روی تندرمینت، بلاکچینهای خصوصی و عمومی خود را با استفاده ماژولهای متفاوت بسازید.
تندرمینت از چه اجزایی تشکیل شده است؟
تندرمینت برای اینکه بتواند به وظایف خود به خوبی عمل کنند، از اجزای متفاوتی تشکیل شده است. درواقع تندرمینت نرم افزاری است که با داشتن دو مشخصه پیوستگی و ایمنی میتواند برنامههای مختلف را روی ماشینهای متفاوت اجرا و پیاده سازی کند. به عبارت دیگر، تندرمینت میتواند با وجود غیبت یک سوم از کل نودهای رای دهنده شبکه تصمیم نهایی را اعلام کند و ایمنی شبکه را تامین کند. از طرفی، به ماشینها این امکان را میدهد که در هر وضعیت، تراکنش ها را مشاهده کرده و محاسبات انجام دهند تا پیوستگی حفظ شود. تندرمینت تمام این کارها را با استفاده از دو بخش اساسی هسته تندرمینت و رابط برنامه بلاکچین یا همان Application BlockChain Interface انجام میدهد.
هسته تندرمینت (Tendermint Core)
بخش اصلی و مرکزی تندرمینت درواقع هسته آن است که در زبان انگلیسی با عبارت Tendermint Core شناخته میشود. این قسمت از تندرمینت جایی است که مکانیسم اجماع و شبکه همتابههمتا پیاده سازی میشود. در این قسمت از برنامه نودها به صورت تصادفی انتخاب میشوند تا بلوک پیشنهادی خود را برای ثبت و اضافه شدن به شبکه ارائه دهند. الگوریتمی که برای انتخاب نودهای اعتبارسنج استفاده میشود Round Robin است؛ یعنی همه نودها حتما یکبار انتخاب خواهند شد. درواقع الگوریتم اجماعی که در این برنامه تندرمینت استفاده میشود الگوریتم اثبات سهام است؛ از این رو، هرچه استیکینگ و سرمایه قفل شده نودها بیشتر باشد، آن نود شانس بیشتری برای انتخاب شدن و ارائه بلوک پیشنهادی خود دارد. وقتی بلوک توسط نود پیشنهاد شد، بقیه نودها رای گیری میکنند و بعد از تایید آنها، بلافاصله بلوک به زنجیره شبکه اضافه میشود. به بیان دیگر، این وظیفه هسته تندرمینت است که تراکنشها را به ترتیب و به صورت صحیح در تمام ماشینها قرار دهد و به این ترتیب، یک شبکه همتابههمتا و منظم از ارتباطات متعارف بین نودها پدید میآید.
مطلب پیشنهادی : مفهوم نود (Node) در بلاکچین
رابط ABCI
رابط ABCI درواقع مخفف عبارت Application BlockChain Interface است. رابط برنامه بلاکچین یک راه ارتباطی برای ایجاد تعامل بین بخش هسته تندرمینت و خود برنامه هوشمندی است که قرار است بر روی بلاکچین قرار بگیرد. هسته تندرمینت از رابط ABCI استفاده میکند تا سه راه ارتباطی برای خود راه اندازی کند. هسته از این راهها به ترتیب برای تایید تراکنشهای منتشر شده در ممپول، اجرای عملیات بر روی بلوکهای پیشنهاد شده و درنهایت برای انجام کوئری و اطلاع یافتن از وضعیت برنامه استفاده میکند. به این ترتیب، توسعه دهندگان میتوانند بدون اینکه به اعمال تغییرات بر روی کل سیستم احتیاج داشته باشند، برنامه هوشمند خود را با هر نوع زبان برنامه نویسی ایجاد کرده و با استفاده از رابط ABCI آن را به هسته تندرمینت و بلاکچین متصل کنند.
تندرمینت چگونه کار میکند؟
تندرمینت به عنوان یکی از برنامههایی که از طرحی ماژولار استفاده میکند، به شما این امکان را میدهد که بدون مشکل بتوانید تنها بخش مجزایی از یک سیستم را تغییر دهید یا اصلاح کنید. تندرمینت مشکل خطای بیزانس را با استفاده روش نیمه همزمانی حل میکند؛ به این صورت که دیگر نیاز نیست تمام نودهای اعتبارسنج شبکه به صورت همزمان برای رای گیری حضور داشته باشند و اگر قسمتی از شبکه با مشکل مواجه شد، به صورت مجزا به حل مشکلات همان قسمت میپردازد.
دراصل، تندرمینت برای رای گیری دورهای خود از یک ماشین حالت استفاده میکند. ماشین حالت مفهومی در علوم کامپیوتر است. ماشین حالت میتواند حالتهای متفاوتی داشته باشد؛ اما در یک زمان خاص تنها میتواند در یکی از آن حالتها قرار بگیرد. تندرمینت از یک چرخه شامل چند حالت و مرحله تشکیل شده است. ولیدیتورها یا همان نودهای اعتبارسنجی تنها دو وظیفه رای دهی (Vote) و ارائه بلوک پیشنهادی (Propose) را در این چرخه به عهده دارند. هرنود باید در نوبت خود، بلوکی را با شماره تعداد مرحلهای که طی شده است (Height) به شبکه پیشنهاد دهد.
برای اینکه یک بلوک به زنجیره اضافه شود نیاز است که از دو مرحله رای گیری به نامهای پیش رای (Pre-Vote) و پیش اعمال (Pre-commit) عبور کند. درواقع، بعد از اینکه بلوک پیشنهاد شد و به عنوان یک بلوک معتبر برای رای گیری شناخته شد، وارد مرحله Pre-Vote میشود تا بیش از دو سوم نودهای شبکه به آن رای دهند. گذر از مرحله رای گیری اولیه را با اصطلاح پولکا میشناسند. بعد از اینکه پولکا اتفاق افتاد، بلوک وارد مرحله بعدی رای گیری یعنی Pre-commit میشود. بلوکی که بتواند در این مرحله نیز بیش از دو سوم آرای نودها را به دست آورد، بلافاصله به زنجیره متصل میشود. به این ترتیب، تندرمینت با فرض اینکه یک سوم نودها خرابکار هستند و یا در حال حاضر در شبکه فعال نیستند، میتواند ترتیب تراکنشها و امنیت شبکه را حفظ کند.
اهداف تندرمینت چیست؟
تندرمینت در اصل با هدف تشویق توسعه دهندگان برنامههای هوشمند به وجود آمد. این نرم افزار پیچیده و کاربردی وظیفه داشت که بتواند بلاکچین را با استفاده مفهوم طراحی ماژولار به بستری تبدیل کند که برنامههای هوشمند گوناگون بتوانند به راحتی بر روی آن پیاده سازی شوند. به عبارت دیگر، تندرمینت سعی میکند با استفاده از جداسازی لایههای بلاکچین محیطی امن را برای انجام فعالیتهای درون شبکهای و اجماع نظیر رای گیری و اعتبارسنجی بلوکها بسازد تا اکوسیستم مربوطه بتواند در سلامت کامل به پیشرفت رو به جلوی خود ادامه دهد. از طرفی، با مجزا کردن لایه کاربردی بلاکچین و ایجاد یک ارتباط ساده و موثر بین برنامههای هوشمند و بلاکچین، تندرمینت باعث علاقه بیشتر توسعه دهندگان به ساخت و توسعه برنامههای جدیدتر میشود.
تندرمینت؛ برنامهای که نودهای خرابکار را خلع سلاح میکند!
تندرمینت کمتر از یک دهه از آغاز رونمایی آن میگذرد و توانسته در این مدت زمان کم یکی از کاربردیترین نرم افزارهای دنیای برنامههای هوشمند و بلاکچین شناخته شود. این نرم افزار درواقع با داشتن دو بخش اصلی یعنی هسته تندرمینت و رابط ABCI توانسته مشکلات پیاده سازی الگوریتمهای اجماع نظیر الگوریتم اثبات سهام در بستر بلاکچین را حل کرده و با استفاده از روشی خاص، اعتبارسنجی در لایه اجماع را با امنیت بیشتری کنترل کند. تندرمینت با شگرد خاص خود که شامل رای گیری دو مرحلهای میشود موجب شده تا حتی با وجود آفلاین بودن و یا خرابکار بودن یک سوم از نودهای اعتبارسنج شبکه، الگوریتم اجماع بتواند کار خود را به درستی انجام دهد. تندرمینت در طی سالهای گذشته همواره سعی کرده توسعه دهندگان را به ایجاد برنامههای هوشمند در بستر غیرمتمرکز بلاکچینها تشویق کند.
برای دریافت فایل PDF این مقاله اینجا کلیک کنید