Size: a a a

2021 January 10

SB

Sam Becket in Ethereum Russia
А может кто-нибудь рассказать что из себя представляют газ токены?
источник

SM

Sergey Mironov in Ethereum Russia
Народ, подскажите оптимальный вариант начисления процентов на застейканые токены. Кроме как дергать контракт по расписанию извне есть еще варианты?
источник

DG

Denis Glotov in Ethereum Russia
Artem K
уязвимость в том что если возвращаешь больше 100% от потраченного, можно задрать gas price
Ну вот кажется, что разница gasleft() на входе и выходе должна быть строго меньше 100% газа всей транзакции. С константой надо аккуратно, согласен, учитывая, что цены за операции меняются при хардфорках. Правильно понимаю?
источник

DG

Denis Glotov in Ethereum Russia
Sam Becket
А может кто-нибудь рассказать что из себя представляют газ токены?
Наверное projectchicago/gastoken?
источник

SM

Sergey Mironov in Ethereum Russia
Denis Glotov
Товарищи, как контракту посчитать эфир, затраченный на его вызов? Это для того, чтобы контракт смог возместить вызывающему расход на свой вызов. Вариант такой: засекаем gasleft() вначале и в конце вызванной функции, добавляем константу, умножаем на tx.gasprice. Есть ли тут уязвимеость?
А может, сделать через подписывание сообщений тогда ничего компенсировать не придется
источник

DG

Denis Glotov in Ethereum Russia
Sergey Mironov
А может, сделать через подписывание сообщений тогда ничего компенсировать не придется
Это как именно?
источник

SM

Sergey Mironov in Ethereum Russia
Feeless contract. Пользователь со своей стороны подписывает только сообщение, а потом уже контракт его отправляет в виде транзакции. Таким образом газ оплачивает контракт
источник

DG

Denis Glotov in Ethereum Russia
Sergey Mironov
Feeless contract. Пользователь со своей стороны подписывает только сообщение, а потом уже контракт его отправляет в виде транзакции. Таким образом газ оплачивает контракт
Да, но пользователь свое сообщение должен как-то сообщить контракту. Как это сделать, без вызова контракта?
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
Sam Becket
А может кто-нибудь рассказать что из себя представляют газ токены?
Токены которые можно сначала минтить по одной цене газа и потом уничтожать в коде по другой цене, что дает рефанд. Использует в основе storage refund - https://gastoken.io/
источник

SM

Sergey Mironov in Ethereum Russia
Denis Glotov
Да, но пользователь свое сообщение должен как-то сообщить контракту. Как это сделать, без вызова контракта?
При таком вызове газ с юзера не списывается.
источник

AF

Alexey F. in Ethereum Russia
Poma
и ноде приходится специально трекать, а какой сейчас байткод там лежит
это можно кэшировать
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
Denis Glotov
Ну вот кажется, что разница gasleft() на входе и выходе должна быть строго меньше 100% газа всей транзакции. С константой надо аккуратно, согласен, учитывая, что цены за операции меняются при хардфорках. Правильно понимаю?
Ну вот кажется, что разница gasleft() на входе и выходе должна быть строго меньше 100% газа всей транзакции

это не совсем верно:

function attack() { 
  callFunctionWithRefund() // вызвать функцию которая возмещает затраты
  chi.free(10) // сжечь chi токены и получить рефанд  
}

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

AF

Alexey F. in Ethereum Russia
админы
источник

AF

Alexey F. in Ethereum Russia
почему мои сообщения пропадают?
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
т.е. как минимум вам нужно запретить вызов вашей функции с контрактов
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
Кроме того, если вы внутри своей функции освобождаете ячейку памяти, тоже будет storage refund в 5000. Не знаю точно, может кто подскажет тут, надо проверить, что gasleft() учтет этот рефанд
источник

DG

Denis Glotov in Ethereum Russia
Mikhail Dobrokhvalov
Ну вот кажется, что разница gasleft() на входе и выходе должна быть строго меньше 100% газа всей транзакции

это не совсем верно:

function attack() { 
  callFunctionWithRefund() // вызвать функцию которая возмещает затраты
  chi.free(10) // сжечь chi токены и получить рефанд  
}

таким образом отправителю можно затратить меньше газа, чем будет учитываться в вашей функции
Да, очень интересно. Проэкспериментирую в ремуксе. Эта фмоя ункция и должна вызываться другими контрактами.
источник

DG

Denis Glotov in Ethereum Russia
Mikhail Dobrokhvalov
т.е. как минимум вам нужно запретить вызов вашей функции с контрактов
А как это запретить, даже если захочется? Ведь, если контракт злоумышленника выполняет свой конструктор, его невозможно отследить с помощью codesize(msg.sender). Или уже как-то можно?
источник

MD

Mikhail Dobrokhvalov in Ethereum Russia
msg.sender == tx.origin ?
источник

𓄋

𓄋𓂭𓃇 in Ethereum Russia
Denis Glotov
А как это запретить, даже если захочется? Ведь, если контракт злоумышленника выполняет свой конструктор, его невозможно отследить с помощью codesize(msg.sender). Или уже как-то можно?
Почему просто не указать условие по которому если адрес принимающего это контракт то контракт не вызывается
источник