Tengo alguna aplicación web basada en Ethereum. Así es como llamo a alguna función de un contrato:
contract.doSomething.sendTransaction(data, {gasPrice: web3.toWei(10, 'Gwei')}, callback...);
Este código funciona. Pero tengo algunas preguntas:
1) ¿Puedo cambiar GASPRICE para esta transacción en MetaMask?
2) ¿Cómo sabe MetaMask qué GASLIMIT establecer ?
3) Si no se especifica GASPRICE en el código de transacción, ¿cómo sabe MetaMask cómo configurar GASPRICE?
De acuerdo con el siguiente código , así es como metamask genera diferentes estimaciones de gas:
Este artículo de Chainstack explica el proceso de estimación de gas metamask y también proporciona una implementación de Python del proceso de estimación de gas: https://chainstack.com/a-developers-guide-to-the-transactions-in-mempool-code-edition/
Metamask realiza estimaciones sobre cuánto gas se necesita (límite de gas). Supongo que agrega un margen de "seguridad" además de eso. Además, las estimaciones de gas a veces son muy inexactas y/o imposibles de realizar debido a varias razones.
El precio predeterminado de la gasolina probablemente se toma de un sistema de predicción de precios de la gasolina como https://ethgasstation.info/ .
Puede ajustar ambos si es necesario: https://metamask.zendesk.com/hc/en-us/articles/360015488771-How-to-Adjust-Gas-Price-and-Gas-Limit-