DG
(gasSpent + 14154) / 41947
, 14154 - довесок газа за вычисление gasSpent
, а 41947 - средняя компенсация за сжигание одного токена Chi?Size: a a a
DG
(gasSpent + 14154) / 41947
, 14154 - довесок газа за вычисление gasSpent
, а 41947 - средняя компенсация за сжигание одного токена Chi?DG
AZ
V
V
41947 = (48000 - avgCostToBurnChi*2)
или что-то вродеDG
V
V
DG
DG
modifier discountCHI
находятся два контракта, которые его используют. Первый CurveExchangeAdapter константы повторяет за авторами Chi (gasSpent + 14154) / 41947
, а вот второй ValueVaultBank константы модифицировал (gasSpent + 14154) / 41130
. Уже ли вторые сами пересчитали среднюю компенсацию и на сколько это вообще важно?..IK
MM
MM
21000 + calldataCost + executionCost + constBurnCost + n * perTokenBurnCost = 2 * (24000 * n + otherRefunds)
perTokenBurnCost = 6148
otherRefunds
как правило невозможно посчитать, поэтому их игнорируемconstBurnCost
зависит от функции которая вызывается для сжигания токенов. free
например стоит 14895, а freeFromUpTo
стоит 25171.executionCost
можно поставить gasStart - gasleft()
как в этом модификаторе, а можно что-нибудь еще круче навернуть. Например если вы знаете сколько газа будет потрачено до того, как посчитается gasStart
, то можно этот газ тоже сюда приплюсовать.calldataCost
по-честному считается как 16 * кол-во ненулевых байт в колдате + 4 * кол-во нулевых байт в колдате. Считать ончейн по-честному дорого, поэтому можно прикинуть какое-то среднее число для вашего случая. Для 1inch например мы берем msg.data.length * 5, потому что у нас дофига нулей в колдате. Еще надо помнить, что колдату транзакции можно получить только в первой функции в стеке, поэтому имеет смысл вешать этот модификатор только на самые внешние функции.21000 + msg.data.length * (16 + 4) / 2 + gasStart - gasleft() + 25171 + n * 6148 = 48000 * n
n = (21000 + gasStart - gasleft() + msg.data.length * 10 + 25171) / 41852
MM
SL
DG
Gtxdatazero 4 Paid for every zero byte of data or code for a transaction.?
Gtxdatanonzero 68 Paid for every non-zero byte of data or code for a transaction
MM
Gtxdatazero 4 Paid for every zero byte of data or code for a transaction.?
Gtxdatanonzero 68 Paid for every non-zero byte of data or code for a transaction
MM