چطور یک تراکنش اتریومی معلق را لغو یا جایگزین کنیم؟
معادلات شبکهی اتریوم در آن حد که تصور میکنید پیچیده نیستند. برای اینکه مطمئن شوید تراکنش مد نظرتان به درستی تکمیل خواهد شد باید چند نکته را رعایت کنید.
کارمزدی که باید به صورت گس بپردازید
مثالهای بسیاری برای توصیف «کارمزد گس» (Gas fee) وجود دارد. «کارمزد گس» یا همان «کارمزد تراکنش» مبلغ ناچیزی است که به عنوان مشوق به ماینرهای شبکه میپردازید تا تراکنش شما را نیز در بلاک چین اتریوم (Ethereum) ثبت کنند. واحد گس، Gwei است و هر Gwei معادل 0.000000001 اتر است.
با ضرب قیمت گس در میزان گس میتوان کارمزد گسی که در تراکنش استفاده میشود را فهمید. در نظر داشته باشید که میزان گس استفاده شده از حد گس (gas limit) متفاوت است. میزان گس استفاده شده برابر است با میزان گسی که برای انجام تراکنش بکار میرود، اما حد گس بیشترین میزان گسی است که یک تراکنش میتواند مصرف کند.
برای ارسال اتر از یک آدرس اتریوم به یک آدرس اتریومی دیگر دقیقا 21,000 گس نیاز است. بنابراین، زمانی که به آدرس اتریومی اتر ارسال میکنید، 21,000 گس کافی است. اگر قیمت گس را Gwei 20 در نظر بگیریم، مقدار کل گسی که باید برای تراکنش مشخص بپردازید به این ترتیب خواهد بود:
21000 (gas) x 20 (Gwei) = 420,000 (Gwei) = 0.00042 ETH
میزان گسی که باید برای قراردادها بپردازید با یکدیگر متفاوت است. زمانی که تراکنشی انجام میدهید که شامل یک قرارداد است برای تعیین میزان گس بد نیست آخرین تراکنشهای آدرس قرارداد را چک کنید و اندکی بیشتر از آنها بپردازید.
چرا تراکنشها در حالت انتظار باقی میمانند؟
اگر بعد از ارسال یک تراکنش پیغام تراکنش معلق (Transaction pending) دریافت کردید و آن تراکنش در 48 ساعت آینده توسط ماینرها ماین نشد، دو راهکار دارید:
- برای کسب اطلاعات بیشتر بر روی گزینه مراجعه به بلاکچین برای اطلاعات بیشتر (Go to BLOCKCHAIN for more details) کلیک کنید. در صورتی که تراکنش شما در لیست نمایش داده شد، آن تراکنش منتشر شده است. بنابراین، صبور باشد و منتظر بمانید که ماینرها تراکنش شما را به طور کامل ماین کنند. تراکنش را تکرار نکنید، چرا که دو بار انجام میشود.
- در صورتی که برای جزئیات بیشتر به بلاکچین مراجعه کردید و تراکنش شما در لیست نمایش داده نشد، باید بدانید که تراکنش هیچگاه انجام نشده، و ممکن است خطای تکنیکی رخ داده باشد. در این صورت با امور خدمات و پشتیبانی مشتریان (App Help Center) تماس بگیرید.
ازدحام در شبکهی اتریوم
ازدحام در شبکه نقش مهمی در میزان گس پرداختی و سرعت تراکنش ایفا میکند. با بررسی تراکنشهای در حال انتظار در شبکه اتریوم میتوان تخمین زد که شبکه تا چه حدی شلوغ است. هر چه شبکه شلوغتر باشد، کاربران باید برای ایمن کردن تراکنش خود در بلاکچین میزان گس بیشتری بپردازند.
طبیعی است که ماینرها تراکنشهایی با گس بیشتر را ترجیح میدهند. بنابراین، تراکنشهایی با گس بیشتر زودتر انجام میشوند. ردیاب قیمت گس اتریوم (Ethereum Gas Price Tracker) ابزار سادهای است که به کاربران امکان میدهد تا هنگام ارسال تراکنش به شبکه میزان گس مناسب را برای تراکنش خود انتخاب کنند. همچنین، این ابزار مدت زمان لازم را برای تایید آن تراکنش در بلاکچین با مقدار گس در نظر گرفته شده نیز تخمین میزند.
نانس (Nonce)
نانس عددی است که به تراکنش ارسالی از آدرس فرستنده نسبت داده میشود. تمام تراکنشهای یک آدرس به ترتیب عددگذاری میشوند، این عددگذاری از صفر شروع میشود. به عنوان مثال، اگر نانس تراکنشی 10 است، این تراکنش 11امین تراکنشی است که از آدرس فرستنده ارسال میشود.
نانسها برای متمایز کردن تراکنشهایی که از یک آدرس ارسال میشوند ضروری هستند. شبکهی اتریوم هنگام تایید چند تراکنش از یک آدرس از تراکنشی شروع میکند که نانس پایینتری دارد. سپس آنها را یکی پس از دیگری بررسی و تایید میکند. بنابراین، اگر با تراکنشهای اولیه مشکل دارید، مطمئن باشید تا زمانی که آنها انجام نشوند، تراکنشهای بعدی انجام نخواهند شد.
جایگزین کردن /لغو کردن تراکنشهای در حالت انتظار اتریومی
جایگزین کردن تراکنشها تا حدی پردردسر است. بد نیست برای شروع پیش زمینهای در این رابطه داشته باشید، ماینرها تراکنشها را براساس میزان گسی که توسط فرستنده در نظر گرفته شده است رتبهبندی میکنند. هنگامی که تراکنشی را در بستر اتریوم ارسال میکنید، آن تراکنش به استخر تراکنشهای در حال انتظار ارسال میشود و آنقدر آنجا میماند تا ماینری آن را در بلاک چین ثبت کند.
ماینرها تراکنشهایی با کارمزد بالاتر را انتخاب میکنند و تراکنشهایی با کارمزد پایین را رها میکنند. این دقیقا همان جایی است که ممکن است تراکنش شما در وسط ازدحام شبکه معلق باقی بماند. اگر تراکنشهایی که به استخر اضافه میشوند کارمزد بیشتری پیشنهاد بدهند، تراکنش شما برای مدتی معلق باقی میماند.
چگونه تراکنش اتریومی خود را لغو کنیم؟
برای اینکه تراکنش در حال انتظار خود را لغو کنید میبایست تراکنشی با ارزش صفر اتر اما با گس بالاتر و با همان نانس برای خودتان بفرستید. با این راهکار در حقیقت تراکنش را جایگزین کردهاید.
برای کسب اطلاعات بیشتر میتوانید ویدئو آموزش نحوه لغو و جایگزین کردن تراکنش پندینگ شبکه اتریوم را مشاهده نمایید.
چطور میتوان نانس تراکنش معلق را بدست آورد؟
برای اینکار باید هش تراکنش (txhash) را بر روی اتر اسکن جستجو کنید و از این طریق نانس تراکنش معلق خود را بیابید. در عکس زیر میتوانید نانس یک تراکنش معلق را مشاهده نمایید.
برخی از والتها تنظیمات پیشرفتهای دارند. به کمک این تنظیمات پیشرفته میتوانید میزان گسی که تعیین کردهاید را بیشتر کنید و نانس تراکنش را تغییر دهید.
با توجه به تمامی مواردی که در بالا گفته شد، حتما قبل از اینکه تراکنشی را بر روی شبکهی اتریوم ایجاد کنید؛ موارد زیر را در نظر داشته باشید:
- میزان ازدحام شبکه را بررسی نمایید.
- میزان گس مورد نیاز برای تراکنش را محاسبه کنید.
- حتما مطمئن شوید آدرسی که در نظر دارید تراکنش را از آن ارسال کنید هیچ تراکنش در حال انتظاری نداشته باشد.
چطور وضعیت یک تراکنش را بررسی کنیم؟
قدم اول: وارد اکسپلوررهای بلاکچین اتریوم شوید؛ به عنوان نمونه: Etherscan.io ،Ethplorer.io یا EthVM.
قدم دوم: هش تراکنش را در قسمت جستجو کپی کنید.
قدم سوم: با توجه به وضعیت تراکنش، جزئیات تراکنش نمایش داده میشوند:
-
موفقیت آمیز (Success):
تراکنش شما با موفقیت ماین شده است و بر روی بلاک چین قرار گرفته است.
اگر هیچ پیام خطایی مشاهده نکردید به این معناست که تراکنش شما با موفقیت انجام شده است، اگر بعد از 24 ساعت موجودی به ولت میزبان یا صرافی منتقل نشد، میتوانید با پشتیبانی تماس بگیرید. لینک تراکنش را برای آنها بفرستید و از آنها بخواهید که موقعیت آن را بررسی کنند.
-
انجام نشده (Failed):
اگر با علامت تعجب قرمز رنگ (!) یا پیامهایی همچون دستورالعمل نامطلوب (BAD INSTRUCTION) یا نبود گس کافی (OUT OF GAS) مواجه شدید؛ یعنی تراکنش با موفقیت انجام نشده است. نمیتوانید این تراکنش را لغو یا جایگزین کنید. به جای آن میتوانید تراکنش جدیدی بفرستید. اگر خطای نبود گس کافی را مشاهده کردید، باید میزان گسی که تعریف کرده بودید را دو برابر کنید.
اگر عبارت مرجوع شدن (Reverted) را دیدید، بد نیست فرآیند را مجددا بررسی کنید. معمولا این خطا برای کاربران قراردادهای هوشمند رخ میدهد.
-
تراکنش یافت نشد (Transaction Not Found):
چنین تراکنشی یافت نشده است. ممکن است عبارات را به درستی وارد نکرده باشید یا تراکنش شما در اکسپلور اتریومی که انتخاب کردید یافت نمیشود. بد نیست اکسپلور خود را عوض کنید (Etherscan.io, Ethplorer.io, یا EthVM). اگر باز هم نتوانستید تراکنش خود را پیدا کنید، باید بدانید که اصلا چنین تراکنشی ایجاد نشده است.
-
در حالت انتظار (Pending):
تراکنش شما وارد استخر تراکنشهای اکسپلورری که استفاده میکنید شده است. اما در حالت انتظار است (منتظر است تا ماین شود). امکان اینکه بتوانید آن را لغو یا جایگزین کنید وجود دارد، اما شانس موفق شدن شما خیلی کم است.
اگر تراکنش شما در حالت انتظار است، بد نیست قیمت گس را چک کنید و آن را با قیمت گسی که در EthGasStation.info دیدید مقایسه کنید. اگر میزان آن از پایینترین حد ایمن برای گس (safe low) کمتر بود، این شانس را دارید که آن را لغو یا جایگزین کنید.
مقایسه فرآیندهای لغو و جایگزین کردن تراکنشها
لغو تراکنش: زمانی که میخواهید تراکنش انجام نشود آن را لغو میکنید. بنابراین تراکنشی به مبلغ صفر اتر برای خودتان ارسال میکنید تا از ارسال شدن/ماین شدن یا قرار گرفتن تراکنش قبلی در بلاکچین جلوگیری کنید.
جایگزین کردن: زمانی که میخواهید تراکنشی سریعتر انجام شود، یا تراکنش دیگری به جای آن انجام شود، آن را جایگزین میکنید. به این منظور تراکنش دیگری با مبلغ x اتر به آدرس شخص دیگری ارسال میکنید و با این کار از انجام شدن تراکنش قبلی جلوگیری میکنید.
دلیل این که ما گزینه «لغو کردن» را به «جایگزین کردن» ترجیح میدهیم این است که هیچ تضمینی وجود ندارد که تراکنش دوم با تراکنش قبل جایگزین شود. جایگزین کردن تراکنشها به جای هم، دردسرهای خود را دارد. علاوه بر این باید مبالغ گس اضافی برای این منظور بپردازید. بخصوص اگر تراکنش اول شما به هر دلیلی ناگهان ماین شود.
-
لغو کردن یک تراکنش اتریومی
لغو کردن یعنی شما تراکنشی با مبلغ صفر اتر به آدرس خودتان ارسال کنید تا از در حالت انتظار قرار گرفتن تراکنش جلوگیری کنید.
گام اول: ورود به فضای اکسپلورر Etherscan.io ،Ethplorer.io یا EthVM.
گام دوم: وارد کردن هش تراکنش
- اگر پیغام در حالت انتظار (pending) میدهد، یعنی برای لغو کردن آن هنوز زمان دارید.
- اگر پیغام یافت نشدن (not found) را مشاهده کردید، کمی صبر کنید و دوباره امتحان کنید. اگر جواب نگرفتید یعنی این تراکنش اصلا ایجاد نشده است.
- اگر پیغام موفقیتآمیز را گرفتید، یعنی تراکنش شما با موفقیت انجام شده و نمیتوانید آن را لغو کنید.
گام سوم: اگر تراکنشی در حالت انتظار است به نانس آن توجه کنید، سپس به کیف پولی که تراکنش را به وسیله آن انجام دادید مراجعه کنید.
گام چهارم: در منوی سمت چپ، گزینه ارسال را بزنید، سپس ارسال آفلاین را انتخاب کنید.
با این روش دیگر نیازی نیست حتما ارتباط خود را با اینترنت قطع کنید.
گام پنجم: تراکنشی با مبلغ صفر اتر و گس بالا برای خودتان ایجاد کنید، به EthGasStation.info مراجعه کنید و نانسی که در قدم سوم به آن اشاره کردیم را برای این تراکنش لحاظ کنید.
- توجه داشته باشید که هرچه مبلغ گس شما بیشتر باشد، در حقیقت کارمزدی که برای تراکنش میپردازید بیشتر است. (حد گس ضرب در قیمت گس)
گام ششم: بر روی دکمه ایجاد تراکنش (Generate Transaction) کلیک کنید، سپس تراکنش امضا شده (Signed transaction) را که عبارتی طولانی است و با «0x» آغاز میشود، کپی کنید.
گام هفتم: حالا پایین بیایید و در قسمت فوتر ارسال کمککننده آفلاین (Send Offline Helper) را انتخاب کنید.
گام هشتم: به بخش سوم تراکنش امضا شده برگردید و عبارتی که در قدم ششم در مورد آن صحبت کردیم را در آنجا کپی کنید و دکمه ادامه را بزنید.
گام نهم: هش تراکنش جدیدی ایجاد میشود. آن را در اکسپلورر بلاکچین سرچ کنید تا ببینید با موفقیت انجام میشود یا نه. اگر فورا نمایش داده نشد، مجددا امتحان کنید.
-
جایگزین کردن تراکنش اتریومی (مختص کاربران حرفهای)
منظور از جایگزین کردن تراکنش، ایجاد تراکنشی به مبلغ xx اتر برای شخص دیگر، به منظور خاص (مانند ارسال یک تراکنش) است. عموما زمانی که تراکنشی داریم که به درستی انجام نشده است، مثلا در حالت انتظار است یا تراکنشی کاملا متفاوت، از این روش استفاده میکنیم.
گام اول: در آغاز باید قدم اول تا چهارمی که در بخش لغو تراکنش بیان کردیم را انجام دهید.
گام دوم: آدرس مقصد را در فیلد ارسال به آدرس (To Address) کپی کنید.
گام سوم: مقدار تراکنش را از صفر به هر میزان اتری که تمایل دارید ارسال کنید و نانس را به نانس تراکنش در حال انتظار تغییر دهید.
گام چهارم: اگر تراکنش اتریوم شما استاندارد باشد، میتوانید میزان 21,000 گس به عنوان حد گس برای آن تعیین کنید. اگر در نظر دارید توکنی را ارسال کنید، میزان گس را به 100,000 تا افزایش دهید.
گام پنجم: برای فیلد قیمت گس (Gas Price) طبق چیزی که در EthGasStation.info نمایش داده میشود، قیمت گس بالایی انتخاب کنید.
- به خاطر داشته باشید که هر چه قیمت گس بیشتر باشد، در حقیقت هزینهای که بابت انجام شدن تراکنش میپردازید بیشتر است.
گام ششم: بر روی دکمه ایجاد تراکنش (Generate Transaction) کلیک کنید سپس تراکنش امضاشده (Signed transaction) را که عبارتی طولانی است و با «0x» آغاز میشود، کپی کنید.
گام هفتم: حالا پایین بیایید و گزینه ارسال کمککننده آفلاین (Send Offline Helper) را انتخاب کنید.
گام هشتم: به بخش سوم یعنی Signed Transaction بازگردید، سپس عبارت قدم ششم را کپی کرده و ادامه (Continue) را بزنید.
گام نهم: هش جدیدی برای تراکنش ایجاد میشود. به کمک این هش در اکسپلورر بلاکچین میتوانید متوجه شوید که تراکنش موفقیتآمیز بوده است یا نه. اگر حالت تراکنش فورا برای شما نمایش داده نشد، بهتر است کمی صبر کنید.
توصیههای نهایی:
والتها هیچ هزینهای برای تراکنشها دریافت نمیکند. این کارمزدها به ماینرها پرداخت میشود تا تراکنش شما را در یک بلاک جای دهند.
نودها در استخرهای تراکنش متفاوتی فعالیت میکنند. به همین خاطر ممکن است تراکنشی در یک استخر (Infura.io) در حالت انتظار باشد اما در استخر دیگر (MyEtherWallet.com) انجام شود. به همین خاطر بهتر است تمام نودهای اتری که پیشنهاد کردیم را امتحان کنید.
نحوه بررسی یا جایگزین کردن تراکنش بعد از ارسال در کیف پول مای اتر والت (MEW)
آیا بعد از اینکه تراکنشی ارسال شد میتوان آن را لغو یا جایگزین کرد و یا چارهای برای آن اندیشید؟
در اغلب موارد پاسخ خیر است.
هنگامی که تراکنشی ماین شد و بر روی بلاک چین قرار گرفت، نمیتوان آن را لغو یا جایگزین کرد.
زمانی که حجم بازار نرمال باشد، تراکنشها در ثانیه انجام میشوند و نیازی نیست تراکنشها مدت زمانی را در استخر تراکنشها منتظر بمانند. به بیان ساده وقتی که تراکنشی ارسال شد، دیگر زمان کافی برای لغو، جایگزین کردن یا بازنویسی آن وجود ندارد.
با این وجود …
هنگامی که حجم و گس مبادلات شبکه بالاست، ممکن است تراکنشها برای چندین ساعت یا حتی چندین روز در حالت انتظار باقی بمانند.
اگر تراکنش شما برای بازه زمانی طولانی مدتی در حالت انتظار باقی ماند، میتوانید آن را با تراکنش جدیدی جایگزین کنید.
سادهترین راهکار این است که تراکنشی به مبلغ صفر اتر با همان نانس تراکنش معلق، اما با گس بیشتر برای خودتان ارسال کنید. با اینکار تراکنش اول شما لغو خواهد شد.
در حقیقت هیچ تضمینی نیست که این راهکار همیشه جواب بدهد. اگر فرآیند را به درستی انجام ندهید ممکن است هر دو تراکنش را از دست بدهد و حتی در صورت مرتب بودن همه چیز باز هم هیچ تضمینی وجود ندارد.
در این مقاله به شما نمیگوییم که میتوانید تراکنشی را که به آدرس نادرست ارسال کردهاید لغو کنید، یا میتونید اتری که ارسال کردید را به کیف پول خود برگردانید.
هدف این مقاله بیشتر آن است که نحوهی یافتن، بررسی و جایگزین کردن تراکنشهایی که برای بازه زمانی نسبتا طولانی در استخرهای تراکنش در حالت انتظار ماندهاند را به شما آموزش دهیم.
چطور انجام یک تراکنش را در کیف پول متامسک (Metamask) تسریع یا لغو کنیم؟
هر زمان که تراکنشی بر روی شبکه اتریوم ایجاد میکنید، قیمت گسی که تعیین کردید، شبیه مزایدهای است که تراکنش شما سریعتر انجام شود. اگر میزان این گس کم باشد، زمان بیشتری طول میکشد تا تراکنش شما انجام شود. برای اطلاع از قیمتهای گس که منجر به نهایی شدن تراکنش در مدت زمان معقول میشود، میتوانید به Etherscan’s gas tracker مراجعه نمایید.
علاوه بر این، گاهی اوقات شرایطی وجود دارد که مشکلی پیش میآید. مثلا تراکنش متوقف، یا برای مدتی طولانی معلق میگردد.
بدون توجه به این که چگونه به این حالات رسیدید، چند راه مختلف برای رفع آن وجود دارد:
قبل از هر اقدامی، اولین گام باید خروج و بستن کامل مرورگر، سپس باز کردن آن و ورود مجدد به متامسک باشد. اگر مشکل حل نشد، مراحل زیر را انجام دهید:
1- تسریع تراکنش
در این حالت، میتوانید یکی از گزینههای زیر را امتحان کنید:
- منتظر بمانید تا شبکه موافقت کند که تراکنشها را با این قیمت پردازش کند.
- اگر قبلاً این کار را نکردهاید، روی دکمه «Speed Up» (افزایش سرعت) کلیک کنید. این به شما امکان میدهد همان معامله را دوباره ارسال کنید، اما با هزینه گس بالاتر که باعث میشود تراکنش سریعتر پردازش شود.
2- لغو کردن تراکنش
روش 1: لغو درون برنامهای (In-app cancellation)
اگر قبلاً این کار را نکردهاید، برای لغو تراکنش، کافیست گزینه Cancel (لغو) را انتخاب نمایید. لطفاً توجه داشته باشید، لغو کردن تنها در صورتی امکانپذیر است که تراکنش هنوز در شبکه معلق باشد.
روش 2: نانس تنظیمشده (Custom Nonce)
- در تنظیمات پیشرفته (Advanced) کیف پول متامسک خود، Custom Nonce را فعال نمایید.
- یک تراکنش جدید ایجاد کنید. این تراکنش جدید را باید به خودتان یعنی کلید عمومی کیف پول متامسک خود ارسال کنید. سپس در قسمت تنظیم نانس، آن را به نانس آخرین تراکنش خود که هنوز معلق است، تغییر دهید.
مقدار گس را در عدد بالاتری، طبق آنچه در https://etherscan.io/gastracker توصیه شده است، تنظیم نمایید. همچنین مقدار اتریوم را صفر قرار دهید.
ممون میشم از قسمت(چطور وضعیت یک تراکنش را بررسی کنیم؟) مثل مابقیه مقالاتتون ویدیو تهیه کنید