Ф'ючерси
Сотні безстрокових контрактів
TradFi
Золото
Одна платформа для світових активів
Опціони
Hot
Торгівля ванільними опціонами європейського зразка
Єдиний рахунок
Максимізуйте ефективність вашого капіталу
Демо торгівля
Вступ до ф'ючерсної торгівлі
Підготуйтеся до ф’ючерсної торгівлі
Ф'ючерсні події
Заробляйте, беручи участь в подіях
Демо торгівля
Використовуйте віртуальні кошти для безризикової торгівлі
Запуск
CandyDrop
Збирайте цукерки, щоб заробити аірдропи
Launchpool
Швидкий стейкінг, заробляйте нові токени
HODLer Airdrop
Утримуйте GT і отримуйте масові аірдропи безкоштовно
Launchpad
Будьте першими в наступному великому проекту токенів
Alpha Поінти
Ончейн-торгівля та аірдропи
Ф'ючерсні бали
Заробляйте фʼючерсні бали та отримуйте аірдроп-винагороди
Інвестиції
Simple Earn
Заробляйте відсотки за допомогою неактивних токенів
Автоінвестування
Автоматичне інвестування на регулярній основі
Подвійні інвестиції
Прибуток від волатильності ринку
Soft Staking
Earn rewards with flexible staking
Криптопозика
0 Fees
Заставте одну криптовалюту, щоб позичити іншу
Центр кредитування
Єдиний центр кредитування
Центр багатства VIP
Преміальні плани зростання капіталу
Управління приватним капіталом
Розподіл преміальних активів
Квантовий фонд
Квантові стратегії найвищого рівня
Стейкінг
Стейкайте криптовалюту, щоб заробляти на продуктах PoS
Розумне кредитне плече
Кредитне плече без ліквідації
Випуск GUSD
Мінтинг GUSD для прибутку RWA
Інтерпретація розрахунку комісії за газ Ethereum: як зменшити витрати на трансакцію?
Автор: Росаріо Боргезі
Переклад: Хохуо, народний блокчейн
Блокчейн Ethereum зробив революцію в децентралізованих програмах і смарт-контрактах, але кожна транзакція передбачає комісію за газ Ethereum. У цьому посібнику ми демістифікуємо комісію за газ Ethereum і дізнаємося про її основні принципи, методи розрахунку, фактори, що впливають на витрати, і ефективні стратегії оптимізації транзакцій, одночасно контролюючи витрати.
1. Зрозумійте Ethereum Gas
Газ є паливом для транзакцій і виконання смарт-контрактів у блокчейні Ethereum. Він представляє обчислювальну роботу, необхідну для обробки цих операцій, і оцінюється в невеликих номіналах ефіру, які називаються gwei (1 gwei = 10^-9 ETH).
Іншими словами, газ є одиницею вимірювання обчислювальної роботи, еквівалентною певній кількості ефіру.
Ось чому плата за газ має вирішальне значення в екосистемі Ethereum:
Розподіл ресурсів: плата за газ діє як механізм розподілу мережевих ресурсів. Вимагаючи від користувачів плати за обчислювальну потужність і простір для зберігання, який вони використовують, мережа забезпечує справедливий доступ і запобігає зловживанню ресурсами.
Запобігайте мережевому спаму: без плати за газ зловмисники могли б заполонити мережу транзакціями спаму, перевантажуючи систему та сповільнюючи законні транзакції. Плата за газ робить розсилання спаму в мережі дорогим і фінансово недоцільним.
Стимулюйте майнерів: плата за газ стимулює майнерів включати транзакції в блоки. Майнери віддають перевагу транзакціям із вищою комісією за газ, заохочуючи користувачів пропонувати конкурентоспроможні комісії за своєчасну обробку транзакцій.
Безпека мережі: плата за газ сприяє безпеці мережі Ethereum. Вони забезпечують правильне виконання транзакцій і смарт-контрактів, вимагаючи від користувачів оплати за обчислювальні кроки. Це блокує потенційні атаки та вразливості.
Масштабованість і ефективність: додаючи вартість кожної операції, комісії за газ заохочують розробників писати ефективний і оптимізований код. Зосередження на ефективності має вирішальне значення для масштабування мережі, оскільки воно заохочує передові практики та зменшує навантаження на блокчейн.
Економічна модель: плата за газ є невід’ємною частиною економічної моделі Ethereum. Вони сприяють стійкій екосистемі, де майнери отримують винагороду за їхні зусилля, сприяючи зростанню та стабільності мережі.
2. Складові плати за газ
Зрозумійте основні компоненти, які складають плату за газ Ethereum:
Базовий збір: встановлено угодою, ви повинні сплатити принаймні цю суму, щоб ваша транзакція вважалася дійсною.
Комісія за пріоритет: це підказка, яка додається до основної комісії, щоб зробити вашу транзакцію привабливою для валідаторів, щоб вони вирішили включити її в наступний блок.
Транзакція, яка сплачує лише базову комісію, є технічно дійсною, але навряд чи буде включена, оскільки вона не стимулює валідаторів обирати її.
Комісія за пріоритет залежить від використання мережі під час надсилання транзакції: якщо є великий попит, можливо, вам доведеться встановити більшу плату за пріоритет, але коли попит менший, ви можете платити менше.
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 розрізняє запис даних у мережу та читання даних із мережі, і ця відмінність відіграє важливу роль у написанні ваших програм. Загалом запис даних називається транзакцією, тоді як читання даних називається викликом.
Транзакція: транзакція змінює стан мережі під час запису або зміни даних. Це може бути таким же простим, як відправлення ефіру на інший обліковий запис, або таким складним, як виконання функції контракту або додавання нового контракту в мережу. Щоб здійснювати транзакції, ми маємо сплачувати плату за газ, і для їх обробки потрібен час.
Дзвінки: виклики можна використовувати для виконання коду через мережу, але не змінюють дані остаточно. Вони в основному використовуються для читання даних, тому працюють безкоштовно (не витрачається газ). Коли ви виконуєте функцію контракту, викликаючи її, ви негайно отримуєте повернене значення.
5. Об’єкти транзакції
Ви можете встановити кількість газу, яку ви готові заплатити під час подання транзакції, встановивши такі параметри в об’єкті транзакції:
GasLimit: максимальна кількість одиниць газу, які можуть бути використані транзакцією. EVM визначає одиниці вимірювання газу, необхідні для кожного кроку розрахунку.
maxPriorityFeePerGas: максимальна ціна спожитого газу як підказка валідатора.
maxFeePerGas: максимальна комісія за одиницю газу, яку ви готові заплатити за транзакцію (включаючи baseFeePerGas і maxPriorityFeePerGas)
6. Лондонське оновлення (EIP-1559)
До оновлення в Лондоні комісії розраховувалися без розрізнення між основними та пріоритетними комісіями.
В об’єкті транзакції ми можемо встановити:
GasLimit/startGas: максимальна кількість одиниць газу, яку може споживати транзакція. Те саме, що й раніше.
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. Це значно зменшує комісію за газ і покращує масштабованість, оскільки одна транзакція основної мережі може представляти велику кількість транзакцій поза мережею.
Якщо ми хочемо працювати на першому рівні, економічне рішення виглядає очевидним: ми повинні здійснювати транзакції, коли мережа менш перевантажена.
Насправді блокчейн Ethereum дозволяє лише близько 20-40 транзакцій на секунду (TPS) (це загальна кількість усіх користувачів Ethereum); коли ліміт досягається, користувачі змушені конкурувати один з одним, щоб отримати свої транзакції, що причини Гонорари зростають.
Щоб перевірити навантаження на мережу, ми можемо використовувати Etherscan.
Кожна транзакція в блокчейні Ethereum несе витрати, які називаються комісією за газ. Щоб зменшити ці комісії, кілька операцій потрібно поєднувати в одну транзакцію, коли це можливо. Наприклад, об’єднання кількох переказів токенів або взаємодії зі смарт-контрактами в одну транзакцію може значно знизити загальні витрати.
Транзакції Ethereum включають виконання коду, що зберігається в блокчейні. Складний і неефективний код вимагає більше обчислювальних ресурсів, що призводить до вищих витрат на газ. Оптимізувавши та спростивши свій код, ви можете зменшити газ, необхідний для виконання. Це передбачає ефективне кодування, мінімізацію зайвих обчислень і використання ефективних методів програмування.
При розробці смарт-контрактів вкрай важливо розробляти їх таким чином, щоб мінімізувати споживання газу. Це включає уникнення непотрібних операцій зберігання, оптимізацію циклів і зменшення складності контрактної логіки. Під час розробки слід використовувати інструменти оптимізації газу та найкращі практики.
9. Висновок
Підсумовуючи, плата за газ є важливою частиною Ethereum, підтримуючи цілісність мережі, заохочуючи до правильного використання, забезпечуючи безпеку та підтримуючи масштабованість, що разом допомагає побудувати ефективну та стійку мережу блокчейну.
У цій статті ми досліджуємо розрахунок і оцінку плати за газ, а також надаємо уявлення про різні стратегії пом’якшення їхнього впливу. Застосовуючи методи оптимізації, використовуючи рішення рівня 2 і впроваджуючи код смарт-контрактів, що економить газ, користувачі та розробники можуть ефективно зменшити транзакційні витрати та підвищити загальну ефективність додатків у мережі Ethereum.
Маючи глибше розуміння плати за газ і практичні стратегії керування ними, ви тепер готові орієнтуватися в середовищі Ethereum і оптимізувати роботу з кодування. Вдалого кодування і нехай ваша взаємодія з Ethereum буде економічно ефективною та інноваційною!