تراکنش شکست خورده، ولی کارمزدش کم شده. این جمله را هفته ای چند بار از کاربرها می شنویم و تقریبا همیشه یک دلیل دارد: گس لیمیت.

بگذارید ساده بگویم. اتریوم بابت تلاش پول می گیرد، نه بابت نتیجه. اعتبارسنج تراکنش شما را اجرا کرده و برایش منابع صرف کرده؛ اینکه وسط کار به سقفی که خودتان تعیین کرده اید خورده و متوقف شده، مشکل او نیست.

گس لیمیت با قیمت گس یکی نیست

گس لیمیت با قیمت گس یکی نیست

بیشتر سردرگمی از همین جا شروع می شود. کارمزد نهایی حاصل ضرب دو عدد است و این دو عدد کار کاملا متفاوتی می کنند:

  • گس لیمیت: سقف کاری که اجازه می دهید انجام شود. واحدش گس است، نه پول. این عدد را ماهیت تراکنش تعیین می کند، نه شلوغی شبکه.
  • قیمت هر واحد گس: با gwei اندازه گیری می شود و دو تکه دارد؛ کارمزد پایه که شبکه تعیین می کند و سوزانده می شود، و انعامی که خودتان روی آن می گذارید تا زودتر انتخاب شوید.

کارمزد پایه از بلاکی به بلاک بعد حداکثر ۱۲.۵ درصد بالا یا پایین می رود و به تراکنش شما ربطی ندارد؛ مستندات رسمی اتریوم درباره گس این مکانیزم را کامل توضیح داده اند. پس وقتی کیف پول می گوید کارمزد بالاست، تقریبا هیچ وقت منظورش گس لیمیت نیست.

آن عددی که کیف پول خودش می گذارد

یک انتقال ساده اتر دقیقا ۲۱۰۰۰ واحد گس می خواهد. نه بیشتر، نه کمتر، و هیچ وقت هم تغییر نمی کند. اگر متامسک برای انتقال اتر عدد دیگری نشان داد، چیزی سر جایش نیست.

هر چیز دیگری بیشتر می خواهد، چون کد بیشتری اجرا می شود:

  • انتقال یک توکن ERC-20 معمولا سه تا چهار برابر انتقال ساده اتر خرج می برد.
  • تایید دسترسی یک قرارداد به توکن هایتان یک تراکنش جداگانه و پولی است. خیلی ها فکر می کنند رایگان است.
  • سواپ در یک صرافی غیرمتمرکز می تواند ده برابر انتقال ساده هم برود، چون از چند استخر رد می شود.
  • اولین تعامل شما با یک قرارداد گران تر از دفعات بعدی است. نوشتن روی خانه خالی حافظه گران ترین کاری است که روی اتریوم می شود کرد.

تخمین کیف پول برای این موارد یک شبیه سازی است، نه یک عدد قطعی. اگر بین لحظه تخمین و لحظه اجرا وضعیت قرارداد عوض شود، مصرف واقعی بالاتر می رود و سقف کم می آید.

دو حالتی که مردم برعکس می فهمند

گس لیمیت کم: پول می سوزد و کاری انجام نمی شود

تراکنش تا جایی که سقف اجازه داده اجرا می شود، بعد خطای out of gas می خورد و همه چیز به حالت اول برمی گردد. اما گسی که تا آن لحظه مصرف شده پس داده نمی شود. یعنی بدترین حالت ممکن: هزینه را داده اید و نتیجه ای نگرفته اید.

گس لیمیت زیاد: تقریبا بی ضرر است

این را کمتر جایی می نویسند. شما فقط بابت گسی که واقعا مصرف شده پول می دهید و مابقی سقف به حسابتان برمی گردد. سقف بالا فقط یعنی برای لحظه ای موجودی بیشتری بلوکه می شود.

پس اگر مجبورید یک طرف را انتخاب کنید، سخاوت به مراتب ارزان تر از خست است. موضعم روشن است: دست بردن در گس لیمیت به سمت پایین، برای صرفه جویی، تقریبا همیشه اشتباه است. اگر می خواهید کارمزد را کم کنید، عدد دیگری را باید دست بزنید.

پس واقعا چه چیزی کارمزد را کم می کند

سه چیز، به ترتیب اثرگذاری:

  1. بیرون رفتن از شبکه اصلی. تفاوت اینجا از جنس درصد نیست، از جنس مرتبه است. کدام لایه دوم به کارتان می آید بحث جداگانه ای است که در راهنمای لایه دوم های اتریوم باز شده، و حالت پالیگان هم صرفه پالیگان برای کاربر خرد.
  2. صبر. کارمزد پایه با تقاضا بالا و پایین می رود و یک تراکنش غیرفوری را می شود چند ساعت عقب انداخت.
  3. کم کردن تعداد تراکنش ها. سه انتقال جدا سه بار کارمزد دارد؛ همان کار در یک تراکنش، یک بار.

و یک انتظار غلط را هم تصفیه کنیم: مرج قرار نبود کارمزد را کم کند و نکرد. چرایش را چرا کارمزد بعد از مرج کم نشد جداگانه نوشته ایم.

چیزی که فقط به کاربر ایرانی مربوط است

در روزهای اختلال اینترنت، رفتار غالبی که در پشتیبانی می بینیم این است: کاربر تراکنش می فرستد، تاییدیه را نمی بیند، فکر می کند نرفته و دوباره می فرستد. اگر هر دو با یک شماره ترتیب رفته باشند فقط یکی می نشیند؛ اگر با دو شماره رفته باشند، هر دو می نشینند و دو بار کارمزد داده اید.

قاعده ساده است: قبل از ارسال دوباره، هش تراکنش قبلی را در یک کاوشگر ببینید. اگر متامسک را تازه راه انداخته اید، تنظیم درست شبکه و کارمزد در راه اندازی درست متامسک از ایران قدم به قدم آمده.

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

اتریومقیمت اتریوم به تومان ۱.۷۶٪
۴۸۴,۶۹۰,۱۳۶ تومان
$2,463.75 نرخ جهانی
تغییر ۲۴ ساعته - بروزرسانی ۰۲:۰۱ مشاهده نرخ

کارمزد واقعی از چند تکه ساخته می شود

وقتی کسی می گوید «کارمزد اتریوم چقدر است»، معمولا فقط یک تکه از هزینه را می بیند. تکه ها اینها هستند:

  • گس لیمیت ضربدر کارمزد پایه، که سوزانده می شود.
  • انعامی که به اعتبارسنج می دهید تا در بلاک بعدی قرار بگیرید.
  • اسپرد خرید و فروش خود اتر، جایی که آن را تهیه می کنید.
  • و اگر با روش های غیرمستقیم اتر تهیه می کنید، کارمزد آن مسیر. کسی که با ووچر ارزی برای پرداخت های خارجی کار می کند این تکه را جدا حساب می کند.

نگاه کردن به فقط یکی از این چهار تکه همان اشتباهی است که باعث می شود کاربر تصور کند شبکه ای ارزان تر است، در حالی که کل مسیر گران تر تمام شده. برای خرید مستقیم هم صفحه نرخ لحظه ای اتریوم عدد امروز را نشان می دهد.

کجا این حرف ها به درد نمی خورد

اگر مبالغ کوچک جابه جا می کنید و کارتان با شبکه اصلی نیست، هیچ کدام از این تنظیمات به دردتان نمی خورد. برای مبالغ کم، شبکه اصلی اتریوم انتخاب اشتباهی است و بهینه سازی گس لیمیت آن را درست نمی کند.

و اگر توسعه دهنده نیستید، بهینه سازی کد قرارداد که در خیلی از مقاله ها زیر همین عنوان می آید اصلا به شما مربوط نمی شود. آن بحث برای کسی است که خودش قرارداد هوشمند دیپلوی می کند، نه برای کسی که می خواهد توکنش را جابه جا کند.

سوال های پرتکرار درباره گس لیمیت

گس لیمیت را روی چه عددی بگذارم؟

روی همان عددی که کیف پول پیشنهاد داده. تنها موقعی دستکاری اش کنید که یک تراکنش با out of gas شکست خورده باشد؛ آن وقت حدود بیست درصد به عدد پیشنهادی اضافه کنید و دوباره بفرستید.

اگر گس لیمیت را بالا بگذارم پول بیشتری می دهم؟

نه. فقط بابت گس مصرف شده پول می دهید و باقی سقف آزاد می شود. سقف بالا صرفا موجودی بیشتری را برای مدت کوتاهی درگیر می کند.

تفاوت gwei با گس لیمیت چیست؟

گس لیمیت تعداد است و gwei قیمت. gwei واحد کوچکی از خود اتر است که قیمت هر واحد گس با آن بیان می شود. یکی حجم کار را می گوید و دیگری نرخ آن کار را.

چرا تراکنش ناموفق هم کارمزد گرفت؟

چون شبکه کار را انجام داده است. اعتبارسنج ها تراکنش را اجرا کرده اند و منابع مصرف شده؛ اینکه خروجی نهایی به نتیجه نرسیده، هزینه آن اجرا را برنمی گرداند.

حرف آخر

گس لیمیت اهرم صرفه جویی نیست؛ ترمز اضطراری است. کارش این است که جلوی خرج بی حساب یک قرارداد معیوب را بگیرد، نه اینکه کارمزد شما را پایین بیاورد.

اگر دنبال کارمزد کمتر هستید، سوال درست این نیست که چه عددی در کادر گس لیمیت بنویسم. سوال درست این است که این کار را اصلا باید روی شبکه اصلی انجام بدهم یا نه.