گس (Gas)

برای پرداخت هزینه یک تراکنش چقدر اتریوم نیاز داریم؟
شما برای یک تراکنش هزینه‌ای معادل “گس مصرف شده * قیمت گس” پرداخت می‌کنین، که در آن:

  • گس (Gas): واحد محاسباتی است که برای انجام عملیات‌ها استفاده می‌شه.
  • گس مصرف شده (Gas Spent): مقدار گسی است که در یک تراکنش استفاده شده.
  • قیمت گس (Gas Price): مقداری است که شما برای هر واحد گس آماده‌اید پرداخت کنین.

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

محدودیت‌های گس (Gas Limit) #

دو محدودیت برای مقدار گسی که می‌تونین برای تراکنش خود مصرف کنین وجود داره:

  1. محدودیت گس (Gas Limit): حداکثر مقداری که شما مایلید برای تراکنش خود استفاده کنین، توسط شما تعیین می‌شه.
  2. محدودیت گس بلاک (Block Gas Limit): حداکثر مقدار گسی که یک بلاک میتونه پذیرش کنه، توسط شبکه تنظیم می‌شه.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

contract Gas {
    uint256 public i = 0;

    // استفاده از تمام گسی که ارسال می‌کنین باعث شکست تراکنش می‌شه.
    // تغییرات وضعیت برگشت داده می‌شن.
    // گس مصرف شده بازپرداخت نمی‌شه.
    function forever() public {
        // در اینجا یک حلقه اجرا می‌کنیم تا تمام گس مصرف شده و تراکنش شکست بخورد
        while (true) {
            i += 1;
        }
    }
}

توضیحاتی برای درک بهتر: #

  • گس و تراکنش‌ها:
    برای هر تراکنش، چه بخواهید اتریوم بفرستید یا تابعی از قرارداد رو اجرا کنین، باید هزینه گس پرداخت کنین. این هزینه بستگی به میزان محاسباتی داره که تراکنش نیاز داره.
  • محدودیت‌های گس:
    • Gas Limit: این محدودیت مقدار گسیه که شما مایلید برای تراکنش خود اختصاص بدین. یعنی حداکثر گسی که می‌خواهید تراکنش شماستفاده کنه.
    • Block Gas Limit: این محدودیت مربوط به مقدار گسیه که شبکه به یک بلاک اجازه می‌ده. اگر تراکنش شما بیش از حد مجاز گس مصرف کنه، نمی‌تونه توی بلاک قرار بگیره.
  • گس مصرف شده و بازپرداخت:
    اگر شما بیشتر از حد گس لازم ارسال کنین و همه‌ش مصرف نشه، بقیه گس به شما بازپرداخت می‌شه. اما اگر گس مصرفی تمام بشه و تراکنش شما شکست بخوره، گسی که استفاده کردید برگشت داده نمی‌شه.