هر تراکنشی که به شبکهی اتریوم ارسال میشود، باید توسط ماینرها پردازش، محاسبه و اعتبارسنجی شده، سپس در زنجیرهی بلوکی ثبت شود. هر گامی که ماینر در پردازش و محاسبات خود طی میکند، گَس نام دارد. در این صورت، میگوییم ماینر باید برای پردازش یک تراکنش گَس مصرف کند. از طرف دیگر، باید به ازای هر گَسی که توسط ماینر مصرف میشود، پاداشی برای او در نظر گرفته شده باشد. این پاداش از سوی فرستندهی تراکنش پرداخت خواهد شد. به عبارتی دیگر، پاداش مصرف گَس از موجودیِ فرستندهی تراکنش کم شده و به موجودیِ ماینر افزوده خواهد شد. در نتیجه، هزینهی اجرای یک تراکنش، یا همان هزینهی مصرف گَس، بر عهدهی فرستندهی تراکنش است.
علت وجود گَس در شبکهی اتریوم پیشگیری از حملهی سرویس-بازدار یا Denial-of-Service (DoS) علیه ماینرهاست. تصور کنید گَس در اتریوم وجود ندارد. در این صورت، یک فرستندهی بد نیّت میتواند تراکنشی را به شبکه ارسال کند که ماینر را در یک حلقهی بینهایت قرار دهد. چنین تراکنشی حاوی دستوری است که پردازش آن هیچ پایانی نداشته و در حین اجرای این پردازشِ بیپایان، ماینر نمیتواند تراکنشِ دیگری را پردازش نماید. در نتیجه، پردازش چنین تراکنشی ماینر را از ارائهی سرویس به دیگر کاربران اتریوم باز میدارد. ولی، با وجود گَس و دستمزد گَس هیچ فرستندهای انگیزه ندارد تا این حمله را اجرا کند و تراکنشی را بفرستد که همواره در حال کم کردن موجودیِ حساب اوست.
پیشبینی و برآورد دستمزد گَس در اتریوم کار دشواری است. معمولا در ساعات پیکِ تراکنش در اتریوم، دستمزدها افزایش مییابند و در ساعات کمتراکنش این دستمزدها با کاهش روبرو میشوند. از طرف دیگر، نوسان قیمت اِتِر نیز عامل دیگری است که موجب سختی کار در تعیین منصفانهی دستمزدها در اتریوم میشود. گاهی، ارسال یک تراکنش برای اجرای یک کد، در زمانهای متفاوت با هزینههای متفاوتی مواجه خواهد شد. اگر در مقطع جهش قیمت اتر قرار داشته باشیم، ممکن است هزینهای که باید هفتهی آینده برای دستمزد یک تراکنش پرداخت کنیم بسیار بیشتر از هزینهای باشد که امروز برای دستمزد همان تراکنش میپردازیم.
همواره هزینهی گَس در اتریوم، مهمترین چالش و دغدغه برای ارسال تراکنش در این شبکه است. برای حل این مسأله راه حلهایی نیز وجود دارند. یکی از سادهترین راه حلها استفاده از قابلیت Gas-Optimizer کامپایلرها و محیطهای توسعهی قرارداد هوشمند (مانند Remix و Truffle) است. با فعالسازی این قابلیت، کامپایلر ترتیب و چینش دستورهای کدِ قرارداد هوشمند را به گونهای تغییر میدهد که پردازش آنها کمترین گَس را مصرف کند. باید توجه داشت که با این روش فقط چینِش دستورها تغییر مییابد نه خودِ دستور. به همین علت، میتوان با اصلاحِ خودِ دستور به مصرف پایینتری از گَس نیز دست یافت.
استفاده از Gas-Optimizer مصرف گَس را صرفا در اجرای کدِ قراردادهای هوشمند بهینه میکند. ولی، اگر یک تراکنش، فاقد کدی برای اجرا باشد و صرفا برای جابجایی رمزارز بین دو کاربر ارسال شود، Gas-Optimizer کمکی به کاهش هزینهی گَسِ آن تراکنش نمیکند.
در ادامه توکن GasToken را معرفی میکنیم که میتواند هزینهی مصرف گَس را برای هر نوع تراکنشی بهبود دهد.
نحوهی کار با GasToken بسیار ساده است. در هنگامِ ارزان بودن گَس در اتریوم، کاربر به تعداد دلخواه توکنِ GasToken خریداری میکند و با این کار یک داده در ذخیرهگاهِ قراردادِ GasToken ذخیره میشود. در صورت افزایشِ هزینهی گَسِ شبکه، کاربر با پس فرستادن توکنهای GasToken به قرارداد هوشمند مذکور، جهت مصرفِ گَس، دادهای را که در گام پیشین ذخیره شده بود، آزاد میکند. این امر موجب میشود اجرای یک تراکنش، در مقایسه با حالتی که از GasToken استفاده نمیشود، ارزانتر شود.
سازوکار کلی ذخیرهسازی داده در زمان پایین بودن هزینهها و آزادسازی آن در زمان افزایش هزینهها، ایدهی نوینی نیست و پیشتر توسط یک ماینر ارائه شده بود. ماینری که در عمل ماین کردن یک بلوک، مشاهده کرد که نمیتوان این بلوک را پُر کرد مگر آنکه از تراکنشهایی استفاده کند که به فضای ذخیرهسازی، داده اضافه میکنند. این ایده توسط GasToken از حوزهی ماینرها فراتر رفته و به تمام کاربران اتریوم ارتقا یافت. کاربران با توکنیزه کردن گَس، آن را در زمان ارزانی نگه میدارند و در زمان گرانی آزاد (مصرف) میکنند.
GasToken مطابق با استاندارد ERC20 برنامهنویسی شده است و کاربران میتوانند توکنهای خود را با یکدیگر مبادله کنند.
به طور کلی دو نسخه GasToken وجود دارد.
نسخهی اول (GST1): یک قرارداد هوشمند است که کاربران از آن GasToken خریداری میکنند. این قرارداد در ذخیرهگاهِ خود ثبت میکند که هر آدرس اتریوم چه مقدار گَس ذخیره کرده است. در صورت درخواست کاربر برای آزادسازی گَسهای خریداری شده، آن مقدار را برای آن کاربر، از ذخیرهگاهِ خود حذف میکند.
GST1 در آدرس زیر مستقر شده است:
نسخهی دوم (GST2): برای هر کاربر متقاضی، یک قرارداد هوشمند ایجاد میکند و در آن گَسهای خریداری شدهی کاربر را ذخیره میکند. چنانچه، کاربر درخواست آزادسازی گَسهای خریداری شدهی خود را داشته باشد، این قرارداد پس از آزادسازی گَسها، برای همیشه غیرفعال خواهد شد.
GST2 در آدرس زیر مستقر شده است:
هر دو نسخهی GasToken با زبان سالیدیتی برنامهنویسی شدهاند.
در چند سال اخیر که شبکهی اتریوم با جهش قیمت ارز بومیاش مواجه شد، اقبال عمومی برای توسعه و پیادهسازی برنامههای غیرمتمرکز روی این پلتفرم کاهش یافت. به دنبال آن، بنیاد اتریوم و توسعهدهندگان هستهی اتریوم سعی کردهاند با ارائهی هاردفورک لندن و پروپوزالهای دیگر، مصرف گَس را برای اجرای تراکنشها کاهش دهند. رویکرد آنها کاهش مصرف گَس است نه کاهش هزینهی گَس. اما ایدهای مانند GasToken رویکرد مکملِ آنها را دنبال میکند. یعنی کاهش هزینه نه کاهش مصرف. توسعهدهندگان هستهی اتریوم و توسعهدهندگان GasToken همواره در حال بهبود و ارتقای کار خود هستند. چیزی که در نهایت سعی میکند منزلت اتریوم را، به عنوان نخستین گزینه برای توسعهی Dapp، حفظ کند.
0 نظر
تازه ترین ها