Как Metamask оценивает лимит газа?

В настоящее время я разрабатываю D-приложение для Ethereum, которое можно использовать с расширением Metamask. Я использую трюфельный фреймворк и testrpc для локального тестирования своего приложения.

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

Где я могу найти хорошую информацию по этому вопросу?

Любая помощь будет принята с благодарностью

введите описание изображения здесь

Ответы (1)

Я считаю, что MetaMask просто обращается eth_estimateGasк любому узлу Ethereum, с которым он разговаривает. Реализация eth_estimateGasобычно заключается в моделировании транзакции и измерении фактически используемого газа. Фактическое количество газа, необходимого при майнинге транзакции, может отличаться, если использование газа по контракту зависит от таких вещей, как номер блока, хэш блока или другие данные, которые могли измениться между временем оценки и временем фактической транзакции. .

Что вы можете сделать как разработчик, чтобы сделать оценку газа более точной? Это плохой UX для провала транзакций.