پیشرفته کریپتو پدیا

هایدرا (Hydra) چیست؟ با راه‌حل مقیاس‌پذیری کاردانو آشنا شوید

ارزهای دیجیتال به دنیای ما آمدند تا جایگزینی برای سیستم مالی فعلی شوند و برای تحقق این مهم، باید سرعتی مشابه با کارت‌های اعتباری داشته باشند تا بتوان از آنها در پرداخت‌های روزانه استفاده کرد. این بدان معناست که تراکنش باید ظرف چند ثانیه انجام شود. شبکه ویزا به طور متوسط روزانه ۱۵۰ میلیون تراکنش یعنی حدود ۲۰۰۰ تراکنش در ثانیه را پردازش می‌کند. چنین ظرفیتی برای شبکه‌های بلاکچینی فعلی غیرقابل دسترسی است. توان عادی شبکه‌های مبتنی بر سازوکار اجماع اثبات کار (PoW) پایین است و شبکه‌های مبتنی بر اثبات سهام، نهایتاً می‌توانند چند صد تراکنش بر ثانیه را انجام دهند. شبکه‌های توزیع‌شده به طور کلی با مشکلاتی چون مقیاس‌پذیری پایین، توان کم و ذخیره‌سازی بیش‌ از حد تاریخچه تراکنش‌ها دست‌ و پنجه نرم می‌کنند. پس از حدود ۵ سال تلاش تحقیقاتی در شرکت IOHK، بالاخره مقاله هایدرا (Hydra) منتشر شد. دانشمندان و محققان شبکه، برنامه‌نویسی و شاخه‌های اجماع در نهایت برای رسیدن به یک راه‌حل مقیاس‌پذیری مناسب برای بلاک چین و قراردادهای هوشمند کنار یکدیگر آمدند و هایدرا پدید آمد. این یک دستاورد بزرگ علمی و نقطه عطفی در توسعه کاردانو محسوب می‌شود. هایدرا قرار است دنیای جدیدی را در مقیاس‌پذیری شبکه اجماع سهام به وجود آورد و با استفاده از این نوآوری در کنار UTxO شخصی‌سازی شده یا مدل خروجی خرج نشده تراکنش گسترده (Extended UTxO)، کاردانو به معنای واقعی کلمه می‌تواند جایگزین ارزهای فیات فعلی شود.

هایدرا (Hydra) چیست؟

هایدرا (Hydra) چیست؟

هایدرا راهکار مقیاس‌پذیری لایه دو شبکه کاردانو است که بر روی لایه پایه این شبکه اثبات سهام قرار دارد. این راه‌حل به‌گونه‌ای طراحی شده که با مدل استخر سهام مطابقت دارد. تیم IOHK مدل توسعه‌یافته‌ای از UTxO را معرفی کرده که امکان شاردینگ فضای استیکینگ بدون نیاز به شارد دفتر کل را فراهم می‌کند. با این وجود هنوز هم امکان شاردینگ در سطح دفتر کل وجود دارد و هایدرا یک مکمل برای کل راهکارهای مقیاس‌پذیری خواهد بود. هر استخر می‌تواند یک شاخه یا سر (Head) هایدرا ایجاد کند بنابراین، افزودن بر تعداد استخرها تعداد شاخه‌ها را بیشتر می‌کند. در نهایت، با افزودن شاخه‌های جدید به پروتکل می‌توان به یک مقیاس‌پذیری تقریباً خطی رسید.

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

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

رابطه بین بلاک چین و هایدرا چیست؟

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

از آنجا که امنیت لایه اول با بلاکچین و اجماع توزیع‌شده تضمین می‌گردد، می‌گوییم تراکنش‌ها به‌صورت درون زنجیره‌ای یا On-chain پردازش می‌شوند. اما کاربران می‌توانند وجوه خود را به لایه دوم منتقل کنند. تراکنش‌های لایه دوم در خارج از شبکه بلاکچینی اصلی پردازش می‌شوند که به آنها خارج زنجیره‌ای یا Off-chain گفته می‌شود. بنابراین، لایه اول تراکنش‌هایی را که در لایه دوم صورت می‌گیرد را تأیید نمی‌کند.

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

بلاکچین درنهایت تأیید می‌کند که ۳۰ کوین انتقال داده‌شده به لایه دوم به لایه اول بازگردانده شده است. در نهایت ممکن است مالکیت کوین‌ها تغییر کرده باشد. در این مثال، پس از انجام تراکنش‌ها، آلیس اکنون ۲۰ کوین و باب و کرول هرکدام ۵ کوین دارند. مزیت استفاده از راهکارهای لایه این است که کاربران می‌توانند در لایه دوم تعداد زیادی تراکنش سریع داشته باشند و بلاکچین نگرانی بابت آنها نخواهد داشت.

شمای کلی هایدرا
شمای کلی هایدرا

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

کانال‌های وضعیت Hydra

هایدرا از کانال‌های وضعیت (State channel) استفاده می‌کند که نسخه گسترده کانال‌های پرداختی هستند. طرفین برای حفظ کانال‌های وضعیت، حالت مشترک را حفظ می‌کنند و بدین شکل می‌توانند بدون تعامل با بلاکچین به توافق برسند.

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

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

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

  • جمع‌آوری سپرده شرکت‌کنندگان پیش از هر مسابقه
  • متوقف کردن پذیرش سپرده‌ها مدت کوتاهی قبل از مسابقه
  • انتظار برای نتیجه مسابقه
  • پردازش نتیجه مسابقه و مشخص کردن برنده‌ها
  • توزیع جایزه بین برندگان

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

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

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

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

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

هایدرا اما راه‌حل‌های لایه دوم را به طرز قابل‌توجهی ساده می‌کند و قادر به پذیرش راه‌حل‌های لایه یک است. مدل خروجی خرج نشده تراکنش گسترده (Extended-UTxO) و زیرساخت قرارداد هوشمند لایه اصلی کاردانو را می‌توان در هایدرا استفاده کرد. تراکنش‌های هایدرا به طور مستقیم با UTxO کار می‌کنند تا مالکیت کوین‌ها را تغییر دهند. علاوه بر این، قراردادهای هوشمندی که در بلاکچین اصلی مستقر شده‌اند می‌توانند در شاخه هایدرا بدون هیچ تبدیل داده‌ای اجرا شوند.

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

در هایدرا هیچ نیازی به تبدیل نیست چراکه هر دو لایه از یک سیستم اسکریپت نویسی استفاده می‌کنند. هایدرا کانال‌های وضعیت چند حزبی ایزومورفیک (Isomorphic multi-party state channels) را معرفی کرده است که در آن از زبان برنامه‌نویسی دفتر کل اصلی در کانال‌های وضعیت استفاده می‌شود. این بدان معنی است که هایدرا از زبان برنامه‌نویسی بلاکچین کاردانو مستقیماً استفاده می‌کند.

کانال‌های وضعیت امکان پردازش موازی تراکنش‌ها و قراردادهای هوشمند را فراهم می‌آورند و تمامی آنها خارج از زنجیره یا به صورت Off-chain صورت می‌گیرند. امکان وجود شاخه‌های بیشتر هایدرا نیز وجود دارد بنابراین هایدرا به نحوی طراحی‌شده که می‌تواند چند شاخه‌ای (Multi-headed) باشد. هر شاخه تازه ایجادشده نشان‌دهنده یک واحد موازی جدید در کنار بلاکچین است. زمانی که کانال وضعیت بسته شود، داده‌های نهایی هرکدام از این شاخه‌ها به بلاکچین منتقل می‌شوند که بسیار کار ساده‌ای است چراکه هایدرا از همان کد بلاکچین اصلی کاردانو استفاده می‌کند. جالب است بدانید حتی می‌توان قرارداد هوشمندی را بی‌آنکه در بلاکچین اصلی ثبت کرد، در هایدرا ایجاد کرد و درنهایت به دلیل یکسان بودن اسکریپت، بلاکچین اصلی کاردانو می‌تواند قرارداد هوشمند را به کار گیرد و اجرای آن را به‌صورت برون زنجیره‌ای ادامه دهد.

شاخه‌های هایدرا
شاخه‌های هایدرا

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

مدل خروجی خرج نشده تراکنش گسترده (Extended UTxO)

استفاده از مدل UTxO در هر دولایه آن‌چنان هم ساده نیست و هر دو باید برای این کار آماده شوند. استفاده از کانال‌های وضعیت ایزومورفیک مستلزم توانایی برداشتن بخشی از داده‌های بلاکچین، پردازش مستقل آن در هایدرا و در نهایت ورود مجدد آن به شبکه اصلی است. مدل UTxO مناسب این سناریو است و به‌خوبی می‌تواند درون شبکه و خارج از آن اجرا شود. با این حال، استفاده از مدل سنتی UTxO بیت کوین به دلیل محدودیت قابلیت‌های اسکریپت نویسی، در پردازش برون زنجیره‌ای مشکل ایجاد خواهد کرد. به همین خاطر، شرکت IOHK مدل توسعه‌یافته‌ای از UTxO با نام مدل خروجی خرج نشده تراکنش گسترده یا Extended UTxO را معرفی کرد که به‌خوبی از ماشین حالت (State machine) عمومی پشتیبانی می‌کند. در ادامه در رابطه با ماشین حالت توضیح خواهیم داد. تنها بدانید مدل خروجی خرج نشده تراکنش گسترده به همراه ماشین حالت امکان انتقال امن میان لایه‌ها را بدون هیچ محدودیت اسکریپت فراهم می‌کند.

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

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

در هایدرا قابلیت افزودن یا حذف تعهدات وجود دارد و بدان معنی است که UTxO ها را می‌توان بدون نیاز به بستن و یا باز کردن شاخه هایدرا از آن خارج کرد. این قابلیت بسیار سودمندی است چراکه ممکن است طرفین بیشتری به یک شاخه وارد شوند یا یکی از طرفین وجوه خود را خارج کند و در این صورت بستن شاخه غیرضروری و اضافی خواهد بود.

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

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

شباهت آسانسور و ماشین حالت
شباهت آسانسور و ماشین حالت

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

آسانسور درمجموع حالت‌های زیر را دارد:

  • در باز است
  • در بسته است
  • حرکت به سمت بالا
  • حرکت به سمت پایین
  • بی‌حرکت

گذار معتبر برای آسانسور این‌گونه خواهد بود: در بسته است -> حرکت به بالا. اجازه دهید کمی بیشتر توضیح دهیم. فرض کنید افرادی در آسانسور قرار دارند. حالت آسانسور «باز بودن در» است. حال شخصی دکمه‌ای را فشار می‌دهد و ورودی پردازش شده و در نهایت در بسته خواهد شد. ماشین حالت، وضعیت دستگاه را به «بستن در» تغییر می‌دهد. پس از آن، بالا یا پایین رفتن حالت‌های معتبری خواهند بود. اما باز بودن در و بالا یا پایین رفتن گذار نامعتبری است که هرگز اتفاق نمی‌افتاد. به عبارت دیگر، وظیفه ماشین حالت، تنها وقوع حالت‌ها و گذارهای معتبر است. مثال آسانسور مثالی ساده‌شده از ماشین حالت بود و امیدواریم ایده نحوه عملکرد آن را متوجه شده باشید.

به هایدرا بازگردیم. بخش بلاکچینی Hydra باید از دو چیز اطمینان حاصل کند:

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

۲- تسهیل انتقال وضعیت نهایی هایدرا به شبکه: این کار از انتقال ایمن UTxO ها به شبکه اصلی اطمینان حاصل می‌کند و در زمان بسته شدن شاخه رخ می‌دهد.

انتقال درست UTxO  ها
ماشین حالت از انتقال درست UTxO ها اطمینان حاصل می‌کند

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

UTxO
UTxO ها با باز شدن شاخه در بلاکچین قفل می‌شوند

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

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

پروتکل شاخه هایدرا

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

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

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

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

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

اما پردازش تراکنش‌ها در شاخه‌ها چگونه انجام می‌شود؟ پروتکل شاخه ناهمگام یا ناهمزمان است و تراکنش‌ها را به صورت موازی پردازش می‌کند. هر طرف حالت نهایی UTxO خود را حفظ می‌کند. پروتکل شاخه چندین امضا که در هر تراکنش انجام‌شده جمع‌آوری و توزیع می‌کند. زمانی که یک تراکنش تأیید می‌شود، آخرین وضعیت معتبر توزیع UTxO ها به‌روز می‌شود که برگشت‌ناپذیر خواهد بود. با این حال، به دلیل پردازش ناهمگام و ناهمزمان، ممکن است وضعیت نهایی و به‌روز شده طرفین در مقاطعی با یکدیگر متفاوت باشد. اما در کل وضعیت از وضعیت اولیه تا نهایی مدام تغییر می‌کند.

پروتکل شاخه تاریخچه تراکنش‌ها را برای به حداقل رساندن مقدار داده ذخیره‌سازی شده حفظ نمی‌کند و به جای آن، اسنپ‌ شات‌هایی (Snapshot) به طور مداوم از UTxO ها تولید می‌کند. همیشه یک اسنپ شات اصلی انتخاب می‌شود که وضعیت تأییدشده با آن مشخص می‌شود.

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

جمع‌بندی

در این مقاله تمامی تلاش بر این بود تا سؤال «هایدرا چیست» را زیر ذره‌بین برده و به آن پاسخی جامع ارائه دهیم. هایدرا آنچه را که برای پذیرش بیشتر ارزهای دیجیتال بسیار ضروری است، فراهم می‌کند و آن مقیاس‌پذیری است. بدون این ویژگی، بلاکچین‌ها به سیستم پرداختی روزانه و جهانی تبدیل نخواهند شد چراکه کاربران برای تأیید تراکنش‌ها باید مدت طولانی منتظر بمانند و اغلب نیز کارمزدهای اضافی پرداخت می‌کنند.

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

منبع
medium

نوشته های مشابه

اشتراک
اطلاع از
6 دیدگاه
جدید ترین
قدیمی ترین محبوب ترین
Inline Feedbacks
View all comments
دکمه بازگشت به بالا