همه چیز درباره تندرمینت؛ معرفی الگوریتم اجماع Tendermint
ساختار بلاکچینها به گونهای است که برای کارکرد به اجماع آرای مشارکتکنندگان نیاز دارند. یکی از مزیتهایی که ساتوشی ناکاموتو در وایت پیپر بیت کوین بر روی آن تاکید دارد، ساختار غیرمتمرکز فرایند اجماع بلاکچین بیت کوین است. در واقع بلاکچینها برای تضمین کارکرد خود، به سازوکاری نیاز دارند که بتوانند به صورت غیرمتمرکز در مورد تایید تراکنشها و ساخت بلوک، اجماع کنند. در حال حاضر پرکاربردترین الگوریتمهای اجماع اثبات کار (PoW) و اثبات سهام (PoS) هستند. اما برخی بلاکچینها به تنظیم پروتکلهای اجماع نوآورانهای پرداختهاند که از محبوبترین آنها میتوان به الگوریتم اجماع تندرمینت (Tendermint) اشاره کرد. در این مقاله به معرفی الگوریتم اجماع تندرمینت پرداخته و با کارکرد آن آشنا میشویم.
تندرمینت چیست؟
تندرمینت در سال ۲۰۱۴ توسط طراح نرم افزار بلاکچین جائه کوان (Jae Kwon) و بیوفیزیکدان اینترنت اتان بوکمن (Ethan Buchman) راهاندازی شد. تندرمینت وظیفه تایید تراکنشها و ساخت بلوک را در بلاکچین بر عهده دارد. Tendermint همچنین به عنوان “Tendermint Core” شناخته میشود، پروتکلی که میتواند با بلاکچینهای درون یک شبکه و با بلاکچینهای خارجی ارتباط برقرار کند. با Tendermint، میتوان هر شبکه بلاکچینی را به طور یکپارچه ایجاد کرد. در واقع Tendermint Core به نرم افزاری گفته میشود که وظیفه اجرای الگوریتم اجماع تندرمینت را بر عهده دارد. لازم به ذکر است که تندرمینت و نرم افزار مربوط به آن، بخشی از کیت توسعه کازماس هستند. در حال حاضر علاوه بر کازماس، پروژههایی مانند ترا (Terra)، اوسیس (Oasis)، بایننس دکس و IRISnet از این الگوریتم استفاده میکنند. علاوهبراین پروژهها، اتریوم پس از مهاجرت از اثبات کار به اثبات سهام، از این الگوریتم استفاده میکند که به نام Ethermint شناخته میشود. برای درک بهتر کارکرد تندرمینت باید با مفاهیمی مانند معماری بلاکچین و تحمل خطای بیزانس آشنا شوید. در ادامه به بررسی این مفاهیم خواهیم پرداخت.
تحمل خطای بیزانس
جالب است بدانید که نوآوری بزرگ بیت کوین این بود که چیزی به نام مشکل ژنرالهای بیزانس را حل کرد. توضیح کوتاه آن اینطور است که شرکتکنندگان در بلاکچین نمیدانند که آیا دیگران صادقانه فعالیت میکنند یا پیامهای ارسال شده بین آنها صحیح است. در واقع خطای بیزانس یکی از مشکلات بلاکچین است که به وسیله الگوریتمهای اجماع حل میشود. نودهایی که وظیفه اعتبارسنجی در بلاکچین را برعهده دارند، باید در زمان واحد با یکدیگر در مورد صحت اطلاعاتی که قصد تایید آن را دارند، به توافق برسند. در حالی که نمیدانند که نودهای دیگر در رفتار خود صادق هستند یا نه. از کار افتادن نودها یا بروز رفتارهای مخرب، به نوعی خطای بیزانس محسوب میشوند که توسط نظریه تحمل خطای بیزانس (BFT) مدیریت و تحمل میشوند.
در واقع این مفهوم چیز جدیدی نیست، بلکه فناوری بلاکچین برای تضمین کارکرد شبکه از آن استفاده میکند. بدیهی است که در یک محیط غیرمتمرکز، جلوگیری از بروز خطا بسیار مهم است. شبکههای بلاکچینی که خطاهای بیزانسی را تحمل نمیکنند، واقعاً کارآمد نیستند. شبکهها به نوعی هماهنگی حزبی متمرکز نیاز دارند که رفتارهای مخرب را شکست دهند. در حقیقت الگوریتمهای اجماع، ابزاری برای تحمل خطای بیزانسی هستند و بلاکچینهایی که از الگوریتم اجماع بهتری بهره میبرند، کارکرد بینقصتری دارند؛ مانند بیت کوین که از الگوریتم اجماع اثبات کار بهره میبرد و تا به امروز بدون مشکل به کارکرد خود ادامه داده است.
ساختار بلاکچین
تندرمینت را شاید بتوان یک بلاکچین مانند بیت کوین دانست. البته بلاکچین تنها یک پایگاه داده نیست، بلکه شبکهای از تعامل همتا به همتای نودها، اجرای تراکنشها، راهاندازی اپلیکیشنهای مختلف و قرارداد هوشمند است. ولی بیت کوین و بیشتر بلاکچینها از ساختار یکپارچه برای کارکرد خود استفاده میکنند. معماری یکپارچه یک مفهوم مهندسی نرم افزار است که طبق آن اجزا به هم پیوسته و وابسته هستند. ایجاد تغییر در این بلاکچینها فرایندی دشوار است که در بیشتر مواقع به هارد فورک بلاکچین منتهی میشود.
در نقطه مقابل معماری ماژولار قرار دارد. در این نوع بلاکچینها ایجاد تغییر بسیار سادهتر است و نیازی به ایجاد تغییر در کل بلوکها وجود ندارد. تندرمینت نیز از این معماری استفاده میکند. بلاکچینهایی مانند کازماس نیز بر مبنای معماری ماژولار بهینهسازی شدهاند تا بتوان برای کارکرد بهتر شبکه، تغییرات لازم را به سادگی اعمال کرد.
با در نظر گرفتن ساختار بلاکچین و نیاز به یک الگوریتم اجماع برای جلوگیری از بروز خطای بیزانس، به معرفی لایههای مختلف بلاکچین میپردازیم. بلاکچین به صورت کلی از سه لایه تشکیل شده است: لایه کاربردی (Application Layer)، لایه اجماع (Consensus Layer) و لایه شبکه (Networking Layer).
لایه اجماع و شبکه، لایههایی است که در آنها فرایند اجماع، تایید تراکنشها و ساخت بلوک انجام میشود. لایه کاربردی جایی است که کاربران میتوانند در آن فعالیت کنند. مانند ساخت برنامههای غیرمتمرکز و قراردادهای هوشمند در اتریوم یا تراکنشهای سفارشی در بیت کوین. پس از آشنایی با مشکل ژنرالهای بیزانسی و معماری بلاکچین، میتوان به سراغ کارکرد شبکه تندرمینت رفت.
الگوریتم اجماع تندرمینت و اجزای آن
در آغاز بهتر است با اجزای اصلی تندرمینت آشنا شویم. این تکنولوژی از دو بخش اصلی تشکیل شده است که عبارتند از: موتور اجماع اصلی (Tendermint Core) و رابط کاربری تندرمینت (Application BlockChain Interface) که به اختصار ABCI گفته میشود.
Tendermint Core سیستمی است که به تحمل خطا دست مییابد. در اصل، Tendermint Core یک کامپیوتر بزرگ و توزیع شده است که وضعیت یکسانی را برای همه نودها ایجاد میکند. تا زمانی که حداقل دو سوم شرکتکنندگان رفتار مخربی نشان ندهند، همه چیز به آرامی کار میکند.
در مرحله اول، مکانیسم اجماع مورد استفاده اثبات سهام (PoS) است. برای هر دوره، یک گره تصادفی از یک مجموعه اعتبارسنج انتخاب میشود. سپس آن نود باید بلوک بعدی را پیشنهاد کند. این فرایند طبق الگویی به نام سیستم دورگرد (round-robin system) اتفاق میافتد. اگر اعتبارسنجهای دیگر از آن نود راضی باشند، بلوک جدید اضافه میشود و زنجیره بهروزرسانی میشود. در این الگوریتم، نهایی شدن فرایند تایید به صورت آنی است؛ برخلاف بیت کوین یا اتریوم، برای اطمینان از معتبر بودن تراکنش، نیازی به منتظر ماندن برای تایید نیست.
همانطور که گفته شد معماری Tendermint ماژولار است و لایه کاربردی از لایههای اجماع و شبکه جدا شده است. یعنی میتوانید بدون نگرانی در مورد نودهای مزاحم یا الگوریتمهای اجماع، به استفاده از لایه کاربری پرداخته و اپلیکیشنها و قراردادهای هوشمند را اجرا کرد. این قابلیت بخاطر ABCI ممکن شده است. شاید این مزیت برای کاربر عادی خیلی هیجان انگیز نباشد. اما دست توسعهدهندگان را برای توسعه اپلیکیشنهای غیرمتمرکز باز میگذارد. از طرفی به وسیله Tendermint Core برنامهنویسان، میتوان برای ساخت dApp ها از هر زبان برنامهنویسی استفاده کنند. این رابط کاربری امکان اتصال بلاکچین و برنامههای کاربردی دنیای فیزیکی را مهیا میکند.
تندرمینت چگونه کار میکند؟
Tendermint Core یک پروتکل توافق BFT ناهمزمان است. اعتبارسنجها به نوبت بلوکها را پیشنهاد میکنند و در مورد سلامت آنها رای میدهند. این فرایند اجماع، شامل دو مرحله رایگیری است که شامل مرحله پیش رای (Pre-Vote) و پیش اعمال (Pre-Commit) است. اگر یک بلوک متعهد نباشد، پروتکل به مرحله بعدی میرود و یک بلوک جدید پیشنهاد میدهد. اگر دو سوم اعتباردهندهها رای پیش اعمال دهند، آن بلوک تایید میشود.
یک بلوک ممکن است به دلیل آفلاین بودن یا کند بودن شبکه، نتواند وظایف خود را انجام دهد. شبکه اجازه میدهد این نود نادیده گرفته شود. اما پیش از رفتن به بلوک بعدی، اعتبارسنجها برای مدت کوتاهی منتظر میمانند تا یک پیشنهاد بلوک کامل را دریافت کنند. بعد از آن، اعتبارسنجها پس از آمادگی دو سوم نودها ادامه میدهند.
وظیفه ABCI اتصال Tendermint Core و کیت توسعه نرم افزار کازماس موسوم به SDK است. این اتصال شامل سه نوع پیام است که از Tendermit Core به لایه کاربردی تحویل داده میشود.
- پیام DeliverTX هر تراکنش را در بلاکچین تحویل میدهد. برنامهها، هر تراکنش دریافتی را با این پیام تأیید میکنند.
- پیام CheckTX برای تایید تراکنشها است. طی این پیام اعتبار یک تراکنش بررسی شده و تایید میشود.
- پیام Commit در هدر بلوک قرار میگیرد و برای انجام محاسبات رمزنگاری مورد استفاده قرار میگیرد.
Tendermint Core سه اتصال ABCI به برنامه ایجاد میکند. یکی برای اعتبارسنجی تراکنشها هنگام توزیع در mempool، یکی برای موتور اجماع برای اجرای پروپوزال بلوکها و دیگری برای تحقیق در مورد وضعیت برنامه.
ویژگیهای بالقوه الگوریتم اجماع تندرمینت
در ظاهر، الگوریتم اجماع تندرمینت مانند سایر الگوریتمهای اجماع اثبات سهام است و کاربران باید با استیکینگ رمزارزهای خود، به عنوان نود به فعالیت در این شبکه بپردازند. اما چرا بین انواع مختلف الگوریتمهای اجماع کاربران یا توسعهدهندگان باید تندرمینت را انتخاب کنند. در ادامه ویژگیهایی که باعث تمایز این الگوریتم اجماع با سایر نمونهها میشود را شرح میدهیم.
- سازگاری با بلاکچین خصوصی و عمومی: از آنجایی که الگوریتم اجماع تندرمینت به کمک هسته Tendermint Core فعالیت میکند، امکان سازگاری با بلاکچینهای خصوصی و عمومی را دارد. یعنی توسعهدهندگان بلاکچینهای خصوصی و عمومی میتوانند برای پروتکل اجماع خود، از این الگوریتم استفاده کنند.
- عملکرد فنی بالا: سازوکار الگوریتم اجماع تندرمینت سرعت ساخت بلوک را به یک ثانیه کاهش داده است. اگر زیرساختی که تندرمینت بر روی آن فعالیت میکند توانایی لازم را داشته باشد، Tendermint میتواند حجم ۱۰۰۰۰ تراکنش در ثانیه را برای تراکنشهای ۲۵۰ بایتی محقق کند.
- نهایی بودن تراکنشها: نهایی بودن به این معنی است که وقتی یک عمل خاص اجرا شد، نمیتوان آن را معکوس کرد. در حال حاضر بیت کوین و اتریوم واقعاً تسویه حساب نهایی ندارند و در حین هارد فورک یا حمله ۵۱ درصدی، احتمال معکوس شدن تراکنشها زیاد است. از سوی دیگر، Tendermint در عرض یک ثانیه پس از اتمام تراکنش، نهایی شدن فوری را تضمین میکند.
- ایمنی بالا: Tendermint نه تنها امن است، بلکه شرکتکنندگان خود را وادار میکند که در قبال اقدامات خود پاسخگو باشند. همچنین الگوریتم اجماع Tendermint به طور بهینه نسبت به خطای بیزانسی مقاوم است.
- سهولت استفاده: معماری ماژولار شبکه تندرمینت، امکان سفارشیسازی مناسب لایه کاربردی بلاکچین را فراهم میکند. این امکان را به توسعهدهندگان میدهد تا از طریق ABCI، پایگاههای کد بلاکچین را به سادگی به Tendermint پیوند دهند.
- مقیاس پذیری بالا: به دلیل توانایی عملیاتی بالا، پروتکل اجماع تندرمینت امکان تایید تراکنشها با سرعت زیاد و تعداد بالا را فراهم میکند. بنابراین از بسیاری از الگوریتمهای اجماع مقیاس پذیری بالاتری دارد.
آینده تندرمینت و تاثیر آن بر صنعت بلاکچین
Tendermint به عنوان یک موتور بلاکچین، توجه بسیاری از فعالین حوزه ارزهای دیجیتال، از توسعهدهندگان گرفته تا کاربران نهایی را به خود جلب کرده است. اگر این نرمافزار همچنان به محبوبیت خود ادامه دهد، به خوبی میتواند به عنوان ستون فقرات اینترنت بلاکچین عمل کند. همانطور که دیدیم، تعداد انگشت شماری از پروژهها در حال حاضر با Cosmos SDK برای تحقق این چشمانداز راهاندازی شدهاند و روزبهروز بر تعداد آنها افزوده میشود. الگوریتم اجماع تندرمینت نیز به عنوان هسته اصلی این برنامه فعالیت میکند که یکی از مقیاس پذیرترین الگوریتمهای اجماع در دنیای بلاکچین است. در این مقاله به صورت کامل تندرمینت و الگوریتم اجماع آن را توضیح دادیم و با روش کار و ویژگیهای آن آشنا شدیم.