آنچه در این مقاله خواهید خواند
لغو تراکنش اتریوم در حالت تایید نشده امکانپذیر است. میتوان تراکنش معلق یا Pending اتریوم را در کیف پول کوینومی و تراست والت کنسل یا جایگزین کرد.
در صورت استفاده از شبکه اتریوم، احتمالا تاکنون با تراکنشی دارای زمان تایید بیشتر از حد معمول، مواجه شدهاید. دلیل این تاخیر، نحوه اولویتبندی تراکنشها توسط ماینرهای Ethereum است؛ معاملات دارای گس بالاتر، زودتر از بقیه مورد بررسی قرار میگیرند. در نظر داشته باشید تا زمانی که یک تراکنش در حالت تایید نشده قرار دارد، امکان لغو یا جایگزین کردنش در اتریوم وجود دارد.
اگر تراکنش شما در شبکه اتریوم، به خاطر گس (کارمزد) پایین برای مدتی طولانی در صف بررسی و تایید معطل مانده است، تا زمان کاهش کارمزدها و پردازش معامله شما به دست یک ماینر مجبور به انتظار هستید. خوشبختانه میتوان برای سرعت دادن به فرآیند بعد از شروع آن، تراکنش تایید نشده را با گزینهای جدید (که گس بالاتری دارد) جایگزین کرد. اگرچه در نگاه اول این کار سخت به نظر میرسد، اما لغو یا جایگزین کردن تراکنش اتریوم در حالت تایید نشده یا همان Pending بسیار راحت است. خوشبختانه انجام این کار برای تمام معاملات خرید و فروش اتریوم و توکنهای ERC-20 امکانپذیر است.
مقدمه
ابتدا باید نکته مهمی را یادآوری شویم. در این مطلب به بررسی نحوه لغو تراکنش تایید نشده اتریوم یا جایگزین کردن آن با موردی جدید میپردازیم. در بلاک چین، اگر معاملهای تایید و نهایی شده باشد، کنسل کردن، جایگزین کردن یا برگشت زدن آن هرگز امکانپذیر نیست. یکی از ویژگیهای منحصربهفرد بلاک چین، غیر قابل برگشت بودن تراکنشها بعد از ثبت است.
وقتی ترافیک در نتورک بالا میرود، تعدادی از معاملات همینطور معطل و در وضعیت Pending باقی میمانند. وقتی تعداد تراکنشهای در حالت تایید نشده بسیار بالا است، این امکان وجود دارد که نهایی شدن معامله شما چند ساعت و در برخی مواقع چند روز زمان ببرد.
گاهی اوقات مشکل بدون اقدام از سوی کاربر حل میشود؛ با ناموفق شدن و برگشت خوردن تراکنش معلق یا تایید آن به خاطر کاهش گس، انتظار به پایان خواهد رسید. اگرچه به معنای واقی نمیتوان یک تراکنش اتریوم را کنسل کرد، اما با چند اقدام، قادر به بالا بردن سرعت انجام فرآیند خواهید بود. در حقیقت، این کار شامل جایگزین کردن یک تراکنش در انتظار تایید با یک تراکنش دارای کارمزد بالاتر است.
در این مطلب قصد داریم به بررسی نحوه افزایش زمان انجام یک تراکنش در شبکه اتریوم، با استفاده از کیف پول ارز دیجیتال متامسک یا تراست والت، بپردازیم. البته استفاده از سایر والتهای با پشتیبانی از بلاک چین اتریوم نیز امکانپذیر است، اما درون آنها، فرآیند به شکلی متفاوت انجام میشود.
پیش از شروع آموزش چگونگی لغو یا جایگزین کردن تراکنش در حالت تایید نشده یا معلق اتریوم یک کیف پول متامسک یا تراست ولت نصب و سپس عبارت بازیابی (Seed Phrase) والت را یادداشت کنید. دسترسی به اینترنت ضروری است. برای دانلود کیف پول متامسک به وب سایت metamask.io و برای دانلود کیف پول تراست والت به آدرس trustwallet.com مراجعه کنید.
چرا تراکنش من در اتریوم معلق و در انتظار تایید باقی مانده است؟
برخلاف سیستم بانکی متمرکز و سنتی، که کارمزد انتقال وجه به صورت مبلغی ثابت توسط مرجع کنترلکننده آن تعیین میشود، در اینجا با یک سیستم پیشنهادی (مزایدهای) سر و کار داریم. کارمزد پرداختی توسط شما، به پیچیدگی تراکنشتان بستگی دارد؛ به عبارتی تحلیل و تایید درخواست شما، نیازمند چقدر قدرت پردازشی است؟ برای درک بهتر مطلب، ابتدا باید با سه اصطلاح مهم هزینه گس (Gas Cost)، قیمت گس (Gas Price) و محدودیت گس (Gas Limit) آشنا شوید.
کار محاسباتی یک تراکنش با هزینه گس اندازهگیری میشود، اما قیمت پرداختی برای هر واحد Gas، قیمت گس نام دارد. میتوان هزینه گس به مقدار کار مورد نیاز تشبیه کرد. در اینجا، قیمت گس پول پرداختی به ازای هر ساعت کار است. در نهایت به اصطلاح سوم یعنی محدودیت گس میرسیم که حداکثر مقدار (کارمزد) مورد نظر شما به منظور پرداخت برای یک تراکنش است. در صورت عدم تعیین این موارد به درستی، در نهایت مجبور به لغو یا جایگزین کردن تراکنش تایید نشده خود در اتریوم خواهید شد.
اگرچه Gas Cost بر اساس پیچیدگی معامله شما تعیین میشود، اما دستتان برای مشخص کردن Gas Price و Gas Limit باز است. کل کارمزد پرداختی، به عنوان مشوقی برای ماینرهای استخراج اتریوم عمل خواهد کرد. با این حال، اگر قیمت گس را بیش از اندازه پایین در نظر بگیرید، به احتمال زیاد در لیست اولویتها پشت سر کاربران با تراکنشهای دارای کارمزد بالاتر قرار خواهید گرفت. در این شرایط، تراکنش همینطور در حالت تایید نشده باقی خواهد ماند، به طوری که شاید در نهایت مجبور به لغو یا جایگزین کردن آن شوید. در نظر داشته باشید وقتی یک معامله همینطور معلق باقی بماند، شبکه Ethereum تا زمان تایید شدنش توسط یک ماینر، سایر معاملات ایجاد شده از همان کیف پول ارز دیجیتال را تایید نخواهد کرد.
برای درک بهتر نحوه اولویتبندی و تایید تراکنشها در اتریوم، باید بیشتر با مفهوم Gas در این اکوسیستم آشنا شوید. اگر صرفا به دنبال یادگیری چگونگی کنسل یا جایگزین کردن تراکنش معلق و تایید نشده در اتریوم هستید، مستقیما به قسمت بعدی مطلب بروید.
گس اتریوم چیست؟
گس در اتریوم کارمزد پرداختی به منظور اجرای موفق یک قرارداد هوشمند یا تراکنش است. پایه انجام تمام اعمال در Ethereum همان Gas است. گس واحدی است که مقدار تلاش محاسباتی مورد نیاز به منظور اجرای اعمال خاص را محاسبه میکند. انجام هر عملیات در این اکوسیستم بزرگ مثل پردازش و تایید یک تراکنش، اجرای یک قرارداد هوشمند یا اجرای یک عرضه اولیه سکه (ICO)، به مقداری Gas نیاز دارد. ماینرهای مسئول پردازش عملیاتهای مختلف، دستمزد یا همان پاداش خود را در قالب اتر، رمز ارز اختصاصی پلتفرم Ethereum، دریافت میکنند. این مقدار معادل کل گس مورد نیاز برای انجام یک عمل خاص است.
به زبان ساده، Gas نیرو و خون حیات جاری در رگهای اکوسیستم عظیم اتریوم است. انجام هر کاری در اتریوم هزینه خاص خود را دارد و این هزینه با گس محاسبه میشود. Gas برای تخصیص منابع ماشین مجازی اتریوم (EVM) مورد استفاده قرار میگیرد. اگر قیمت گس را مناسب تعیین نکنید، احتمالا مجبور به لغو تراکنش اتریوم به خاطر گیر کردن در حالت تایید نشده، خواهید شد. نکته حائز اهمیت برای جلوگیری از بروز مشکل و اطمینان از پردازش به موقع عملیات، تعیین محدودیت گس مناسب است.
دلیل تعیین محدودیت گس چیست؟
یک کاربر، به منظور انجام یک عمل مشخص در اتریوم، میبایست محدودیت گس را قبل از ارسال درخواست به شبکه تعیین کند. Gas Limit، حداکثر هزینه مورد نظر ارسالکننده به منظور پرداخت برای پردازش یک تراکنش است. حین تعیین محدودیت گس میبایست چند نکته را مد نظر داشت. با توجه به این نکات، احتمال نیاز بعدی به لغو تراکنش اتریوم کم خواهد شد:
- اعمال مختلف، هزینه گس متفاوتی دارند.
- هر زمان گس تعیین شده توسط ارسالکننده تمام شود، ماینر، پردازش درخواست را متوقف میکند.
- در صورتی که بعد از اتمام موفق اجرای قرارداد هوشمند چیزی از گس باقی مانده باشد، به حساب ایجادکننده عملیات بازگردانده میشود.
تعیین Gas Limit از دو حالت خارج نیست؛ رقمی بالاتر از مقدار مورد نیاز یا عددی پایینتر از آن تعیین کنید. اگر قبل از انجام موفقیتآمیز عملیات، سوخت به پایان برسد، با وجود تلف شدن مقداری اتر، تراکنش نهایی و ثبت نخواهد شد. از طرفی، اگر به خیال بازگشت باقیمانده به والت بعد از اتمام کار رقمی بسیار بالا برای محدودیت گس تعیین کنید، ممکن است به خاطر افزایش ناگهانی Gas در شبکه یا گیر کردن قرارداد هوشمند شما در یک لوپ، کل آن مصرف شود.
برای حرکت دادن یک خودرو به اندازه X مایل، به Y لیتر سوخت احتیاج داریم. انتقال X دلار از طریق ایجاد یک تراکنش بانکی نیز نیازمند Y دلار کارمزد است. در هر دو مثال، X هدف است. حال برای رسیدن به این هدف باید به مقدار Y هزینه کنیم. به شکلی مشابه، اجرای یک قرارداد هوشمند یا تراکنش در اتریوم هدف ما محسوب میشود. تصور کنید هدف، ارسال 50 واحد رمز ارز اتر است. این کار به هزینهای نیاز دارد که در هر زمان ممکن است متفاوت باشد. در صورت مشخص کردن صحیح گس دیگر نیازمند لغو یا جایگزین کردن تراکنش Pending اتریوم نخواهید بود.
تصویر زیر، بخشی از یلوپیپر (YellowPaper) اتریوم است. به کمک آن میتوان به یک دید کلی و تقریبی درباره هزینه اجرای یک سری دستورالعمل روی EVM دست پیدا کرد. بر اساس این جدول، محدودیت گس هر تراکنش 21 هزار واحد Gwei است.
هزینه گس پیشنهادی بر اساس سرعت دلخواه انجام تراکنش در اتریوم، طبق وب سایت ethgasstation.info به صورت زیر است. این ارقام مربوط به وضعیت شلوغی شبکه در روز اول اردیبهشت 1400 است و با افزایش یا کاهش قیمت لحظه ای اتریوم که به تغییر حجم معاملات آن منجر میشود، طور مستمر تغییر پیدا میکند. برای پی بردن به جدیدترین ارقام در هر زمان به وب سایت ethgasstation.info مراجعه کنید:
- تریدر (در اسرع وقت): 131
- سریع (زیر 2 دقیقه): 127
- استاندارد (زیر 5 دقیقه): 106
Gas را به خون جاری در رگهای Ethereum تشبیه کردیم، به همین خاطر بررسی کامل این مبحث مهم از حوصله مطلب کنونی خارج است.
نحوه افزایش سرعت تایید تراکنش با متامسک
به کیف پول متامسک خود که پیشتر تراکنشی (اکنون معلق و در انتظار تایید) با استفاده از آن ایجاد کردهاید، لاگین کنید. اگر این یک والت اکسترنال است، باید با استفاده از عبارت بازیابی یا به طور مستقیم از طریق کلید خصوصی اقدام به ایمپورت آدرس کنید.
در تب Activity، تراکنش در حالت تایید نشده در اتریوم را برای لغو یا جایگزین کردن پیدا کنید و سپس روی گزینه Speed Up ضربه بزنید.
این گزینه به شما اجازه میدهد تراکنش خود را مجددا در شبکه برادکست کنید. از تعیین رقمی بالاتر برای گس به وسیله لمس گزینه Fast مطمئن شوید. سپس گزینه Save را لمس کنید.
اگر مرحله قبلی کارساز نبود، از تب پیشفرض Basic وارد تب Advanced شده و قیمت گس را به صورت دستی مشخص کنید. برای دریافت کمک و پی بردن به رقمی مناسب بر اساس متوسط قیمتهای گس و متوسط زمان تایید تراکنش، به وب سایت Etherscan یا EthGasStation مراجعه کنید.
جایگزین کردن یک تراکنش اتریوم به جای لغو آن با متامسک
به کیف پول متامسک خود که پیشتر تراکنشی (اکنون معلق و در انتظار تایید) با استفاده از آن ایجاد کردهاید، لاگین کنید. اگر این یک والت اکسترنال است، باید با استفاده از عبارت بازیابی یا به طور مستقیم از طریق کلید خصوصی اقدام به ایمپورت آدرس کنید.
در تب Activity تراکنش در حالت تایید نشده را پیدا کنید. روی آن ضربه بزنید و مقدار مربوط به Nonce را یادداشت کنید. اگر چند تراکنش شما معلق و در انتظار تایید باقی مانده است، باید کار را با گزینههای قدیمیتر (کمترین مقدار Nonce) شروع کنید.
وارد تنظیمات (Settings) کیف پول متامسک شده و گزینه Advanced را لمس کنید.
به پایین اسکرول و گزینه Customize Transaction Nonce را روشن کنید.
به مرحله قبل برگشته و آدرس کیف پول خود را کپی کنید.
برای ایجاد تراکنشی جدید در اتریوم به جای لغو آن روی گزینه Send ضربه بزنید. سپس در قسمت Add Recipient آدرس کیف پول خود را قرار بدهید.
با استفاده از نانس (Nonce) تراکنش گیر کرده در حالت تایید نشده، باید 0 اتر به آدرس کیف پول خود ارسال کنید. نحوه به دست آوردن نانس کمی بالاتر گفته شد. در نهایت Confirm را لمس کنید. در نظر داشته باشید اگر قیمت گس بسیار پایین باشد، همچنان احتمال گیر کردن و معلق ماندن تراکنش وجود دارد. پس قیمتی معقول تعیین کنید.
تا زمان تایید شدن تراکنش جدید منتظر بمانید. بعد از انجام موفقیتآمیز آن، تراکنش معلق قبلی جایگزین شده است. برای جلوگیری از بروز اتفاقات غیر منتظره، به تنظیمات کیف پول برگشته و گزینه Customize Transaction Nonce را خاموش کنید.
نحوه لغو (کنسل) کردن تراکنش اتریوم با تراست والت
داخل اپلیکیشن تراست والت روی تراکنش در حالت Pending ضربه بزنید و به دنبال گزینه Nonce بگردید. این رقم را یادداشت کنید.
تراکنشی جدید ایجاد کرده و آدرس کیف پول خود را در قسمت Recipient Address وارد کنید. از یکسان بودنش با آدرسی که تراکنش در حالت تایید نشده کنونی با استفاده از آن ایجاد شده است، مطمئن شوید. مقدار ارسال (Amount ETH) را 0 تعیین کنید و روی Next ضربه بزنید.
در گوشه بالا و سمت راست، آیکون چرخدنده را لمس کنید.
قسمت Nonce را با مقداری که قبلا یادداشت کرده بودید، پر کنید. در قسمت Gas Price عددی قابل قبول و جذاب برای ماینرها تعیین کنید. به این ترتیب نیاز به لغو مجدد تراکنش اتریوم به خاطر گیر کردن در حالت معلق و تایید نشده از بین میرود.
تا زمان تایید شدن تراکنش جدید منتظر بمانید. بعد از ثبت موفقیتآمیز، این مورد با تراکنش Pending قبلی جایگزین خواهد شد. همانطور که در در ابتدای آموزش به آن اشاره کردیم، به معنای واقی نمیتوان یک تراکنش اتریوم را کنسل کرد، پس باید تراکنشهای Pending را با مواردی جدید جایگزین کنیم.
تهیه شده در بیت 24