برای شرح چگونگی لغو یک تراکنش “در حال انتظار” در شبکه اتریوم ابتدا در مورد این شبکه و تراکنشهایی که در آن انجام میشوند توضیح مختصری میدهیم.
اتریوم یک پلتفرم نرم افزاری منبع باز مبتنی بر بلاکچین با هزاران برنامه کاربردی غیر متمرکز (DApps) است که به ارز دیجیتال شبکهٔ خود یعنی اتر (ETH) این توانایی را میدهد که بدون دخالت شخص ثالث در سراسر جهان ارسال و دریافت شود.
تراکنش های اتریوم
به طور خلاصه و کلی تراکنشها یک دستور رمزگذاری شده از سوی حسابهای مختلف هستند.
شبکهٔ اتریوم از دو نوع تراکنش اصلی پشتیبانی میکند:
- نوع اول تراکنشهای به کارگیری قرارداد است که در واقع تراکنش بدون گیرنده محسوب میشوند
- دوم تراکنشهای معمولی که سادهترین نوع تراکنشها برای انتقال اتر از یک کیف پول به کیف پول دیگر هستند.
یک تراکنش ارسال شده و معمولی اتریوم شامل چندین فاکتور است که عبارتند از شناسهٔ فرستنده یا امضای ایجادشده در زمانی است که کلید خصوصی فرستنده معامله را تأیید میکند، آدرس دریافتکننده، مقدار ETH برای انتقال از فرستنده به گیرنده، اطلاعات مربوط به کارمزد تراکنش اتریوم و یک فیلد اختیاری که شامل دادههای دلخواه میشود.
مراحل یک تراکنش در شبکه اتریوم
هر تراکنش اتریوم یک سری مراحل را طی میکند که از حالت “ناشناخته” شروع میشود و زمانی که در یک بلاک تأیید شود به اتمام میرسد.
تراکنش ناشناخته
حالت ناشناخته به تراکنشی اشاره میکند که شبکه آن را ندیده یا پردازش نکردهاست.
تراکنش در حال انتظار
هنگامی که یک تراکنش به صورت” در حال انتظار” (Pending) یا تعلیق است، در واقع منتظر است که ماینرها آن را انتخابکرده و پردازش کنند یعنی این تراکنش در استخر تراکنشهای در حال انتظار فرار گرفتهاست که به آن “ممپول” (mempool) نیز گفتهمیشود.
از آنجا که ماینرها نرخ گس بیشتر را در اولویت قرار میدهند، تراکنشهای با گس فی پایین ممکن است در مرحله تعلیق برای مدت طولانی باقی بمانند. تراکنش های با گس بسیار پایین ممکن است هرگز انجام نشوند و برای همیشه در وضعیت “گیر کرده” قرار بگیرند.
تراکنش داخل بلاک
زمانی که یک ماینر یک تراکنش را با موفقیت انتخاب کرده و آن را در یک بلاک قرار میدهد، حالت درون بلاک گفتهمیشود.
تراکنش انجامشده
در صورت برآوردهشدن هر یک از شرایط زیر، یک تراکنش از حالت تعلیق به حالت انجامشده در میآید:
- یک تراکنش جدید با همان نانس (nonce) از همان فرستنده وارد حالت داخل بلاک شود
- تراکنش دیگری با همان نانس و 12 درصد نرخ گس بالاتر وارد مرحله در حال انتظار شود؛ این بار هم از همان فرستنده
نانس چیست؟
نانس (nonce) عددی است که به تراکنش ارسالی از آدرس فرستنده نسبت دادهمیشود. تمام تراکنشهای یک آدرس به ترتیب عددگذاری میشوند، این عددگذاری از صفر شروع میشود. نانسها برای متمایز کردن تراکنشهایی که از یک آدرس ارسال میشوند ضروری هستند.
شبکهٔ اتریوم هنگام تأیید چند تراکنش از یک آدرس، از تراکنشی شروع میکند که نانس پایینتری دارد. سپس آنها را یکی پس از دیگری بررسی و تایید میکند. بنابراین، اگر با تراکنشهای اولیه مشکل دارید، مطمئن باشید تا زمانی که آنها انجام نشوند، تراکنشهای بعدی انجام نخواهند شد.
چگونه میتوان یک تراکنش اتریوم را لغو کرد؟
دو روش اصلی برای لغو یک تراکنش در حال انتظار اتریوم وجود دارد: لغو درون برنامهای و تنظیم یک نانس سفارشی.
به طور معمول تراکنشهای اتریوم ساعتها در حالت تعلیق یا در حال انتظار باقی میمانند تا ماینرها آنها را وارد بلاک کنند و یا وقتی کاربران تراکنشی را با گس فی (Gas fee) پایین ارسال میکنند، وارد وضعیت “گیر کرده” میشوند. بنابراین، اغلب کاربران به دنبال تغییر در تراکنشهای اتریوم خود میباشند.
برای حل این مشکل، کاربران باید به خاطر داشته باشند که لغو کردن تنها در صورتی امکان پذیر است که یک تراکنش بر روی شبکه هنوز در حالت “در حال انتظار” (Pending) باشد.
مراحل لغو
اولین قدم برای لغو کردن این است که باید در یک کاوشگر بلاک اتریوم بررسی کنند که آیا تراکنش هنوز در حالت تعلیق است یا خیر.
برای این کار باید هش تراکنش (txhash) را که به عنوان شناسهٔ تراکنش اتریوم نیز شناخته میشود در کاوشگر بلاک جستجو کنند و از حالت تعلیق آن مطمئن شوند.
سپس سادهترین راه برای لغو تراکنش مورد نظر، لغو درون برنامه ای است که برای آن کاربر باید از برنامهٔ کیف پول اتریومی خارجشده و مرورگر خود را بسته، مجدداً آن را باز کرده و به برنامه وارد شود. اگر این روش مشکل را حل نکند، راه دوم را به کار میگیریم.
راه دوم برای اینکه تراکنش در حال انتظار خود را لغو کنید این است که میبایست تراکنشی با ارزش صفر اتر (0 ETH) اما با گس بالاتر و با همان نانس برای خودتان بفرستید. با این راهکار در حقیقت تراکنش را جایگزین کردهاید. قبل از ارسال این تراکنش دوم، کاربران باید نانسی که برای تراکنش اول استفادهشده را، یا یادداشتکرده باشند. و یا از طریق کپی کردن هش تراکنش در اتر اسکن (Etherscan) آن را بازیابی کنند.
همچنین اگر کاربران چندین تراکنش تعلیقی اتریوم دارند، ترجیحاً باید با قدیمیترین تراکنش یا تراکنشی که کمترین عدد نانس را دارد شروع به لغو کردن کنند.
منبع cointelegraph.com