گس یک مفهوم مهم و حیاتی در شبکه اتریوم است. در واقع گس همانند سوخت و بنزین مورد نیاز خودرو، لازمه فعالیت در شبکه اتریوم است.
برای درک بهتر ادامه مقاله، پیشنهاد میشود ابتدا مقاله آشنایی با ماشین مجازی اتریوم که در این نشانی وجود دارد را مطالعه کنید.
گس چیست؟
گس در واقع واحدی است که برای اندازهگیری میزان منابع محاسباتی لازم برای اجرای یک عملیات (Operation) خاص بر روی شبکه اتریوم بکار میرود.
از آنجایی که هر تراکنش اتریوم برای اجرایی شدن به منابع محاسباتی نیاز دارد، هر تراکنش به گس نیاز دارد. گس در واقع به کارمزد مورد نیاز برای اجرای موفق یک تراکنش بر روی شبکه اتریوم اطلاق میشود.
کارمزدهای گس در قالب ارز پایه شبکه اتریوم با نام اتر پرداخت میشود. هزینه گس به واحدی به نام gwei نشان داده میشود که خود gwei نیز بر مبنای اتر بیان میشود. هر gwei معادل 10-9 اتر است. برای مثال، به جای گفتن آنکه هزینه گس معادل 000000001/0 اتر است، گفته میشود که هزینه گس یک gwei است. کلمه gwei به معنای giga-wei است و معادل 1.000.000.000 wei است. کلمه Wei از نام خالق b-money به نام Wei Dai گرفته شده است و کوچکتربن واحد اتر است.
پیش از ارتقاء لندن
روش محاسبه کارمزدها بر روی شبکه اتریوم با معرفی و اجرای به روزرسانی لندن بر روی شبکه اتریوم تغییر کرد. در ادامه روش محاسبه فی در شبکه اتریوم پیش از این به روزرسانی آورده شده است:
فرض کنید آلیس قصد دارد یک اتر به باب پرداخت کند. در این تراکنش، حد گس (Gas limit) 21.000 واحد و هزینه گس 200 gwei است.
مجموع کارمزد از فرمول زیر بدست میآید:
Gas units (limit) * Gas price per unit, 21,000 * 200 = 4,200,000 gwei
زمانی که آلیس پول را ارسال میکند، 0042/1 اتر از حساب آلیس کسر میشود و باب 0000/1 اتر دریافت میکند و ماینر نیز 0042/0 اتر بدست میآورد.
پس از ارتقاء لندن
به روزرسانی لندن در تاریخ 5 آگوست 2021 با هدف قابل پیشبینیسازی مکانیزم محاسبه کارمزد برای کاربران در شبکه اتریوم اجرایی شد. در واقع مزیت اصلی و محوری در این به روزرسانی، تخمین بهتر و دقیقتر کارمزد تراکنش برای کاربران اعلام شد تا بدین ترتیب، تراکنشها با سرعت بیشتری نهایی شوند و در این بین با سوزانده شدن بخشی از کارمزد تراکنش، مقداری روند صدور اتر کندتر شود.
پس از اجرای به روزرسانی لندن، اعلام شد زین پس هر بلوک یک کارمزد پایه (base fee) دارد. این کارمزد پایه حداقل قیمت به ازای هر واحد گس برای قرارگیری در بلوک بعدی است و بر اساس ترافیک شبکه یا در واقع حجم پرشده از هر بلوک محاسبه میشود. از آنجایی که کارمزد پایه سوزانده میشود، کاربرهای میتوانند یک انعام (کارمزد اولویتدهی) در تراکنش قرار دهد. این انعام (tip) ماینر را ترغیب میکند که آن تراکنش را اجرا و در بلوک درج کنند. لازم به ذکر است کارمزد اولویتدهی به صورت خودکار توسط بسیاری از کیفپولها تعیین میشود.
محاسبه مجموع کارمزد تراکنش از فرمول زیر بدست میآید:Gas units (limit) * (Base fee + Tip)
فرض کنید که جردن میبایست 1 اتر به تیلور پرداخت کند. در این تراکنش، حد گس 21.000 واحد است و کارمزد پایه 100 gwei است. جردن یک انعام 10 gwei نیز به تراکنش میافزاید.
با توجه به فرمول بالا، کارمزد به شرح زیر محاسبه میشود:
21,000 * (100 + 10) = 2,310,000 gwei
زمانی که جردن پول را ارسال میکند، 00231/1 اتر از حساب وی کسر میشود و تیلور نیز 0000/1 اتر دریافت میکند. در این میان ماینر انعامی معادل 00021/0 اتر دریافت خواهد کرد و 0021/0 اتر نیز سوزانده میشود.
علاوه بر این، جردن میتواند یک کارمزد حداکثری (max fee) برای تراکنش خود تنظیم کند. تفاوت میان کارمزد حداکثری و کارمزدی که در عمل توسط ماینر کسر میشود به جردن عودت داده میشود.
refund = max fee – (base fee + priority fee)
جردن میتواند بدون نگرانی در زمینه پرداخت بیش از حد کارمزد، ماکزیمم مقدار کارمزد مورد خود را برای اجرایی شدن تراکنش تعیین کند.اندازه بلوک
پیش از به روز رسانی لندن، اتریوم دارای بلوکهایی با اندازه ثابت بود. در زمان شلوغی شبکه، ظرفیت بلوکها به صورت کامل از تراکنش میشد. در نتیجه کاربران غالبا در مواقع ترافیک شبکه بایستی برای ثبت تراکنش خود زمان زیادی صبر میکردند و این امر منجر به ایجاد نارضایتی و تجربه بد در سمت کاربر میشد.
در به روزرسانی لندن، سایز بلوکهای شبکه متغیر شد. هر بلوک یک سایز هدف معادل 15 میلیون گس دارد ولی سایز بلوک با توجه به نیاز موجود در شبکه میتواند افزایش یا کاهش یابد. افزایش سایز بلوک نیز یک سقف معادل 30 میلیون گس (دو برابر بیشتر) خواهد بود. این پروتکل به طور متوسط از طریق فرآیند آزمون و خطا (tâtonnement) به اندازه بلوک تعادلی 15 میلیونی دست مییابد. این بدان معناست که اگر اندازه بلوک از اندازه هدف بزرگتر شود، پروتکل به صورت خودکار، کارمزد پایه را افزایش خواهد داد. به صورت مشابه، پروتکل به صورت خودکار کارمزد پایه را در صورتی که اندازه بلوک کمتر از اندازه هدف شود، کاهش میدهد. مقداری که با آن کارمزد پایه تنظیم میشود، متناسب با میزان فاصله اندازه بلوک فعلی از هدف است.
کارمزد پایه
هر بلوک یک کارمزد پایه به عنوان هزینه رزرو دارد و برای واجد شرایط شدن یک تراکنش برای گنجانده شدن در یک بلوک، قیمت پیشنهادی گس باید حداقل برابر با هزینه کارمزد پایه باشد. محاسبات کارمزد پایه مستقل از وضعیت بلوک فعلی بوده و با توجه به بلوک قبلی انجام میشود و بدین ترتیب، اندازهگیری کارمزد برای کاربر قابل پیشبینیتر میشود. زمانی که بلوک استخراج میشود، کارمزد پایه سوزانده و از گردش خارج میشود.
کارمزد پایه به کمک فرمولی بدست میآید که اندازه بلوک قبلی (میزان گس استفاده شده برای تمامی تراکنشها در بلوک قبلی) را با اندازه گس هدف مقایسه میکند. کارمزد پایه حداکثر در هر بار 12.5% افزایش یا کاهش خواهد داشت.
Block Number | Included Gas | Fee Increase | Current Base Fee |
1 | 15M | 0% | 100 gwei |
2 | 30M | 0% | 100 gwei |
3 | 30M | 12.5% | 112.5 gwei |
4 | 30M | 12.5% | 126.6 gwei |
5 | 30M | 12.5% | 142.4 gwei |
6 | 30M | 12.5% | 160.2 gwei |
7 | 30M | 12.5% | 180.2 gwei |
در بخش دوم این مقاله بیشتر در مورد متغیرهایی همانند tip، max fee و به روزرسانی 1559 صحبت خواهد شد.