1.Увод.
„Gas“ е измервателна единица, която посочва количеството изчислителни усилия, необходими за изпълнението на конкретни операции в блокчейн екосистемата на Ethereum. Тъй като всяка транзакция в Ethereum изисква изчислителни ресурси за изпълнение, то е логично същата тази технологична операция да изисква такса. Ето защо с термина „Gas“ се означава таксата, необходима за успешното извършване на транзакция в Ethereum.
Таксите „Gas“ се заплащат в родната валута на Ethereum – „етер“ (ETH). Цените на „Gas“ таксите се обозначават в „gwei“, който сам по себе си е деноминация на ETH - всеки „gwei“ е равен на 0,000000001 ETH (10-9 ETH). Например, вместо да кажете, че „Gas“ таксата ви струва 0,000000001 етер, можете да кажете, че „Gas“ таксите ви струват 1 gwei. Самата дума "gwei" означава "гига-wei" и е равна на 1 000 000 000 „gwei“. Самият „gwei“ (наречен на името на Уей Дай, създателя на b-money) е най-малката единица ETH.
2.Такси за “Gas” преди ъпдейта в Лондон.
Начинът, по който се изчисляват таксите за трансакции в мрежата на Ethereum, се промени с лондонския ъпдейт от август 2021 г. Ето кратко обобщение на начина, по който нещата работеха преди този момент:
Да кажем, че Ани трябваше да плати на Боян 1 ETH. При транзакцията лимитът на „Gas“ таксите е 21 000 единици, а цената на всяка отделна „Gas“ такса е 200 „gwei“.
Общата сума на таксата преди щеше да бъде: 21 000 х 200 = 4 200 000 „gwei“ или 0,0042 ETH
3.Изчисляване на такси за Gas след ъпдейта в Лондон.
Нека дадем следния пример - да кажем, че Георги трябва да плати на Николай 1 ETH. При транзакцията лимитът на „Gas“ таксите е 21 000 единици, а базовата такса е 10 „gwei“. Николай включва в блока(валидатор) бакшиш от 2 „gwei“.
Тази логика сочи, че общата такса ще бъде: единици използван газ х (базова такса + приоритетна такса), където базовата такса е стойност, зададена от протокола, а приоритетната такса е стойност, зададена от потребителя като бакшиш към валидатора.
Формулата ще изглежда така: 21 000 х (10 + 2) = 252 000 „gwei“ или 0,000252 ETH.
Когато Георги изпрати парите, от сметката му ще бъде изтеглена сумата от 1,000252 ETH. В сметката на Николай ще бъдат преведени 1,0000 ETH. Валидаторът получава бакшиш от 0,000042 ETH. Базовата такса от 0,00021 ETH е изгорена.
Освен това Георги може да зададе и максимална такса (maxFeePerGas) за транзакцията. Разликата между максималната такса и действителната такса се възстановява на Георги, т.е. възстановяване = максимална такса - (базова такса + такса за приоритет). Георги може да зададе максимална сума, която да плати за изпълнение на транзакцията, и да не се притеснява, че ще надплати "над" базовата такса, когато транзакцията бъде изпълнена.
4.Особености, касаещи размера на блока.
Преди лондонският ъпдейт, екосистемата на Ethereum притежаваше блокове с фиксиран размер. В моменти на високо търсене в мрежата тези блокове работеха с пълен капацитет. В резултат на това потребителите често трябваше да чакат високото търсене да намалее, за да се включат в „изгоден“ за тях блок, което водеше до лошо потребителско изживяване.
С лондонския ъпдейт в екосистемата на Ethereum бяха въведени блокове с променлив размер. Всеки блок има целеви размер от 15 милиона “Gas”, като конкретната стойност на блоковете се увеличава или намалява в съответствие с търсенето в мрежата, до достигане на границата от 30 милиона „Gas”(или 2 пъти целевия размер на блока). Протоколът постига равновесен размер на блоковете от 15 милиона средно чрез процеса на „увеличаване“. Това означава, че ако размерът на блока е по-голям от целевия размер на блока, протоколът ще увеличи базовата такса за следващия блок. По подобен начин протоколът ще намали базовата такса, ако размерът на блока е по-малък от целевия размер на блока. Размерът, с който се коригира базовата „Gas” такса, е пропорционален на това колко далеч е текущият размер на блока от целевия.
5.Какво е базова „Gas” такса(„baseFeePerGas“)?
Всеки блок има базова такса, която действа като резервна цена. За да може да бъде включен последващ блок, предлаганата цена на „Gas” такасата трябва да е поне равна на базовата такса. Базовата такса се изчислява независимо от текущия блок, като се определя от логиката са таксата на предходните блокове - това прави „Gas” таксите за транзакции по-предвидими за потребителите. Когато блокът се завърши, тази базова такса се "изгаря", като се изважда от обращение.
Базовата такса се изчислява по формула, която сравнява размера на предишния блок (количеството „Gas”, използвано за всички транзакции) с целевия размер. Базовата такса ще се увеличи с максимум 12,5% на блок, ако целевият размер на блока бъде надхвърлен. Това експоненциално нарастване прави икономически нежизнеспособно запазването на висок размер на блока за неопределено време.
Ето примерна формула, включваща номер на блока, увеличение на таксата за „Gas” и настояща базова такса:
Блок 1; увеличение 15M - 0%; базова такса - 100 „gwei“;
Блок 2; увеличение 30М - 0%; базова такса - 100 „gwei“;
Блок 3; увеличение 30М – 12,5%; базова такса - 112,5 „gwei“;
Блок 4; увеличение 30М – 12,5%; базова такса - 126,6 „gwei“;
Блок 5; увеличение 30М – 12,5%; базова такса - 142,4 „gwei“;
Блок 6; увеличение 30М – 12,5%; базова такса - 160,2 „gwei“;
Блок 7; увеличение 30М – 12,5%; базова такса - 180,2 „gwei“;
Блок 8; увеличение 30М – 12,5%; базова такса - 202,7 „gwei“.
В сравнение с пазара на “Gas” таксите преди лондонския ъпдейт, коментираната промяна в механизма на таксите за транзакции днес води до по-надеждно прогнозиране. Следвайки логиката на таблицата по-горе, за да създаде транзакция в блок № 9, портфейлът ще информира потребителя със сигурност, че максималната базова такса, която ще бъде добавена към следващия блок, ще буде изчислена така: текущата базова такса 12,5% х 202,7 „gwei“ = 228,1 „gwei“.
Важно да се отбележи в този контекст, че е малко вероятно да станем свидетели на продължителни скокове на пълни блокове(крайният, завършен блок в една верига от поредно верифицирани такива) поради скоростта, с която базовата такса се увеличава, пристъпвайки към формирането на пълен блок.
Също така е важно да се отбележи, че е малко вероятно да видим продължителни скокове на пълни блокове поради скоростта, с която се увеличава основната такса при обработката на пълен блок.
6.Приоритетна такса („бакшиш“).
Преди лондонския ъпдейт, „миньорите“[1] получаваха общата такса за “Gas” от всяка транзакция, включена в даден блок.
С принципа за „изгаряне“ на базовата такса при завършване на даден блок, лондонският ъпдейт въведе т.нар „приоритетна такса“ (или „бакшиш“), за да стимулира миньорите да включат транзакция в блок. Без „бакшиши“, миньорите щяха да намерят за икономически по-изгодно да добиват празни блокове, тъй като щяха да получават същото възнаграждение за блок. При нормални условия малък „бакшиш“ осигурява на миньорите минимален стимул да включат транзакция. За транзакции, които трябва да бъдат изпълнени преференциално, преди други трансакции в същия блок, ще е необходим по-висок бакшиш, за да се опитат да изпреварят конкурентните транзакции. Както става ясно, всичко това води до изграждане на стимули в блокчейн екосистемата, с цел нейното динамично развитие.
7.Какво е „Максимална такса“(„maxFeePerGas“).
За да изпълнят транзакция в мрежата, потребителите могат да посочат максимален лимит, който са готови да платят, за да бъде изпълнена тяхна конкретна транзакция. Този незадължителен параметър е известен като „maxFeePerGas“ (от англ. „максимална такса за “Gas”). За да бъде изпълнена дадена транзакция, максималната такса трябва да надвишава сумата от основната такса и бакшиша. Така постфактум на изпращача на трансакцията се възстановява разликата между максималната такса и сумата на основната такса и бакшиша.
8.Изчисляване на таксите.
Една от основните ползи от ъпдейта от Лондон 2021г. е, че бе подобрено потребителското преживяване при определяне на таксите за транзакции. Какво означава това? За портфейлите, които поддържат технически надстройката, вместо да се посочва изрично колко потребителят е готов да плати, за да премине трансакцията му, доставчиците на портфейли автоматично ще задават препоръчителна такса за трансакция (базова такса + препоръчителна такса за приоритет), за да намалят сложността, с която са натоварени потребителите. Това се случва чрез протокола EIP-1559.
Прилагането на EIP-1559 в лондонския ъпдейт направи механизма за таксуване на трансакциите по-сложен от предишния използван протокол за цената на „Gas“ таксите, но предимството му е, че прави споменатите такси по-предсказуеми, което води до по-ефективен пазар на такси за транзакции. Поп този начин потребителите могат да подават трансакции с maxFeePerGas, съответстваща на това колко са готови да платят за изпълнението на транзакцията, знаейки, че няма да платят повече от пазарната цена на „Gas“ таксата (baseFeePerGas), и да получат обратно всяка допълнителна сума, намалена с техния бакшиш.
9.Защо съществуват “Gas” такси?
Накратко, газовите такси помагат за поддържането на сигурността на екосистемата на Ethereum. Когато изискваме такса за всяко изчисление, изпълнено в мрежата, ние предотвратяваме „спаменето“(увреждането) на мрежата от недобросъвестни участници. За да се избегнат случайни или враждебни безкрайни цикли или други изчислителни загуби в кода, от всяка транзакция се изисква да зададе лимит за това колко изчислителни стъпки на изпълнение на кода може да използва. Фундаменталната изчислителна единица за коментираните такси е „Gas“.
Въпреки че транзакцията включва лимит, всеки „Gas“, който не е използван в транзакцията, се връща на потребителя (т.е. връща се максималната такса - (основна такса + бакшиш)).
10.Какво е лимит на „Gas“-а?
Терминът „лимит на „Gas“ се отнася до максималното количество „Gas“, което сте готови да изразходвате за дадена транзакция. По-сложните транзакции, включващи интелигентни договори, изискват повече изчислителна работа, изискват по-висок лимит на „Gas“ от обикновеното плащане. Стандартният трансфер на ETH изисква лимит на газа от 21 000 единици „Gas“.
Например, ако поставите лимит на газа от 50 000 единици за обикновен трансфер на ETH, блокчейн книгата(т.нар „леджер“ или EVM) ще консумира 21 000 единици, а вие ще получите обратно останалите 29 000 единици. Ако обаче зададете твърде малко газ, например лимит от 20 000 единици „Gas“ за обикновен трансфер на ETH, EVM ще консумира вашите 20 000 единици „Gas“, опитвайки се да изпълни транзакцията, но тя няма да приключи. След това EVM възстановява всички промени, но тъй като миньорът вече е извършил работа на стойност 20 хиляди газови единици, този „Gas“ е изразходван(„изгорен“).
11.Защо таксите за „Gas“ могат да станат ниски?
Високите газови такси се дължат на популярността на Ethereum. Извършването на каквато и да е операция в Ethereum изисква консумиране на „Gas“, а пространството за „Gas“ е ограничено за всеки блок. Таксите включват изчисления, съхраняване или манипулиране на данни, или прехвърляне на токени, като консумират различни количества единици „Gas“. С усложняването на функционалността на dapp броят на операциите, които изпълнява един интелигентен договор, също нараства, което означава, че всяка транзакция заема повече пространство от блока с ограничен размер. Ако има твърде голямо търсене, потребителите трябва да предложат по-висока сума за бакшиш, за да се опитат да изпреварят транзакциите на други потребители. По-високият бакшиш може да увеличи вероятността транзакцията ви да попадне в следващия блок.
Цената на „Gas“ сама по себе си не определя колко трябва да платим за дадена транзакция. За да изчислим таксата за транзакция, трябва да умножим използвания „Gas“ по базовата такса за „Gas“, която се измерва в „gwei“.
12.Инициативи за намаляване на таксите за “Gas”.
Подобренията на мащабируемостта на Ethereum би трябвало в крайна сметка да решат някои от проблемите с таксите за газ, което на свой ред ще позволи на платформата да обработва хиляди трансакции в секунда и да се мащабира в световен мащаб.
Мащабирането на т.нар “Lear 2”(най-новия протокол за “Gas” в Ethereum екосистемата) е основна инициатива за значително подобряване на разходите за Gas”, потребителското изживяване и мащабируемостта. Най-популярните мрежи от “Lear 2” на пазара са Optimism, Arbitrum, dYdX, Starkware и Loopring. Към ноември 2022 и до настоящия момент проектът Optimism доминира на пазара с почти 50% дял, следван от Arbitrum с около 30% от пазара и dYdX, който има малка част от него.
13.Стратегии за намаляване на разходите за “Gas”.
Ако искате да намалите разходите за „Gas” на своя проект в екосистемата на Ethereum, можете да програмирате т.нар „накрайник“, който да показва нивото на приоритетните такси на транзакцията ви в леджера. Така „миньорите“ ще "работят" за Вас и ще изпълняват транзакции, които предлагат по-висок „бакшиш“ за “Gas”, тъй като те се стремят да запазят приоритетните такси, които плащате, и ще бъдат по-малко склонни да изпълняват транзакции с по-ниско зададени такива такси. Всичко това се програмира в кода по зададената, коментирана логика, като така протоколът спазва логиката на „накрайника“.
Автор: адвокат Атанас Костов
[1] Участниците в процеса на проверка и добавяне на блокове в блокчейн книга(от англ. “ledger”), както и добавяне на крипто токени в обращение, като се използва т.нар „консенсусен механизъм“(от англ. Proof of work”) за доказване на работата на съответния блок;