Confirmation در بلاکچین چیست و چند تأیید لازم داریم؟
هر بلوکی که بعد از تراکنش شما ساخته میشود یک تأیید یا Confirmation است. ببینید تأیید با نهاییشدن چه فرقی دارد و چرا بیتکوین، اتریوم، ترون و TON و هر صرافی عدد متفاوتی میخواهند.
Confirmation یا «تأیید» یعنی تراکنش شما داخل یک بلوک ثبت شده و هر بلوک تازهای که بعد از آن ساخته شود، یک تأیید دیگر به آن اضافه میکند. عدد ثابتی برای «تأیید کافی» وجود ندارد. شبکهها قواعد متفاوتی برای نهاییشدن دارند، و هر صرافی یا کیف پول مقصد خودش تصمیم میگیرد بعد از چند تأیید واریز را به حساب شما بزند. پس عدد لازم را باید از صفحه واریز یا راهنمای همان مقصد بپرسید، نه از یک جدول کلی.
تأیید دقیقاً یعنی چه؟
وقتی تراکنشی را امضا و ارسال میکنید، اول در صف تراکنشهای منتظر شبکه (mempool) مینشیند. در این حالت صفر تأیید دارد: شبکه آن را دیده، ولی هنوز در هیچ بلوکی نیست.
به محض اینکه یک بلوک آن را در خود جا بدهد، تراکنش یک تأیید میگیرد. بلوک بعدی که روی همان زنجیره ساخته شود، تأیید دوم است و همینطور ادامه دارد. صرافی Kraken در راهنمای واریزش دقیقاً همین تعریف را میدهد: ثبت در بلوک یعنی یک تأیید، و با هر بلوک بعدی یکی اضافه میشود.
یک نکته کوچک ولی گیجکننده: همه ابزارها دقیقاً یکجور نمیشمارند. اترسکن عدد تأیید را «تعداد بلوکهای ساختهشده بعد از بلوک تراکنش» تعریف میکند. برای همین ممکن است عددی که در مرورگر بلاکچین میبینید با عدد صفحه صرافی یکی فاصله داشته باشد. این فاصله معمولاً نشانه مشکل نیست.
چرا اصلاً باید منتظر تأیید ماند؟
چون بلوک آخر زنجیره همیشه قطعی نیست. گاهی دو بلوک تقریباً همزمان ساخته میشوند و شبکه بعد از چند لحظه یکی را کنار میگذارد. اگر تراکنشی فقط در بلوکِ کنارگذاشته بوده باشد، دوباره تأییدنشده حساب میشود و در این فاصله ممکن است همان پول در تراکنش دیگری خرج شود. به این خرج دوباره (double spend) میگویند.
راهنمای توسعهدهندگان بیتکوین این ریسک را قدمبهقدم توضیح میدهد:
- صفر تأیید: بدون تحلیل ریسک نباید به آن اعتماد کرد.
- یک تأیید: ریسک خرج دوباره خیلی کم میشود، ولی بلوک آخر گاهی تصادفی جایگزین میشود.
- شش تأیید: حدود یک ساعت کار شبکه روی تراکنش انباشته شده و جایگزینکردن شش بلوک به سهم بسیار بزرگی از قدرت پردازش شبکه نیاز دارد. خود این راهنما میگوید عدد شش «تا حدی دلبخواهی» است؛ یک عرف رایج است، نه قانون شبکه.
هرچه تراکنش زیر بلوکهای بیشتری دفن شود، برگرداندنش گرانتر و بعیدتر میشود. صرافیها برای همین صبر میکنند: اگر واریزی را زود به حساب بزنند و بعد آن تراکنش از زنجیره حذف شود، ضرر را خودشان میدهند.
تأیید با نهاییشدن (Finality) یکی نیست
تأیید یک شمارنده است؛ نهاییشدن یعنی نقطهای که دیگر عملاً نمیشود تراکنش را برگرداند. شبکهها برای رسیدن به این نقطه دو راه متفاوت دارند.
نهاییشدن احتمالی: بیتکوین
در بیتکوین هیچ لحظهای نیست که پروتکل بگوید «از این به بعد قطعی است». فقط با هر بلوک جدید احتمال برگشت کمتر میشود. به همین دلیل در بیتکوین عدد تأیید واقعاً معنا دارد و هر سرویس بسته به مبلغ و ریسک، آستانه خودش را انتخاب میکند. با میانگین حدود ۱۰ دقیقه برای هر بلوک، شش تأیید تقریباً یک ساعت طول میکشد.
نهاییشدن صریح: اتریوم، ترون و TON
در این شبکهها قواعد اجماع مشخص میکند بلوک از چه لحظهای نهایی حساب شود:
- اتریوم: اعتبارسنجها در بازههای ۱۲ ثانیهای بلوک میسازند و روی بلوکهای «نقطه بازرسی» (checkpoint) رأی میدهند. وقتی دو نقطه بازرسی پشتسرهم رأی دستکم دوسوم اتر سپردهشده را بگیرند، بلوک «finalized» میشود. کسی که بخواهد چنین بلوکی را برگرداند، باید از دست دادن دستکم یکسوم کل اتر سپردهشده را بپذیرد. طبق ethereum.org این فرایند حدود ۱۵ دقیقه طول میکشد.
- ترون: طبق مستندات ترون تراکنش وقتی کامل تأییدشده است که بلوکش «solidified» شود، یعنی دستکم ۱۹ نماینده فعال شبکه (Super Representative) از آن بلوک جلوتر رفته باشند. این معمولاً حدود یک دقیقه طول میکشد و تا قبل از آن، تراکنش از نظر تئوری میتواند در یک انشعاب حذف شود.
- TON: مستندات TON میگوید تراکنش بعد از ثبت در یک بلوک masterchain برگشتناپذیر است. بعد از ارتقای Catchain 2.0 در فروردین ۱۴۰۵، هدف این تأخیر حدود یک ثانیه است. همانجا توصیه شده سرویسها برای کارهای حساس منتظر وضعیت «finalized» بمانند، نه صرفاً «confirmed».
با این حال خیلی از صرافیها برای این شبکهها هم روی صفحه واریز عددی مثل «N تأیید» مینویسند. آن عدد انتخاب خود صرافی است و ممکن است کمی بالاتر یا پایینتر از نقطه نهاییشدن پروتکل باشد.
چرا هر صرافی عدد متفاوتی میخواهد؟
عدد تأییدِ صفحه واریز را پروتکل تعیین نمیکند؛ خود سرویس مقصد تعیین میکند. چند چیز روی این انتخاب اثر دارد:
- سرعت بلوکسازی شبکه. اگر بلوکهای یک شبکه فرضی هر سه ثانیه ساخته شوند، ۱۰ تأیید حدود نیم دقیقه است؛ همین ۱۰ تأیید در بیتکوین بیش از یک ساعت طول میکشد.
- نوع نهاییشدن. جایی که نهاییشدن احتمالی است، صرافی باید خودش حاشیه امن بگذارد. جایی که پروتکل نهاییشدن را اعلام میکند، صرافی میتواند به همان تکیه کند یا کمی بیشتر صبر کند.
- تحمل ریسک و سابقه شبکه. سرویسی که مبالغ بزرگ میگیرد یا روی یک شبکه تجربه بدی داشته، عدد بالاتری میگذارد.
- شبکه، نه فقط رمزارز. تتر روی ترون، اتریوم یا TON سه تراکنش روی سه بلاکچین متفاوت است. عدد لازم برای هر شبکه جداست.
یک مثال واقعی برای اینکه ببینید این عدد انتخابی است: راهنمای Kraken در بازدید ما در ۳ مهر ۱۴۰۵ نوشته بود واریز بیتکوین را بعد از چهار تأیید، یعنی حدود ۴۰ دقیقه، به حساب میزند؛ کمتر از عرف شش تأیید. صرافی دیگری ممکن است عدد دیگری بگذارد و هر صرافی هم ممکن است عددش را عوض کند. برای همین در این مطلب جدول عدد صرافیها نمیگذاریم.
زمان انتظار را چطور حدس بزنیم؟
یک حساب سرانگشتی کمک میکند:
زمان تقریبی ≈ زمان رسیدن به اولین بلوک + (تأیید لازم × میانگین زمان هر بلوک)
فرض کنید صرافی مقصد برای بیتکوین شش تأیید بخواهد و تراکنش شما با کارمزد کافی در اولین بلوک بعدی ثبت شود. حدود یک ساعت منتظر میمانید. اگر کارمزد کم گذاشته باشید و تراکنش چند بلوک در صف بماند، همان مدت به اول کار اضافه میشود. Kraken هم در همان صفحه یادآوری میکند که گاهی ساختهشدن یک بلوک بیتکوین ۳۰ یا حتی ۶۰ دقیقه طول میکشد. این عددها فقط برای نشان دادن روش حساباند، نه قول زمانی.
در مرورگر بلاکچین چه ببینید و چه کنید؟
با TXID تراکنش صفحه آن را در مرورگر همان شبکه باز کنید و وضعیت را با این جدول بسنجید:
آنچه میبینید | یعنی | کار شما |
|---|---|---|
تراکنش پیدا نمیشود | هنوز به شبکه نرسیده یا شبکه یا مرورگر اشتباه است | شبکه و TXID را دوباره چک کنید؛ اگر برداشت از صرافی است، از مبدأ بپرسید |
Pending یا صفر تأیید | در صف است و هنوز در بلوکی نیست | صبر کنید؛ کارمزد پایین میتواند این مرحله را طولانی کند |
موفق، ولی تأییدها کمتر از عدد مقصد | در بلوک ثبت شده و در حال شمارش است | صبر کنید تا به عدد صفحه واریز مقصد برسد |
موفق و تأییدها بیشتر از عدد مقصد، ولی موجودی شارژ نشده | مشکل از شمارش تأیید نیست | آدرس، شبکه، توکن، حداقل واریز و ممو را چک کنید و راهنمای «تتر فرستادم ولی نرسیده» را دنبال کنید |
Failed یا ناموفق | تراکنش ممکن است در بلوک ثبت شده و تأیید هم گرفته باشد، ولی انتقال انجام نشده و کارمزدش معمولاً رفته | صبر کردن فایده ندارد؛ علت را از مبدأ یا کیف پول بپرسید |
اگر مقصدتان حساب سواپولت دیگری است، انتقال به مخاطبان سواپولت طبق راهنمای فعلی آنی است، چون به آدرس بیرونی روی بلاکچین فرستاده نمیشود. برای این نوع انتقال، شمردن تأیید معنا ندارد.
پرسشهای رایج
چند تأیید لازم است تا واریزم به حساب بیاید؟
عدد عمومی وجود ندارد. صرافی یا کیف پول مقصد برای هر شبکه عدد خودش را دارد. آن را در صفحه واریز یا راهنمای همان سرویس ببینید، یا از پشتیبانیاش بپرسید.
تعداد تأییدها بالا رفته ولی صرافی هنوز واریز را نشان نمیدهد. چرا؟
اگر تعداد تأییدها از عدد اعلامشده مقصد گذشته، دلیل دیگری در کار است: آدرس یا شبکه اشتباه، توکن نامعتبر، مبلغ کمتر از حداقل واریز یا ممو جاافتاده. راهنمای تتر نرسیده این موارد را قدمبهقدم بررسی میکند.
میشود با کارمزد بیشتر تأییدها را سریعتر کرد؟
کارمزد بالاتر شانس ثبت زودتر در اولین بلوک را بیشتر میکند. اما بعد از ثبت، بلوکها با سرعت خود شبکه ساخته میشوند و کارمزد روی سرعت شمارش تأییدهای بعدی اثری ندارد.
تراکنشی که یک تأیید گرفته ممکن است برگردد؟
در شبکهای مثل بیتکوین بله؛ احتمالش کم است ولی صفر نیست. برای همین بسیاری از مقصدها بیشتر از یک تأیید صبر میکنند. در شبکههایی که نهاییشدن صریح دارند، بعد از نهاییشدن برگشت عملاً ممکن نیست.
اگر تراکنش Failed شده باشد، با گذشت زمان درست میشود؟
نه. تراکنش ناموفق ممکن است در بلوک ثبت شده باشد و تعداد تأییدهایش هم بالا برود، اما انتقال انجام نشده و بیشتر شدن تأییدها چیزی را عوض نمیکند. معمولاً باید تراکنش جدیدی ثبت شود؛ اگر برداشت از صرافی بوده، وضعیت را از پشتیبانی همان مبدأ بپرسید.
دفعه بعد که واریزی به صرافی میفرستید، قبل از ارسال عدد تأیید لازم را در صفحه واریز مقصد ببینید و با میانگین زمان بلوک آن شبکه مقایسه کنید. همین یک نگاه معلوم میکند چند دقیقه انتظار طبیعی است و از کجا به بعد باید دنبال مشکل بگردید.