گس فی GAS FEE در شبکه اتریوم
کارمزد شبکه یا گس فی چیست؟
اگر بخواهیم مفهوم گس فی GAS FEE ethereum را به زبان ساده و به صورت خلاصه بگوئیم، میتوانیم آنرا اینگونه تعریف کنیم:
گس فی، هزینه ای است که کاربر برای اجرا شدن هرگونه دستوری در بلاکچین اتریوم، باید آن را پرداخت کند.
حال که به صورت خلاصه مفهوم گس فی را مطرح کردیم، نگاهی عمیقتر به معنا و مفهوم گس فی بیاندازیم:
همانگونه که مستحضر هستید، هر زمانی که بخواهیم تراکنش مالی ای را انجام دهیم، باید هزینه ای بابت آن پرداخت کنیم و هیچگاه تراکنشی رایگان نیست. سادهترین حالت تراکنش را هم میتوانیم عملیات کارت به کارت بانکی را مثال بزنیم. هنگامی که میخواهیم مبلغی را از طریق خودپرداز عابربانک از حساب خود به حساب شخص دیگری انتقال دهیم، مشخصاً در حال انجام یک تراکنش هستیم. این تراکنش برای ما که در حال ارسال آن به شبکه بانکی هستیم، مستلزم پرداخت هزینه است. حال ممکن است این هزینه با توجه به تعرفه های مشخص شده از سوی بانک، مقادیر مختلفی باشد.
در شبکه اتریوم (و البته سایر بلاکچین های مشابه آن)، به این هزینه ها که باید بابت انجام شدن تراکنش هایمان (خواه تراکنش مالی باشد و یا انتقال اطلاعات)، به شبکه(در نسخه 2.0 اتریوم، تحت عنوان ولیدیتور) پرداخت کنیم، گس فی یا هزینه گس گفته میشود.
Gas چیست؟
Gas یک زیر واحد از رمز ارز بومی شبکه اتریوم (همان اتر) است که به منظور انجام شدن امور مد نظر کاربر، باید از سمت وی به شبکه پرداخت شود. هزینه پرداختی مربوط، از طرفی به منظور تامین درآمد ماینرهای اتریومی که برای تائید کردن تراکنش ها انرژی(و طبیعتاً هزینه) مصرف میکنند، میباشد، و از طرفی دیگر، علاوه بر تامین منافع ماینرها، این هزینه ی گس، به نوعی یک مکانیزم امنیتی برای شبکه اتریوم ایجاد میکند تا هرگونه حمله یا عملیات خرابکارانه و اسپم در آن را بسیار پر هزینه کند جوری که دیگر صرفه انجام نداشته باشد.
بعد از فورک اتریوم و وارد شدن به اتریوم 2.0، چون مکانیزم اجماع این شبکه از اثبات کار یا همان proof of work به اثبات سهام یا همان proof of stake تغییر کرد، نام فعالین شبکه، از ماینر به ولیدیتور تغییر کرد. در حال حاضر این ولیدیتورها هستند که با استیک(یا گروگذاری) کردن حداقل 32 اتر در شبکه اتریوم، به ثبات این شبکه کمک میکنند.
از جمله نکاتی که در تراکنش های اتریومی وجود دارد، متغیر بودن میزان هزینه ای است که کاربر باید برای انجام تراکنش مورد نظرش پرداخت کند. این مقدار هزینه (همانطور که مسلماً تا اینجا دیگر متوجه شده اید، منظورمان همان گس فی است) با توجه به کم یا زیاد بودن تراکنش ها، یا کم یا زیاد بودن بار شبکه، در ساعات و همچنین در روزهای مختلف میتواند کاملاً متفاوت باشد.
تا اینجا کار سعی کردیم توضیحاتی در خصوص گس فی داده باشیم. حال میخواهیم به بررسی عوامل تاثیر گذار بر گس فی و نحوه محاسبه آن بپردازیم:
نحوه محاسبه گس فی
اگر بخواهیم با مقرون به صرفه ترین میزان هزینه، تراکنش های خودمان را به شبکه اتریوم ارسال کنیم، بهتر است تا جای ممکن در خصوص نحوه محاسبه هزینه تراکنش ها و همچنین چگونگی مصرف کمتر گس، بیشتر و بیشتر اطلاعات کسب کنیم و بدانیم که محاسبات به چه صورت انجام میشوند.
با توجه به اینکه هزینه های شبکه اتریوم، عموماً کمتر از 1 اتر هستند، اتریوم برای محاسبه گس، از واحد پایه ای تحت عنوان wei (بخوانید وِی) استفاده میکند. این واحد به افتخار یک مهندس کامپیوتر به نام Wei Dai که از فعالیت مهم صنعت کریپتو بوده نامگذاری شده است. واحد wei کوچکترین واحد اندازه گیری در اتریوم میباشد و در اصل تمامی محاسبات بر مبنای این واحد انجام میشوند. هر 1 واحد از wei معادل 10 به توان منفی 18 اتر (یعنی 18 رقم بعد از اعشار) میباشد.
در کنار واحد wei، واحد دیگری که بیشترین استفاده را در تراکنش های اتریومی برای ما دارد و در اصل مقدار هزینه گس را به ما نمایش میدهد، واحدی با نام gigawei (gwei) است. هر gwei معادل 1 میلیارد wei (معادل 10 به توان منفی 9 اتر) میباشد. عموماً وقتی از gwei صحبت میکنیم، میخواهیم بگوئیم که یک تراکنش چقدر هزینه دارد. پس با توجه به چیزی که فهمیدیم، هنگامی که مثلاً گفته میشود هزینه انجام یک تراکنش 1000 gwei شده است یعنی میزان base fee ای که باید پرداخت کنیم معادل 0.000001 اتر خواهد بود. (در خصوص چیستی base fee در مطلبی دیگر صحبت خواهیم کرد، اما در حال حاضر فقط در همین حد بدانید که base fee حداقل مقدار هزینه ای است که برای اینکه تراکنش ما مجاز به قرارگیری در یک بلاک باشد باید بپردازیم.)
در کنار base fee، المان های دیگری نیز در محاسبه هزینه نهایی گس مشارکت دارند که فرمول آنرا بر اساس هارد فورک لندن اتریوم (اصلاحاً با نام مرج اتریوم معروف شده است) در زیر برایتان آورده ایم:
1 |
Total Fee = Gas limit * (Base fee + Tip) |
حال به توضیح هر کدام از المان های این فرمول می پردازیم:
Gas limit: این المان، حداکثر میزان گسی است که حاضرید برای انجام شدن تراکنش خود بپردازید. اگرچه که میتوانیم مقدار این آیتم را خودمان مشخص کنیم، اما این کار را باید با احتیاط انجام داد، چون انواع مختلف تراکنش هایی که در اتریوم داریم، هر کدام نیاز به مقدار گس متفاوتی برای انجام شدن دارند. پس توصیه میکنیم این مورد را به نرمافزار کیف پول خود محول کنید تا بهترین انتخاب را برایتان انجام دهد.
Base fee: همانطور که پیشتر گفتیم، base fee حداقل مقدار هزینه ای است که برای اینکه تراکنش ما مجاز به قرارگیری در یک بلاک باشد باید بپردازیم. مقدار گس مورد نیاز برای پرداخت به عنوان base fee، بر اساس میزان تقاضاهای موجود برای انجام شدن تراکنش ها مشخص میشود. هرچقدر تعداد تقاضاهای انجام شدن تراکنش ها بیشتر باشد، این هزینه هم بالاتر خواهد رفت.
Tip: این المان، همانگونه که از نامش هم پیداست، به عنوان انعام یا پاداشی است که تمایل داریم بدهیم تا تراکنش ما زودتر انجام شود. این آیتم تحت عنوان priority fee نیز نامیده میشود. با توجه به اینکه ماینرها میتوانند ببینند که کدام تراکنش ها شامل tip هستند، انجام شدن آن تراکنش ها که tip دارند را در اولویت قرار میدهند. مشخصاً هرچقدر این مقدار بالاتر باشد، تراکنش مربوط نیز در جایگاه پردازش بالاتری قرار خواهد گرفت و سریعتر انجام خواهد شد.
به عنوان نکته مهمی که بهتر است در خصوص gas limit به آن دقت داشته باشید:
اگر gas limit یا همان مقدار محدودیت گس که برای انجام تراکنش مشخص میکنید، کمتر از مقدار مورد نیاز تراکنش برای انجام شدن باشد، اگرچه که هزینه پردازش از حساب شما کسر خواهد شد، اما تراکنش برگشت خورده و انجام نخواهد شد. و البته اگر مقدار gas limit را بالاتر از مقدار مورد نیاز برای انجام شدن تراکنش قرار دهید، باقیمانده ی گس مصرفی به حساب شما باز خواهد گشت. پس توصیه میکنیم در تراکنش های خود به این مسئله دقت داشته باشید و از بالا گذاشتن مقدار gas limit هراسی به خود راه ندهید.
در نهایت بگذارید با یک مثال، درکتان از مفاهیم مطرح شده را با ذکر یک مثال برایتان سادهتر کنیم:
فرض کنیم میخواهیم 1 اتر را از حساب خود، به حساب شخص دیگری انتقال دهیم. حداقل مقدار گسی که بابت انجام شدن یک تراکنش استاندارد انتقال در شبکه اتریوم مورد نیاز است 21000 واحد میباشد. پس این مقدار را به عنوان gas limit خودمان در نظر میگیریم. بر فرض مثال، حداقل مقدار گس مورد نیاز برای ارسال شدن تراکنش(یا همان base fee) هم 180 gwei باشد. از طرفی تمایل داریم که تراکنش مربوط جهت انتقال اتر زودتر انجام شود، پس یک مقدار tip به اندازه 20 gwei نیز اضافه میکنیم. در این سناریوی فرضی ما، بر اساس فرمول محاسبه هزینه ای که باید بپردازیم، بهصورت زیر خواهد بود:
1 |
Total Fee = 21000 gwei * (180 gwei + 20 gwei) |
با توجه به فرمول، مجموع هزینه ای که در این مثال باید بابت عملیات انتقال اتر پرداخت کنیم، مقدار 4200000 gwei یا معادل 0.0042 ETH خواهد بود. پس با این حساب، مقدار اتریومی که از حساب ما به شبکه اتریوم ارسال خواهد شد 1.0042 ETH است و گیرنده نیز 1 ETH دریافت خواهد نمود.
سخن پایانی
در پایان برای درک بهتر، میتوان گس را به عنوان سوخت لازم برای اجرا شدن تراکنش ها مطرح کرد. درست مثل یک ماشین که برای حرکت، نیاز به بنزین دارد.
در این مطلب سعی کردیم مفاهیم موجود در gas fee یا همان هزینه انجام شدن تراکنش ها در شبکه اتریوم را توضیح دهیم. امیدواریم که این مطلب برایتان مفید و کاربردی بوده باشد و به اندازه کافی با مفهوم گس و هزینه ها در بلاکچین اتریوم آشنا شده باشید و از این به بعد بتوانید به راحتی هزینه تراکنش هایی که در شبکه اتریوم بابت ارسال اخذ خواهد شد را محاسبه و درک نمایید.
منابع معتبر مرتبط:
https://ethereum.org/en/developers/docs/gas
https://medium.com/@eiki1212/what-is-ethereum-gas-simple-explanation-2f0ae62ed69c
مطالب زیر را حتما مطالعه کنید
بررسی رفتار توابع View و Pure در سالیدیتی Solidity
توابع Payable در قراردادهای هوشمند Solidity
سالیدیتی Solidity چیست؟
سطح دسترسی Visibility در سالیدیتی Solidity
توابع Function در سالیدیتی Solidity
انواع حافظه در قرارداد هوشمند سالیدیتی
8 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
بسیار گویا و شفاف بیان کردید
مشخصه برای نوشتن این مطلب واقعا وقت گذاشته شده
واقعا ارزش وقت گذاشتن داشت
خیلی ممنون از توضیحات خوبتون
بازم درمورد این موضوع مطلب بزارین
موضوعات اتریوم یکی از موضوعات موردعلاقه منه
چه مطلب خوبی
کجا می تونم اطلاعات کاملتری درباره این موضوع پیدا کنم؟
سلام عالی بود