У меня есть веб-приложение на основе Ethereum. Вот как я вызываю некоторую функцию из контракта:
contract.doSomething.sendTransaction(data, {gasPrice: web3.toWei(10, 'Gwei')}, callback...);
Этот код работает. Но у меня есть несколько вопросов:
1) Могу ли я изменить GASPRICE для этой транзакции в МетаМаске?
2) Как MetaMask узнает, какой GASLIMIT установить ?
3) Если в коде транзакции не указана GASPRICE, как MetaMask узнает, как установить GASPRICE?
Согласно следующему коду метамаска генерирует различные оценки газа:
В этой статье от chainstack объясняется процесс оценки газа в метамаске, а также представлена реализация процесса оценки газа на Python: https://chainstack.com/a-developers-guide-to-the-transactions-in-mempool-code-edition/
Metamask оценивает необходимое количество газа (лимит газа). Я бы предположил, что это добавляет некоторый запас «безопасности» вдобавок к этому. Кроме того, оценки содержания газа иногда бывают очень неточными и/или невозможными по различным причинам.
Цена на газ по умолчанию, вероятно, взята из системы прогнозирования цен на газ, такой как https://ethgasstation.info/ .
При необходимости вы можете настроить оба параметра: https://metamask.zendesk.com/hc/en-us/articles/360015488771-How-to-Adjust-Gas-Price-and-Gas-Limit-