
وقتی که در بلاکچین تراکنشی انجام میدهید، باید زمانی را برای نهایی شدن آن منتظر بمانید. این زمان بسته به مکانیزم اجماع و به طور کلی سازوکار شبکه، میتواند از چند ثانیه تا چند روز متغیر باشد. از این مدتزمان با نام فاینالیتی (Finality) یاد میشود. البته فاینالیتی در امور مالی سنتی هم کاربرد دارد و مفهومی نیست که صرفا با بلاکچین در ارتباط باشد. در این مطلب از میهن بلاکچین، پس از بیان توضیحات ابتدایی در مورد این مفهوم و بررسی تفاوت فاینالیتی در بلاکچین و امور مالی سنتی، نگاهی هم به انواع آن خواهیم داشت تا بهتر بفهمیم که چرا قطعی شدن تراکنش روی برخی شبکهها، زمان زیادی میطلبد.
نکات مهم مقاله: 🔸فاینالیتی زمانی است که باید سپری شود تا از عدم تغییر و برگشتپذیری بلاکها در بلاکچین اطمینان حاصل کنیم. 🔸در شبکههای مبتنی بر گواه اثبات کار که بر مبنای طولانیترین زنجیره عمل میکنند، هرچه تراکنش در عمق بیشتری قرار بگیرد، نهایی شدنش قطعیت بیشتری پیدا میکند. 🔸در بلاکچینهای گواه اثبات سهام، درصد مشخصی از ولیدیتورها باید همزمان اقدام به اعتبارسنجی یک بلاک مشخص کنند. 🔸در شبکههای لایه دو که از رولاپ آپتیمیستیک استفاده میکنند، زمان نهایی شدن بلاک ممکن است تا یک هفته هم طول بکشد. 🔸در شبکههایی که از رولاپهای دانش صفر بهره میبرند، زمان فاینال شدن بلاک بسیار کم است. 🔸فاینالیتی در بیت کوین چیزی حدود ۶۰ دقیقه طول میکشد. 🔸نهایی شدن تراکنش در اتریوم تقریبا ۱۰ الی ۱۵ دقیقه زمان میبرد. 🔸Finality در آربیتروم حداکثر چند دقیقه طول میکشد. |
فاینالیتی چیست؟
فاینالیتی به معنای اطمینان از برگشتناپذیری و عدم تغییر تراکنشهای بلاکچین است. اگر تاکنون تراکنشی انجام داده باشید، دیدهاید که تراکنش پیش از تایید تعداد مشخصی از بلاکها در کیف پول یا حساب صرافیتان نمایش داده نمیشود. این مسئله دقیقا به دلیل وجود مسئلهای به نام Finality است. زمان نهایی شدن یا Time to Finality (به اختصار TTF) برای تخمین و بررسی سرعت بلاکچینها، گزینهای مهم است.
در امور مالی سنتی این مفهوم بیشتر به معنای تسویه مبالغ در نظر گرفته میشود. این یک موضوع حیاتی است؛ چرا که هرچه تسویه یک تراکنش طولانیتر شود، احتمال وقوع ریسکهای مختلف و اقدامات مخرب بازیگران بدکار نیز در این میان افزایش پیدا میکند.
نهایی شدن تسویه تراکنش این اطمینان را میدهد که تراکنشها بالاخره در نقطهای تکمیل خواهند شد و خیالمان بابت قطعیت آن راحت میشود. این همان فاکتوری است که به میزان زیادی موجب اعتماد کاربران میشود. آیا میتوانید به بانکی اعتماد کنید که به راحتی در تاریخچه تراکنشهای شما دست میبرد و آنها را تغییر میدهد؟ پس فاینالیتی معادل قطعیت در انجام تراکنش و عدم امکان برگشتپذیری است؛ طوری که حتی خود بانک هم دیگر نتواند چیزی را تغییر بدهد.
این مسئله را هم باید در نظر داشت که بلاکچینی که تراکنشهای زیادی را در یک بلاک واحد جا میدهد، میتواند TPS (تعداد تراکنشها در ثانیه) بالایی داشته باشد؛ اما این موضوع لزوما به معنای سریع بودن این بلاکچین در نظر کاربر نیست. همچنین فاینالیتی را نباید با مفهوم زمان بلاک (Block Time) یکسان در نظر بگیرید. این را هم باید به یاد داشته باشید که تراکنشها را فقط به این دلیل که در بلاکهای جدید تایید شدهاند، نمیتوان نهایی در نظر گرفت.
انواع فاینالیتی در بلاکچین
مفهوم Finality در بلاکچین کمی متفاوتتر از چیزی است که به نظر میرسد. از آنجا که در بلاکچین خبری از واسطهها نیست، نیاز به چیزی داریم که از برگشتناپذیری و تکمیل تراکنشها خبر بدهد و خیالمان را آسوده کند. میدانیم که وقتی بلاکی به بلاکچین اضافه شود، دیگر نمیتوان آن را تغییر داد یا لغو کرد. کاربر باید منتظر بماند تا تعداد بلاک مشخصی تایید شود که این موضوع خبر از نهایی شدن تراکنش میدهد.
انواع نهایی شدن را معمولا با توجه به مکانیزم اجماع دستهبندی میکنند. همچنین بلاکچینهای لایه دو نیز مکانیزم متفاوتی برای نهایی شدن دارند. در ادامه کمی در مورد انواع فاینالیتی توضیح میدهیم.
فاینالیتی در شبکههای اثبات کار (PoW)
در شبکههای PoW فاینالیتی زمانی به دست میآید که بلاکهای بیشتری ساخته شوند. برگشت خوردن پرداختهای انجامشده در بلاکهای قدیمیتر، به سختی انجام میشود. پس هرچه تراکنشها به اصطلاح عمیقتر شوند (یعنی بلاکهای جدید ایجاد شوند)، احتمال برگشت خوردن تراکنش کم و کمتر میشود.
در گواه اثبات کار با مفهومی به نام طولانیترین یا سنگینترین زنجیره (Longest Chain) سروکار داریم. در این سازوکار وقتی ماینرها بلوکی را ماین میکنند، آن را به طولانیترین زنجیره موجود اضافه میکنند. این مسئله این نکته را بازگو میکند که در هر لحظه ممکن است بیشتر از یک زنجیره وجود داشته باشد. در چنین شرایطی، زنجیره میتواند به دو فورک مختلف تقسیم شود و ماینرهای مختلف بلوکهایی را به صورت همزمان در هر زنجیره ماین کنند.
وقتی دو ماینر یک بلاک واحد را در یک زمان منتشر میکنند، دو مسیر مجزا ایجاد میشود. در این شرایط هر دو فورک همچنان به عملیات اعتبارسنجی بلوکها ادامه میدهند و بلوکهای جدید نیز به زنجیرهها اضافه میشوند. بلاکهای جدید تا زمانی به شبکه اضافه میشوند که یک زنجیره، طولانیتر از زنجیره دیگر شود. زمانی که طولانیترین زنجیره شناسایی شود، به صورت رسمی پذیرفته میشود. به این ترتیب تراکنشهای روی زنجیره کوتاهتر مردود میشوند. البته این احتمال هم وجود دارد که تراکنشهای ردشده در زنجیره کوتاهتر، در بلوکهای زنجیره دیگر قرار گرفته باشند. زنجیره طولانی همان زنجیرهای است که بیشترین بلاکهای معتبر را در دل خود جای داده است.
در مورد بیت کوین کاربران باید ۶ بلاک برای نهایی شدن تراکنش منتظر بمانند که چیزی حدود یک ساعت طول میکشد. پس از این مدت است که فاینالیتی در این شبکه حاصل خواهد شد. در شبکههای مبتنی بر زنجیره (مثل همین بیت کوین)، برای این مدل فاینالیتی از اصطلاح Probabilistic Finality هم استفاده میشود.
فاینالیتی در شبکههای اثبات سهام (PoS)
بلاکچینهایی که بر مبنای گواه اثبات سهام کار میکنند، مکانیزمهای متفاوتی برای دسترسی به فاینالیتی دارند. اثبات سهام ممکن است به شیوههای مختلفی مثل DPoS ،PoA یا غیره اجرا شود که با توجه به سازوکار هر یک، میتوان به فاینالیتی نیز دست پیدا کرد.
در اتریوم فاینالیتی به معنای تضمین این مسئله است که بلاک بدون سوزاندن دستکم ۳۳ درصد از کل اترهای استیکشده، قابل تغییر یا حذف از روی بلاکچین نباشد. در این شبکه با مفهومی به نام SSF مواجهیم که مخفف Single Slot Finality است و به معنای فاینالیتی در یک اسلات واحد است. در اتریوم ۱۵ دقیقه طول میکشد تا هر بلاک نهایی شود و مفهوم SSF به این مسئله اشاره دارد که به جای ۱۵ دقیقه صبر کردن، بلاکها میتوانند در همان اسلات، پیشنهاد و نهایی شوند.
اتریوم به این سوال پاسخ داده که چرا فاینالیتی سریعتر اهمیت بالایی دارد؛ هرچه فاصله میان پیشنهاد بلاک و فاینالیتی زیادتر شود، حملهکننده میتواند بلاکهای مشخصی را سانسور کند یا به استخراج MEV بپردازد. زمان کوتاهتر برای فاینالیتی نیازمند قدرت محاسباتی بالاتر برای هر نود است؛ چرا که باید فرایند تصدیق بلاکها با سرعت بیشتری اتفاق بیفتد.
در چنین سازوکاری فاینالیتی زمان میبرد. دلیلش هم این است که ولیدیتورهایی که نماینده دو سوم اترهای استیکشده روی شبکه هستند، باید به بلاک رای دهند (تصدیق یا همان Attest) تا آن بلاک نهایی در نظر گرفته شود. هر نود ولیدیتور باید نودهای دیگر را تصدیق کند تا ببیند که آیا آنها به آن میزان دو سوم دست پیدا کردهاند یا نه. برای برگشت زدن یک بلاک نهاییشده، حملهکننده باید دستکم یکسوم اترهای استیکشدهاش را از دست بدهد. چرا که گفتیم فاینالیتی نیازمند دو سوم اکثریت رای ولیدیتورهاست و اگر یک حملهکننده بخواهد جلوی این مسئله را بگیرد، باید دستکم نیمی از این دوسوم را وسط بگذارد.
از فاینالیتی در شبکههای اثبات سهام تحت عنوان Absolute Finality هم یاد میشود که بر اساس تحمل خطای بیزانس عملی (pBFT) ارائه شده است. در این سیستمها به محض اینکه بلاک و تراکنشها اعتبارسنجی شوند، فاینالیتی نیز حاصل میشود.
فاینالیتی در لایه دوها
راهکارهای لایه دو نیز بسته به اینکه از چه مکانیزمی استفاده میکنند، شیوه متفاوتی برای Finality دارند. نحوه کار رولاپها به این صورت است که تراکنشها را به صورت گروهی با هم جمع میکنند و آنها را در یک سوپربلاک واحد جای میدهند. این همان بلاکی است که قرار است به بلاکچین اضافه شود. حالا برای اینکه رولاپها هم بتوانند با سرعتی بالا تراکنشها را فاینال کنند، باید از تکنیکهای ویژه رمزگذاری همچون اسنارک یا گواه دانش صفر استفاده کنند. وقتی تراکنشها به صورت برونزنجیرهای پردازش شوند، زمان موردنیاز برای تایید بلاکها کاهش پیدا میکند. به جای منتظر ماندن برای اضافه شدن بلاک به زنجیره، نتایج تراکنشها تقریبا به صورت سریع روی زنجیره اصلی منتشر میشوند. این مسئله در رولاپها با نام Fast Finality یا فاینالیتی سریع شناخته میشود که یک ویژگی کلیدی برای این فناوری به شمار میرود.
شبکه آربیتروم به منظور کاهش زمان فاینالیتی، از ولیدیتورها برای اعتبارسنجی تراکنشهایش استفاده میکند. یعنی به جای منتظر ماندن به منظور ماین شدن بلاک و اضافه شدن آن به زنجیره، تعدادی ولیدیتور انتخاب میشوند تا تراکنشها را پردازش و نتیجه آن را به زنجیره اصلی ارسال کنند.
به طور کلی در لایه دوهایی که از رولاپها بهره میبرند، تراکنشها باید منتظر بمانند تا در نهایت از لایه دو به لایه یک منتقل شوند. در واقع آنچه که در لایه دوها به عنوان فاینالیتی شناخته میشود، مدت زمان انتقال از لایه دو به لایه پایه است. در شبکهای مثل متیس که از رولاپ آپتیمیستیک استفاده میکند، این زمان طولانیتر است که این مسئله به مکانیزم این رولاپها برمیگردد. در چنین سازوکاری که از Fault Proof (که قبلا با نام گواه اثبات تقلب یا Fraud Proof شناخته میشد) بهره میگیرد، کاربران باید منتظر سپری شدن زمان چالش (Challenge Period) باشند که تقریبا هفت روز طول میکشد. در رولاپهای خوشبینانه فرض بر این است که بازیگران صادق و درستکار هستند؛ مگر اینکه خلافش ثابت شود. در این بازه زمانی هفتروزه کاربران میتوانند نتایج تراکنشهای یک رولاپ را به چالش بکشند. در صورتی که Fault Proof موفق شود، تراکنش مذکور حذف و با تراکنش صحیح دیگری جایگزین میشود. این امر به دلیل حفظ امنیت در شبکه و اطمینان از درست بودن فرایند اعتبارسنجی تراکنشها صورت میگیرد.
در شبکههایی که از رولاپ دانش صفر (ZK-Rollup) بهره میبرند، سرعت نهایی شدن بلاکها بسیار بیشتر است. در شبکههای مبتنی بر دانش صفر، تراکنشهای لایه دو در صورتی نهایی قلمداد میشوند که قرارداد موجود در لایه یک، گواه اثبات اعتبار را بپذیرد. در چنین شبکههایی، اعتبارسنجی از طریق گواه اثبات اعتبار (Validity Proof) انجام میشود که زمان بسیار کمتری را برای اثبات صحیح بودن یک تراکنش نیاز دارند. دلیل این امر را میتوان در تفاوت میان این دو رولاپ جستجو کرد. جایی که در سازوکار آپتیمیستیک، نیازی به ارسال آنچین تمامی دادهها نیست. همین مسئله باعث کاهش زمان اعتبارسنجی میشود.
سوالات متداول (FAQ)
اصطلاحی است که به اطمینان از قطعی شدن تراکنش و برگشتناپذیری آن در شبکههای بلاکچینی اشاره دارد.
Finality را میتوان با توجه به مکانیزم اجماع به دو دسته فاینالیتی در PoW (با نام Probabilistic Finality) و فاینالیتی در PoS (با نام Absolute Finality) تقسیم کرد.
جمعبندی
زمانی که کالایی را با وجه نقد میخریم، فروشنده همان لحظه پول را از ما دریافت میکند. این به معنای تمام شدن و قطعی شدن آن معامله یا تراکنش است. در بلاکچین نیز فاینالیتی (Finality) مدتزمانی است که باید طی شود تا مطمئن شویم تراکنش برگشتناپذیر و غیرقابل حذف شدن است. در سیستمهای گواه اثبات کار، باید تعدادی بلاک تایید شوند تا مطمئن شویم که تراکنش روی طولانیترین زنجیره قرار گرفته و دیگر برگشت نمیخورد. در شبکههای اثبات سهام مثل اتریوم نیز باید ۶۶ درصد ولیدیتورها بلاک را تایید کنند تا فاینالیتی حاصل شود. در بلاکچینهای لایه دو فاینالیتی بیشتر به زمانی اشاره دارد که دادهها از لایه دو به لایه پایه منتقل میشوند. از میان شبکههایی که با آنها کار کردهاید، کدامیک سریعتر بودهاند و فاینالیتی آنها با سرعت بیشتری انجام شده است؟ کدام شبکهها کندتر بودهاند؟ تجربه خود را در استفاده از بلاکچینهای مختلف برای ما بنویسید.