Розкрито комісію за газ Ethereum: глибоке занурення у витрати на транзакції

Автор: Розаріо Боргезі. Переклад: Huohuo/народний блокчейн

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

1. Зрозумійте Ethereum Gas

Газ є паливом для транзакцій і виконання смарт-контрактів у блокчейні Ethereum. Він представляє обчислювальну роботу, необхідну для обробки цих операцій, і оцінюється в невеликих номіналах ефіру, які називаються gwei (1 gwei = 10^-9 ETH).

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

Ось чому плата за газ має вирішальне значення в екосистемі Ethereum:

1) Розподіл ресурсів**: **Плата за газ діє як механізм розподілу мережевих ресурсів. Вимагаючи від користувачів плати за обчислювальну потужність і простір для зберігання, який вони використовують, мережа забезпечує справедливий доступ і запобігає зловживанню ресурсами.

2) Запобігання мережевому спаму**: **Без плати за газ зловмисники могли б заполонити мережу транзакціями спаму, перевантажуючи систему та сповільнюючи законні транзакції. Плата за газ робить розсилання спаму в мережі дорогим і фінансово недоцільним.

3) Стимулюйте майнерів**: **Плата за газ стимулює майнерів включати транзакції в блоки. Майнери віддають перевагу транзакціям із вищою комісією за газ, заохочуючи користувачів пропонувати конкурентоспроможні комісії за своєчасну обробку транзакцій.

4) Безпека мережі**: **Плата за газ сприяє безпеці мережі Ethereum. Вони забезпечують правильне виконання транзакцій і смарт-контрактів, вимагаючи від користувачів оплати за обчислювальні кроки. Це блокує потенційні атаки та вразливості.

5) Масштабованість і ефективність**: ** Встановлюючи вартість кожної операції, плата за газ заохочує розробників писати ефективний і оптимізований код. Зосередження на ефективності має вирішальне значення для масштабування мережі, оскільки воно заохочує передові практики та зменшує навантаження на блокчейн.

6) Економічна модель: плата за газ є невід’ємною частиною економічної моделі Ethereum. Вони сприяють стійкій екосистемі, де майнери отримують винагороду за їхні зусилля, сприяючи зростанню та стабільності мережі.

2. Складові плати за газ

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

  1. Базовий збір: встановлено угодою, ви повинні сплатити принаймні цю суму, щоб ваша транзакція вважалася дійсною.

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

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

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

3. Розрахунок комісії за транзакцію

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

Загальна вартість тепер дорівнює:

одиниць використаного газу * (базова плата + пріоритетна плата)

Основна плата – це значення, встановлене протоколом, а плата за пріоритет – це значення, встановлене користувачем у підказці валідатора.

即21 000 * (10 + 2) = 252 000 вей(0,000252 ETH).

Коли Jordan надсилає гроші, 1,000252 ETH буде списано з рахунку Jordan. Тейлор отримає 1,0000 ETH. Валідатори отримують чайові 0,000042 ETH. Комісія 0,00021 ETHbase спалена, тобто її буде вилучено з обігу.

4. Читання та запис даних

Мережа Ethereum розрізняє запис даних у мережу та читання даних із мережі, і ця відмінність відіграє важливу роль у написанні ваших програм. Загалом запис даних називається транзакцією, тоді як читання даних називається викликом.

  1. Транзакція: транзакція змінює стан мережі під час запису або зміни даних. Це може бути таким же простим, як відправлення ефіру на інший обліковий запис, або таким складним, як виконання функції контракту або додавання нового контракту в мережу. Щоб здійснювати транзакції, ми маємо сплачувати плату за газ, і для їх обробки потрібен час.

  2. Дзвінки: виклики можна використовувати для виконання коду через мережу, але не змінюють дані остаточно. Вони в основному використовуються для читання даних, тому працюють безкоштовно (не витрачається газ). Коли ви виконуєте функцію контракту, викликаючи її, ви негайно отримуєте повернене значення.

5. Об'єкти транзакції

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

  1. GasLimit: максимальна кількість одиниць газу, які можуть бути використані транзакцією. EVM визначає одиниці вимірювання газу, необхідні для кожного кроку розрахунку.

  2. maxPriorityFeePerGas: максимальна ціна спожитого газу як підказка валідатора.

  3. maxFeePerGas: максимальна комісія за одиницю газу, яку ви готові заплатити за транзакцію (включаючи baseFeePerGas і maxPriorityFeePerGas)

6. Лондонське оновлення (EIP-1559)

До оновлення в Лондоні комісії розраховувалися без розмежування між основними та пріоритетними комісіями.

В об’єкті транзакції ми можемо встановити:

  1. GasLimit/startGas: Максимальна кількість одиниць газу, яку може споживати транзакція. Те саме, що й раніше.

  2. GasPrice: сума, яку ми готові заплатити за одиницю газу.

Припустимо, Аліса повинна заплатити 1 ETH Бобу. У транзакції ліміт газу становить 21 000 одиниць, а ціна газу – 200 гвей.

Загальна вартість: Газові одиниці (ліміт) * Ціна газу за одиницю, що становить 21 000 * 200 = 4 200 000 gwei0,0042 ETH

7. Розрахунок комісії у складних операціях

Щоб краще зрозуміти транзакційні витрати, ми можемо подивитися на код операції EVM. Отже, розрахуємо вартість виконання цієї функції:

Функція doMath ( uint a, uint b ) { a + b; b - a; a * b; a== 0; }

a + b (ADD) коштує 3 одиниці газу b - a (SUB) коштує 3 одиниці газу a * b (MUL) коштує 5 одиниць газу a == 0 (EQ) коштує 3 одиниці газу

Отже, загальна вартість цієї операції становить 14 одиниць газу.

Важливо розуміти, що якщо в об’єкті транзакції ми вкажемо gasLimit, що дорівнює 6, буде виконано лише перші дві операції, а потім транзакцію буде зупинено, а сплачену GasFee не буде відновлено, оскільки ми повинні заплатити за роботу. зроблено

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

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

У цьому випадку ми можемо скористатися перевагами функцій, які надають дві найвідоміші бібліотеки розробки EstateGas: ethers.js і web3.js. Ця функція дозволяє нам оцінити вартість газу, пов’язану з виконанням певної функції в блокчейні Ethereum.

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

8. Стратегії зниження плати за газ

1) Використовуйте шар 2

Layer-2 — це допоміжна структура або протокол, побудований на основі блокчейну Ethereum. Ці рішення створені для покращення масштабованості та оптимізації швидкості транзакцій шляхом обробки більшості транзакцій за межами основного ланцюга Ethereum (так званого рівня 1). Рівень 1 включає в себе базовий блокчейн Ethereum, де транзакційні витрати високі та можуть виникнути проблеми з масштабованістю через високий попит.

Серед різних методів Layer-2 є Rollups, прийняті в Arbitrum і Optimism. Зведення об’єднує кілька транзакцій в одну транзакцію, стискає дані та зберігає їх у основній мережі Ethereum. Це значно зменшує комісію за газ і покращує масштабованість, оскільки одна транзакція основної мережі може представляти велику кількість транзакцій поза мережею.

2) Запускайте в періоди зниженого перевантаження мережі

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

Насправді блокчейн Ethereum дозволяє лише близько 20-40 транзакцій на секунду (TPS) (це загальна кількість усіх користувачів Ethereum); коли ліміт досягається, користувачі змушені конкурувати один з одним, щоб отримати свої транзакції, що причини Гонорари зростають.

Щоб перевірити навантаження на мережу, ми можемо використовувати Etherscan.

3) Мінімізуйте транзакції

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

4) Оптимізуйте складність коду

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

5) Енергозберігаючий смарт-контракт

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

9. Висновок

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

У цій статті ми досліджуємо розрахунок і оцінку плати за газ, а також надаємо уявлення про різні стратегії пом’якшення їхнього впливу. Застосовуючи методи оптимізації, використовуючи рішення рівня 2 і впроваджуючи код смарт-контрактів, що економить газ, користувачі та розробники можуть ефективно зменшити транзакційні витрати та підвищити загальну ефективність додатків у мережі Ethereum.

Маючи глибше розуміння плати за газ і практичні стратегії керування ними, ви тепер готові орієнтуватися в середовищі Ethereum і оптимізувати роботу з кодування. Вдалого кодування і нехай ваша взаємодія з Ethereum буде економічно ефективною та інноваційною!

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити