Если вы отправляете транзакции без ограничений на газ или цен на газ через API-интерфейс RPC, geth использует вместо этого Estimate () или SuggestPrice (). Ремикс тоже их использует. Эти поведения относятся к geth v1.8.23. Разные версии могут работать по-разному.
EstimateGas
input: номер блока (по умолчанию: «в ожидании»), «газовый лимит» транзакции (по умолчанию: газовый лимит для данного номера блока)
EstimateGas пытается найти минимальный газ для выполнения этой транзакции с данным номером блока. Он выполняет бинарный поиск между 21000 и «газовым пределом». Например, если «газовый лимит» равен 79000, он пытается выполнить эту транзакцию с газовым лимитом, 50000 = (21000 + 79000) / 2. В случае неудачи он пытается с 64500 = (50000 + 79000) / 2, и скоро. Если это не удалось с «газовым пределом», он возвращает 0 и сообщение об ошибке, "gas required exceeds allowance or always failing transaction"
.
ПРИМЕЧАНИЕ. Даже если транзакция не удалась из-за проблем, не связанных с газом, она считается недостаточной. Затем он вернет 0 с сообщением об ошибке в конце.
источник: geth /internal/ethapi/api.go
Предлагайте (газ) Цена
input: количество блоков для поиска (по умолчанию: 20, --gpoblocks
), процентиль цены (по умолчанию: 60, --gpopercentile
), результат отката (по умолчанию: 1 GWei, --gasprice
)
SuggestPrice запрашивает цены на газ «числа последних блоков» параллельно с «последним» блоком. Если по каким-либо причинам он не может получить ответы, превышающие половину «количества блоков», он запросит больше блоков, чем «количество блоков», в пять раз больше.
Цена на газ для блока означает минимальную цену на газ в рамках транзакций в этом блоке. Транзакции, отправленные майнером, исключаются.
SuggestPrice сортирует цены на газ по блокам, затем подбирает данный процентиль среди цен (0 для наименьшей цены и 100 для наивысшей цены). Он кэширует этот результат и немедленно возвращает кэшированный результат для того же самого «последнего» (добытого) блока.
Если все попытки не удаются, возвращается последний результат. Если нет последних результатов, он возвращает «запасной результат». А SuggestPrice не может вернуть более 500 ГВтэй.
источник: geth /eth/gasprice/gasprice.go