Ну извините если кого-то лично оскорбил! Я критикую результат, и не безосновательно. А так они молодцы конечно. Хвалить тоже есть за что. А так кодю, учусь.
давай, набирайся опыта и по делу критикуй, пиши EIP, создавай движуху полезную) а когда ты не разобравшись начинаешь говорить что знаешь как надо делать - это только больший хаос создает)
йоу. Я там ссылку выше запостил на имплементацию estimateGas. Улучши имплементацию, почини проблему, помоги всему сообществу, завоюй лавры.
Или, если есть идея, как это решить по-другому, напиши предложение здесь: https://ethereum-magicians.org/ — сделай EIP, скоординируй и протестируй имплементацию.
Проблема не в смысле “не работает” (наоборот, работает отлично для такого простого подхода!)
Я просто наивно предполагаю, что можно сделать какую-то комбинацию статического анализа и статистической модели, из которой можно получать более точную оценку. Возможно, это сделают как отдельный сервис ребята из blocknative, они специалисты по такому делу)
а кто-то заявлял о том что оценка газа не точная? я никогда не сталкивался на форках с тем, что эстимэйт вычислялся не точно в условиях когда после эстимэйта состояние не менялось
EVM — Тьюринг-полная виртуальная машина; на ней можно выразить в принципе любую компьютерную программу (с поправкой на досадные ограничения реального мира типа конечной производительности процессоров).
В частности там есть семейство опкодов JUMP, которых достаточно, чтобы добиться циклов, в том числе и бесконечных
В Биткоине пошли другим путём, и ограничили доступные программистам опкоды, чтобы не возникало этой неудобной тьюринг-полноты и связанных с ней проблем.
Собственно, именно поэтому реально использующихся приложений на опкодах Биткоина написать, по сути, не получается
На тестах и форках локальных такое и не ожидается, @freeatnet предполагает, что можно улучшить алгоритм эстимейта газа, чтобы реже случались нехватки на паблик блокчейне
точно - это значит что если ты на конкретном блоке вычислил газ через estimateGas, и на следующем блоке твоя транзанкция с этим вычисленным газом попала первой в очередь - она в 100% замайнится без out of gas, это "точно"
Есть вопрос, что включать в “состояние”: blockhash, например, будет меняться и без явного изменения состояние контракта, и его размерность может влиять на стоимость упакованных данных или логов.
Мой последний баг с эстимэйтом был в общении с makerdao. Я не дебажил, но разница 100% была только в размере значений внутри контракта — в вызываемом контракте не было никаких циклов и условий (см Pot.drip, https://github.com/makerdao/dss/blob/master/src/pot.sol)