Skip to Content
dApps

eth_estimateGas

Genera y devuelve una estimación del gas necesario para completar la transacción. La transacción no se añade a la cadena de bloques.


Parámetros

ÍndiceTipoDescripción
0objectObjeto de transacción
1stringNúmero o etiqueta de bloque (opcional)

Objeto de transacción

CampoTipoObligatorioDescripción
fromstringNoDirección del remitente
tostringNoDirección del destinatario
datastringNoDatos de la llamada al contrato
valuestringNoValor en wei (hexadecimal)
gasstringNoLímite de gas (hexadecimal)
gasPricestringNoPrecio del gas (hexadecimal)

Devuelve

string - La cantidad estimada de gas (hexadecimal)


Ejemplo

Estimar una transferencia de ETH

const gasEstimate = await window.$onekey.ethereum.request({ method: 'eth_estimateGas', params: [{ from: '0xYourAddress...', to: '0xRecipientAddress...', value: '0xDE0B6B3A7640000' // 1 ETH }] }) console.log('Estimated gas:', parseInt(gasEstimate, 16)) // Simple ETH transfer: ~21000

Estimar una llamada a un contrato

const gasEstimate = await window.$onekey.ethereum.request({ method: 'eth_estimateGas', params: [{ from: '0xYourAddress...', to: '0xContractAddress...', data: '0xa9059cbb...' // transfer(address,uint256) }] }) console.log('Estimated gas:', parseInt(gasEstimate, 16))

Añadir un margen de seguridad

async function estimateGasWithBuffer(tx, bufferPercent = 20) { const estimate = await window.$onekey.ethereum.request({ method: 'eth_estimateGas', params: [tx] }) const gas = parseInt(estimate, 16) const bufferedGas = Math.ceil(gas * (1 + bufferPercent / 100)) return '0x' + bufferedGas.toString(16) } const safeGasLimit = await estimateGasWithBuffer({ from: accounts[0], to: contractAddress, data: encodedData })

Errores

CódigoMensajeDescripción
-32000Ejecución revertidaLa transacción fallaría
-32000Fondos insuficientesSaldo insuficiente
-32602Parámetros no válidosParámetros de transacción no válidos

Notas

  • La estimación puede no ser exacta; las transacciones pueden usar más o menos gas
  • Añade un margen del 10-20% a la estimación por seguridad
  • Si la estimación falla, es probable que la transacción también falle
  • La estimación tiene en cuenta el estado actual de la cadena de bloques
Última actualización el