Ладно инфура, сама сеть может словить форк с перестройкой нескольких блоков, и стейт поменяется так, что газа может внезапно не хватить (даже после того как транза вроде смайнилась)
Как идея: сделать второй вариант estimateGas, но с вычислением наибольших значений у переменных по газу опкодов. Но я хз что предложить для ситуаций, когда идет ветвление по коду логическое. Всё дерево вариантов высчитывать? Кажется, это было бы жестко