چگونگی لغو یک تراکنش “در حال انتظار” در شبکه اتریوم

0

برای شرح این مطلب ابتدا در مورد شبکهٔ اتریوم و تراکنش‌هایی که در آن انجام می‌شوند توضیح مختصری می‌دهیم.

اتریوم یک پلتفرم نرم افزاری منبع باز مبتنی بر بلاکچین با هزاران برنامه کاربردی غیر متمرکز (DApps) است که به ارز دیجیتال شبکهٔ خود یعنی اتر (ETH) این توانایی را می‌دهد که بدون دخالت شخص ثالث در سراسر جهان ارسال و دریافت شود.

تراکنش‌های اتریوم

به طور خلاصه و کلی تراکنش‌ها یک دستور رمزگذاری شده از سوی حساب‌های مختلف هستند.

شبکهٔ اتریوم از دو نوع تراکنش اصلی پشتیبانی می‌کند: نوع اول، تراکنش‌های به کارگیری قرارداد است که در واقع تراکنش بدون گیرنده محسوب می‌شوند و دوم تراکنش‌های معمولی که ساده‌ترین نوع تراکنش‌ها برای انتقال اتر از یک کیف پول به کیف پول دیگر هستند.

یک تراکنش ارسال شده و معمولی اتریوم شامل چندین فاکتور است که عبارتند از شناسهٔ فرستنده یا امضای ایجاد شده در زمانی است که کلید خصوصی فرستنده معامله را تأیید می‌کند، آدرس دریافت کننده، مقدار ETH برای انتقال از فرستنده به گیرنده، اطلاعات مربوط به کارمزد تراکنش اتریوم و یک فیلد اختیاری که شامل داده های دلخواه می‌شود.

مراحل یک تراکنش در شبکه اتریوم

هر تراکنش اتریوم یک سری مراحل را طی می‌کند که از حالت “ناشناخته” شروع می‌شود و زمانی که در یک بلاک تأیید شود به اتمام می‌رسد.

ناشناخته: حالت ناشناخته به تراکنشی اشاره می‌کند که شبکه آن را ندیده یا پردازش نکرده است.

در حال انتظار: هنگامی که یک تراکنش به صورت” در حال انتظار” (Pending) یا تعلیق است، در واقع منتظر است که ماینرها آن را انتخاب کرده و پردازش کنند یعنی این تراکنش در استخر تراکنش‌های در حال انتظار فرار گرفته است که به آن “ممپول” (mempool) نیز گفته می‌شود. از آنجا که ماینر‌ها نرخ گس بیشتر را در اولویت قرار می‌دهند، تراکنش‌های با گس فی پایین ممکن است در مرحله تعلیق برای مدت طولانی باقی بمانند. تراکنش های با گس بسیار پایین ممکن است هرگز انجام نشوند و برای همیشه در وضعیت “گیر کرده” قرار بگیرند.

داخل بلاک: زمانی که یک ماینر یک تراکنش را با موفقیت انتخاب کرده و آن را در یک بلاک قرار می‌دهد، حالت درون بلاک گفته می‌شود.

انجام شده: در صورت برآورده شدن هر یک از شرایط زیر، یک تراکنش از حالت تعلیق به حالت انجام شده در می‌آید:

  • یک تراکنش جدید با همان نانس (nonce) از همان فرستنده وارد حالت داخل بلاک شود
  • تراکنش دیگری با همان نانس و 12 درصد نرخ گس بالاتر وارد مرحله در حال انتظار شود؛ این بار هم از همان فرستنده

نانس چیست؟

نانس (nonce) عددی است که به تراکنش ارسالی از آدرس فرستنده نسبت داده می‌شود. تمام تراکنش‌های یک آدرس به ترتیب عدد‌گذاری می‌شوند، این عددگذاری از صفر شروع می‌شود. نانس‌ها برای متمایز کردن تراکنش‌هایی که از یک آدرس ارسال می‌شوند ضروری هستند. شبکه‌ٔ اتریوم هنگام تأیید چند تراکنش‌ از یک آدرس، از تراکنشی شروع می‌کند که نانس پایین‌تری دارد. سپس آنها را یکی پس از دیگری بررسی و تایید می‌کند. بنابراین، اگر با تراکنش‌های اولیه مشکل دارید، مطمئن باشید تا زمانی که آن‌ها انجام نشوند، تراکنش‌های بعدی انجام نخواهند شد.

چگونه می‌توان یک تراکنش اتریوم را لغو کرد؟

دو روش اصلی برای لغو یک تراکنش در حال انتظار اتریوم وجود دارد: لغو درون برنامه‌ای و تنظیم یک نانس  سفارشی.

به طور معمول تراکنش‌های اتریوم ساعت‌ها در حالت تعلیق یا در حال انتظار باقی می‌مانند تا ماینرها آن‌ها را وارد بلاک کنند و یا وقتی کاربران تراکنشی را با گس فی (Gas fee) پایین ارسال می‌کنند، وارد وضعیت “گیر کرده” می‌شوند. بنابراین، اغلب کاربران به دنبال تغییر در تراکنش‌های اتریوم خود می‌باشند.

برای حل این مشکل، کاربران باید به خاطر داشته باشند که لغو کردن تنها در صورتی امکان پذیر است که یک تراکنش بر روی شبکه هنوز در حالت “در حال انتظار” (Pending) باشد. اولین قدم برای لغو کردن این است که باید در یک کاوشگر بلاک اتریوم بررسی کنند که آیا تراکنش هنوز در حالت تعلیق است یا خیر. برای این کار باید هش تراکنش (txhash) را که به عنوان شناسهٔ تراکنش اتریوم نیز شناخته می‌شود در کاوشگر بلاک جستجو کنند و از حالت تعلیق آن مطمئن شوند.

سپس ساده‌ترین راه برای لغو تراکنش مورد نظر، لغو درون برنامه ای است که برای آن کاربر باید از برنامهٔ کیف پول اتریومی خارج شده و مرورگر خود را بسته، مجدداً آن را باز کرده و به برنامه وارد شود. اگر این روش مشکل را حل نکند، راه دوم را به کار می‌گیریم.

راه دوم برای اینکه تراکنش در حال انتظار خود را لغو کنید این است که می‌بایست تراکنشی با ارزش صفر اتر (0 ETH) اما با گس بالاتر و با همان نانس برای خودتان بفرستید. با این راهکار در حقیقت تراکنش را جایگزین کرده‌اید. قبل از ارسال این تراکنش دوم، کاربران باید نانسی که برای تراکنش اول استفاده شده را، یا یادداشت کرده باشند و یا از طریق کپی کردن هش تراکنش در اتر اسکن (Etherscan) آن را بازیابی کنند.

همچنین اگر کاربران چندین تراکنش تعلیقی اتریوم دارند، ترجیحاً باید با قدیمی‌ترین تراکنش یا تراکنشی که کمترین عدد نانس را دارد شروع به لغو کردن کنند.

 

منبع  cointelegraph.com

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.