جستجو برای:
سبد خرید 0
  • آخرین دوره های آموزشی
  • درخواست پروژه
  • مقالات بلاکچین
  • تماس با ما

ورود

گذرواژه خود را فراموش کرده اید؟

ثبت نام

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

  • 09395149363
  • info@fara-zaman.ir
  • لیست علاقه مندی ها
0
فرازمان | آکادمی بلاکچین
  • آخرین دوره های آموزشیداغ
  • درخواست پروژه
  • مقالات بلاکچینجدید
  • تماس با ما
آخرین اطلاعیه ها
جهت نمایش اطلاعیه باید وارد سایت شوید
شروع کنید

وبلاگ

فرازمان | آکادمی بلاکچیناخبارآموزش برنامه نویسی سالیدیتیگس – gas در سالیدیتی(solidity)

گس – gas در سالیدیتی(solidity)

12 اردیبهشت 1401
ارسال شده توسط مریم طاهری
آموزش برنامه نویسی سالیدیتی
گاز(Gas) در سالیدیتی(solidity)

گس – gas در سالیدیتی(solidity) کارمزدی است که برای انجام تراکنش در بلاک چین اتریوم لازم است. قیمت گس بر حسب gwei مشخص شده است. Gwei نامی از ارز دیجیتال اتر است. به جای اینکه بگویید قیمت گس شما 0.000000001 اتر است، می توانید بگویید قیمت گس شما 1 gwei است. از گس برای تخصیص منابع ماشین مجازی اتریوم (EVM) استفاده می‌شود تا تراکنش‌های کیف پول و تراکنش‌های قرارداد هوشمند بتوانند خود به خود اجرا شوند.

“عرضه و تقاضا در بلاکچین تعیین کننده قیمت گس در Solidity است. اگر قیمت گس شما خیلی پایین باشد، تراکنش شما اجرا نخواهد شد. اگر قیمت گس شما بیش از حد بالا باشد، پس شما بیش از حد گس پرداخت کردید.”

به عبارت ساده گس یک واحد محاسبه است که برای محدود کردن اجرای محاسبات در شبکه استفاده می شود.

هدف از گس = محدود کردن میزان تراکنش هایی که سیستم انجام خواهد داد.

گس- Gas در سالیدیتی(solidity) چگونه محاسبه می شود؟

کارمزد تراکنش با استفاده از این فرمول ( گس مصرفی * قیمت گس) محاسبه می شود.

دو جزء برای گاز در Solidity وجود دارد که درک آنها مهم است.

(1) قیمت گس (Gas Price) = برای 1 گس چقدر حاضرید بپردازید. قیمت گسرا به عنوان مبلغی که برای 1 گالن یا لیتر بنزین در پمپ بنزین می پردازید در نظر بگیرید.

  • Lower= زمان انتظار کندتر برای پردازش در بلوک
  • Higher = زمان سریعتر برای پردازش در بلوک

(2) حد گس (Gas Limit) = حداکثر گسی که می خواهید برای این معامله استفاده کنید. محدودیت گس را به عنوان حداکثر مقدار بنزینی که باک بنزین خودروی شما می تواند نگه دارد و می خواهید برای یک سفر با ماشین (بدون توقف) استفاده کنید، در نظر بگیرید.

  • حد پایین= محاسبات کمتری که تراکنش شما می تواند پردازش کند
  • محدودیت بالاتر= محاسبات بیشتری را تراکنش شما می تواند پردازش کند
گاز(Gas) در سالیدیتی(solidity)

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

همه عملکردها برای اجرا نیاز به هزینه گس ندارند. فقط تراکنش‌هایی که برای نوشتن در بلاکچین هستند نیاز به گس دارند. اگر برای مشاهده داده‌ها (مانند موجودی، متغیرهای قرارداد، درخواست داده‌های بازار از یک صرافی غیرمتمرکز) با یک قرارداد تماس می‌گیرید، نیازی به پرداخت هزینه گاز ندارید.

چگونه هزینه های گاز قرارداد هوشمند خود را کاهش دهید

داده های بلاک چین بر روی هزاران دیسک کامپیوتری در سراسر جهان تکرار می شود. این راحتی در دسترسی به داده ها، ذخیره سازی را گران می کند.

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

SSTORE- داده ها را در یک شکاف ذخیره سازی ذخیره می کند

SLOAD- داده ها را از یک اسلات ذخیره سازی می خواند

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

- اگر مجبور نیستید، داده ها را روی بلاک چین ذخیره نکنید

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

- اگر می توانید ازمتغیرهای Const و immutable استفاده کنید

برای متغیرهای ذخیره سازی که تغییر نمی کنند از کلمات کلیدی Const و immutable  استفاده کنید. استفاده از کلمات کلیدی Const و immutable  باعث کاهش هزینه گس شما در هنگام فراخوانی SLOAD می شود. Immutable به این معنی است که می توانیم متغیر را در سازنده تنظیم کنیم اما هرگز نمی توانیم دوباره تغییر دهیم. Const مشابه immutable  است اما در اعلان مشخص شده است و هرگز نمی تواند دوباره تغییر کند

مثلا:

				
					// use immutable in your variable if it is not going to change
// this will reduce gas costs
address public immutable WETH;

constructor (address wethToken) {
    WETH = wethToken;
}



// or use a constant specified in the declaration
address public constant WETH = 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
				
			

- خواندن و نوشتن را کاهش دهید

تعداد دفعاتی که عملکردهای قرارداد هوشمند شما به فضای ذخیره‌سازی دسترسی دارند را کاهش دهید. در تابع خود ذخیره سازی را در متغیر حافظه در ابتدای تابع بخوانید و ذخیره سازی را در انتهای تابع تنظیم کنید.استفاده از ذخیره سازی سرد و گرم کردن آن (با استفاده از حافظه محلی) و سپس ذخیره داده ها و سرد کردن مجدد آن هزینه گس کمتری دارد.

				
					// accessing storage multiple times costs more gas
function foo () public returns (uint) {
  require read storage
  require read storage
  if statement read storage
  else if read storage
  set storage


// accessing storage less cost less gas
// read storage once and save it into local memory in your function
// then set storage at the end of your function 
function foo () public returns (uint) {
  memory = read storage
  require memory
  require memory

  if statement memory
  else if memory
  set storage
				
			

- اندازه نوع داده را کاهش دهید و از struct استفاده کنید

ساختارها  (Struct) رکوردهایی با بیش از یک نوع داده هستند. EVM هر نوع داده را می گیرد و آنها را در اسلات ها قرار می دهد (به ترتیب اعلام / از بالا به پایین). اسلات های ذخیره سازی هر کدام 32 بایت بوده و همچنین بسیار گران هستند. بنابراین اندازه انواع داده های خود را تغییر دهید. برای مثال اگر به یک نوع uint256 که 32 بایت است نیاز ندارید آن را کوچکتر کنید.

به عنوان مثال:

  • uint128 – 16 bytes
  • uint96 – 12 bytes
  • uint64 – 8 bytes

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

دوره ها و آموزش های فرازمان

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

نقشه راه

راهنما آکادمی فرازمان

برای یادگیری برنامه نویسی بلاکچین…

دوره مفاهیم پایه برنامه نویسی
دوره جامع جاوا اسکریپت و جی کوئری
آموزش برنامه نویسی سالیدیتی
دوره جامع html/css/bootstap
آموزش پیشرفته برنامه نویسی بلاکچین
آموزش Whitepaper نویسی برای پروژه های بلاکچینی

در این باره بیشتر بخوانید

توابع modifiers در سالیدیتی(solidity)

بررسی رفتار توابع View و Pure در سالیدیتی(solidity)

سطح دسترسی(Visibility) در سالیدیتی

توابع(Function) در سالیدیتی(Solidity)

متغیرها در سالیدیتی(solidity)

برچسب ها: گاز در سالیدیتیGas in solidityGas in Solidity smart contractsآموزش برنامه نویسی سالیدیتیسالیدیتی
جدیدتر توابع modifiers در سالیدیتی(solidity)
قبلی رویدادها (Events) در قراردادهای هوشمند Solidity

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
برچسب‌ها
function nft آموزش برنامه نویسی سالیدیتی آموزش بلاکچین آموزش سالیدیتی اتریوم اخبار بازی اخبار رمز ارز اخبار کریپتو امنیت قرارداد هوشمند ان اف تی اکتیویژن ایلان ماسک بازی بلاکچین برنامه نویسی بلاک چین برنامه نویسی سالیدیتی بلاک چین بیتکوین بیت کوین تحلیل بیت کوین تسلا توابع توابع در سالیدیتی جاوا اسکریپت حسابرسی در قرارداد هوشمند خبر بلاکچین دسنترالند دوج کوین رمزارز سالیدیتی سرمایه گذاری سندباکس قرارداد هوشمند مایکروسافت متاورس مقاله بلاکچین مقاله کریپتویی موزیلا نمونه قرارداد هوشمند سالیدیتی وب3 پی پال کریپتو کسب درامد کیف پول اتریوم کیف پول بلاکچین
  • محبوب
  • جدید
  • دیدگاه ها
دسته‌ها
  • آموزش برنامه نویسی سالیدیتی
  • اتریوم
  • اخبار NFT
  • اخبار متاورس
  • امور مالی غیرمتمرکز
  • برنامه نویسی سالیدیتی
  • بیت کوین
  • سولانا
  • صرافی غیرمتمرکز
  • قرارداد هوشمند
  • کریپتو
  • کیف پول ارز دیجیتال
  • مقالات بلاکچین
  • مقاله
  • نمونه قراردادهای هوشمند سالیدیتی
 فـرا زمان با بهره گیری از دانش روز دنیا و توانایی در آموزش، مشاوره و پیاده سازی انواع پروژه های بلاکچینی پا به عرصه ی رقابت گذاشته و هر روز به گروه و تخصص خود می افزاید.
دسترسی سریع
  • خانه
  • دوره ها
  • اخبار
  • تماس با ما
  • ساری، ابتدای خیابان 15 خرداد،مجتمع بهار،طبقه اول
  • 09395149363
  • info@fara-zaman.ir
خبرنامه

چیزی را از دست ندهید، ثبت نام کنید و در مورد شرکت ما مطلع باشید.

نماد ها

logo-samandehi
© 1400. آکادمی فرازمان - طراحی فرازمان
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://fara-zaman.ir/?p=10758
دسته بندی دوره ها
دوره های من
دسته بندی دوره ها

طراحی وب

  • 1 دوره

WhitePaper

  • 1 محصول

برنامه نویسی اتریوم (سالیدیتی)

  • 4 محصول

کلاس مجازی

  • 1 دوره
دوره های من
برای مشاهده خریدهای خود باید وارد حساب کاربری خود شوید
Twitter Youtube Instagram
مرورگر شما از HTML5 پشتیبانی نمی کند.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند.

گروه تخصصی برنامه نویسی
  • 09395149363
  • پشتیبانی آنلاین
  • 09395149363