Перейти до основного вмісту
Change page

Газ та комісії

Газ є життєво важливим для мережі Етеріум. Це паливо, яке дозволяє їй працювати, так само як автомобілю потрібен бензин для руху.

Передумови

Щоб краще зрозуміти цю сторінку, ми рекомендуємо спочатку прочитати про транзакції та EVM.

Що таке газ?

Газ — це одиниця вимірювання обчислювальних зусиль, необхідних для виконання певних операцій у мережі Етеріум.

Оскільки кожна транзакція в Етеріумі потребує обчислювальних ресурсів для виконання, за ці ресурси потрібно платити, щоб гарантувати, що Етеріум не вразливий до спаму і не може застрягти в нескінченних обчислювальних циклах. Оплата за обчислення здійснюється у вигляді комісії за газ.

Комісія за газ — це кількість газу, використаного для виконання певної операції, помножена на вартість одиниці газу. Комісія сплачується незалежно від того, чи була транзакція успішною, чи ні.

A diagram showing where gas is needed in EVM operations Діаграму адаптовано з Ethereum EVM illustrated (opens in a new tab)

Комісії за газ мають сплачуватися у власній валюті Етеріуму — етері (ETH). Ціни на газ зазвичай вказуються в Gwei, що є номіналом ETH. Кожен Gwei дорівнює одній мільярдній частині ETH (0.000000001 ETH або 10-9 ETH).

Наприклад, замість того, щоб говорити, що ваш газ коштує 0.000000001 етера, ви можете сказати, що ваш газ коштує 1 Gwei.

Слово «Gwei» є скороченням від «giga-wei», що означає «мільярд Wei». Один Gwei дорівнює одному мільярду Wei. Сам Wei (названий на честь Вей Дая (opens in a new tab), творця b-money (opens in a new tab)) є найменшою одиницею ETH.

Як розраховуються комісії за газ?

Ви можете встановити кількість газу, яку готові заплатити, під час надсилання транзакції. Пропонуючи певну кількість газу, ви робите ставку на те, щоб ваша транзакція була включена в наступний блок. Якщо ви запропонуєте занадто мало, валідатори з меншою ймовірністю виберуть вашу транзакцію для включення, а це означає, що ваша транзакція може бути виконана із запізненням або взагалі не виконана. Якщо ви запропонуєте занадто багато, ви можете витратити зайвий ETH. Отже, як дізнатися, скільки платити?

Загальна кількість газу, яку ви платите, ділиться на два компоненти: base fee (базова комісія) та priority fee (пріоритетна комісія).

base fee встановлюється протоколом — ви повинні заплатити принаймні цю суму, щоб ваша транзакція вважалася дійсною. priority fee — це пріоритетна комісія, яку ви додаєте до базової комісії, щоб зробити вашу транзакцію привабливою для валідаторів, аби вони вибрали її для включення в наступний блок.

Транзакція, яка оплачує лише base fee, технічно є дійсною, але навряд чи буде включена, оскільки вона не пропонує валідаторам жодного стимулу вибрати її замість будь-якої іншої транзакції. «Правильна» priority визначається використанням мережі на момент надсилання транзакції — якщо попит великий, вам, можливо, доведеться встановити вищу priority, але коли попит менший, ви можете заплатити менше.

Наприклад, припустімо, що Джордан має заплатити Тейлору 1 ETH. Переказ ETH вимагає 21 000 одиниць газу, а базова комісія становить 10 Gwei. Джордан включає пріоритетну комісію у розмірі 2 Gwei.

Загальна комісія тепер дорівнюватиме:

units of gas used * (base fee + priority fee)

де base fee — це значення, встановлене протоколом, а priority fee — це значення, встановлене користувачем як пріоритетна комісія для валідатора.

наприклад, 21,000 * (10 + 2) = 252,000 gwei (0.000252 ETH).

Коли Джордан надсилає гроші, з акаунта Джордана буде списано 1.000252 ETH. Тейлору буде зараховано 1.0000 ETH. Валідатор отримує пріоритетну комісію у розмірі 0.000042 ETH. base fee у розмірі 0.00021 ETH спалюється.

Базова комісія

Кожен блок має базову комісію, яка діє як резервна ціна. Щоб мати право на включення в блок, запропонована ціна за газ повинна принаймні дорівнювати базовій комісії. Базова комісія розраховується незалежно від поточного блоку і натомість визначається блоками перед ним, що робить комісії за транзакції більш передбачуваними для користувачів. Коли блок створюється, ця базова комісія «спалюється», вилучаючись з обігу.

Базова комісія розраховується за формулою, яка порівнює розмір попереднього блоку (кількість газу, використаного для всіх транзакцій) із цільовим розміром (половина ліміту газу). Базова комісія збільшуватиметься або зменшуватиметься максимум на 12.5% за блок, якщо розмір цільового блоку вище або нижче цільового показника відповідно. Це експоненціальне зростання робить економічно невигідним нескінченне збереження великого розміру блоку.

Номер блокуВключений газЗбільшення комісіїПоточна базова комісія
118M0%100 Gwei
236M0%100 Gwei
336M12.5%112.5 Gwei
436M12.5%126.6 Gwei
536M12.5%142.4 Gwei
636M12.5%160.2 Gwei
736M12.5%180.2 Gwei
836M12.5%202.7 Gwei

У наведеній вище таблиці показано приклад використання 36 мільйонів як ліміту газу. Відповідно до цього прикладу, щоб створити транзакцію в блоці номер 9, гаманець з упевненістю повідомить користувачеві, що максимальна базова комісія, яка буде додана до наступного блоку, становить current base fee * 112.5% або 202.7 gwei * 112.5% = 228.1 gwei.

Також важливо зазначити, що навряд чи ми побачимо тривалі сплески повних блоків через швидкість, з якою базова комісія зростає перед повним блоком.

Номер блокуВключений газЗбільшення комісіїПоточна базова комісія
3036M12.5%2705.6 Gwei
......12.5%...
5036M12.5%28531.3 Gwei
......12.5%...
10036M12.5%10302608.6 Gwei

Пріоритетна комісія

Пріоритетна комісія стимулює валідаторів максимізувати кількість транзакцій у блоці, що обмежується лише лімітом газу блоку. Без пріоритетних комісій раціональний валідатор міг би включити менше — або навіть нуль — транзакцій без будь-яких прямих штрафів на рівні виконання або рівні консенсусу, оскільки винагороди за стейкінг не залежать від того, скільки транзакцій знаходиться в блоці. Крім того, пріоритетні комісії дозволяють користувачам перебивати ставки інших для отримання пріоритету в межах одного блоку, що фактично сигналізує про терміновість.

Максимальна комісія

Щоб виконати транзакцію в мережі, користувачі можуть вказати максимальний ліміт, який вони готові заплатити за виконання своєї транзакції. Цей необов'язковий параметр відомий як maxFeePerGas (максимальна комісія). Для виконання транзакції максимальна комісія повинна перевищувати суму базової комісії та пріоритетної комісії. Відправнику транзакції повертається різниця між максимальною комісією та сумою базової і пріоритетної комісій.

Розмір блоку

Кожен блок має цільовий розмір, що дорівнює половині поточного ліміту газу, але розмір блоків буде збільшуватися або зменшуватися відповідно до попиту в мережі, аж поки не буде досягнуто ліміту блоку (вдвічі більше цільового розміру блоку). Протокол досягає рівноважного середнього розміру блоку на цільовому рівні за допомогою процесу намацування (tâtonnement). Це означає, що якщо розмір блоку перевищує цільовий розмір блоку, протокол збільшить базову комісію для наступного блоку. Аналогічно, протокол зменшить базову комісію, якщо розмір блоку менший за цільовий розмір блоку.

Величина, на яку коригується базова комісія, пропорційна тому, наскільки поточний розмір блоку відрізняється від цільового. Це лінійний розрахунок від -12.5% для порожнього блоку, 0% при цільовому розмірі, до +12.5% для блоку, що досягає ліміту газу. Ліміт газу може коливатися з часом на основі сигналів валідаторів, а також через оновлення мережі. Ви можете переглянути зміни ліміту газу з часом тут (opens in a new tab).

Детальніше про блоки

Розрахунок комісій за газ на практиці

Ви можете чітко вказати, скільки готові заплатити за виконання вашої транзакції. Однак більшість провайдерів гаманців автоматично встановлюють рекомендовану комісію за транзакцію (базова комісія + рекомендована пріоритетна комісія), щоб зменшити складність для своїх користувачів.

Чому існують комісії за газ?

Коротко кажучи, комісії за газ допомагають підтримувати безпеку мережі Етеріум. Вимагаючи плату за кожне обчислення, виконане в мережі, ми запобігаємо спаму з боку зловмисників. Щоб уникнути випадкових або ворожих нескінченних циклів чи інших марних витрат обчислювальних ресурсів у коді, кожна транзакція повинна встановлювати ліміт на кількість обчислювальних кроків виконання коду, які вона може використати. Фундаментальною одиницею обчислень є «газ».

Хоча транзакція включає ліміт, будь-який газ, не використаний у транзакції, повертається користувачеві (наприклад, max fee - (base fee + tip) повертається).

Diagram showing how unused gas is refunded Діаграму адаптовано з Ethereum EVM illustrated (opens in a new tab)

Що таке ліміт газу?

Ліміт газу — це максимальна кількість газу, яку ви готові витратити на транзакцію. Складніші транзакції, що включають смарт-контракти, вимагають більше обчислювальної роботи, тому для них потрібен вищий ліміт газу, ніж для простого платежу. Стандартний переказ ETH вимагає ліміту газу в 21 000 одиниць газу.

Наприклад, якщо ви встановите ліміт газу 50 000 для простого переказу ETH, EVM споживе 21 000, і ви отримаєте назад решту 29 000. Однак, якщо ви вкажете занадто мало газу, наприклад, ліміт газу 20 000 для простого переказу ETH, транзакція завершиться невдачею на етапі перевірки. Вона буде відхилена до включення в блок, і газ не буде спожито. З іншого боку, якщо під час виконання транзакції закінчиться газ (наприклад, смарт-контракт використає весь газ на півдорозі), EVM скасує будь-які зміни, але весь наданий газ все одно буде спожито за виконану роботу.

Чому комісії за газ можуть бути такими високими?

Високі комісії за газ пов'язані з популярністю Етеріуму. Якщо попит занадто великий, користувачі повинні пропонувати вищі суми пріоритетної комісії, щоб спробувати перебити транзакції інших користувачів. Вища пріоритетна комісія може збільшити ймовірність того, що ваша транзакція потрапить у наступний блок. Крім того, складніші додатки на основі смарт-контрактів можуть виконувати багато операцій для підтримки своїх функцій, що змушує їх споживати багато газу.

Ініціативи щодо зниження витрат на газ

Оновлення масштабованості Етеріуму зрештою мають вирішити деякі проблеми з комісіями за газ, що, у свою чергу, дозволить платформі обробляти тисячі транзакцій на секунду та масштабуватися глобально.

Масштабування рівня 2 (l2) є основною ініціативою для значного покращення витрат на газ, користувацького досвіду та масштабованості.

Детальніше про масштабування рівня 2 (l2)

Моніторинг комісій за газ

Якщо ви хочете відстежувати ціни на газ, щоб надсилати свої ETH дешевше, ви можете використовувати багато різних інструментів, таких як:

Додаткова література