El método eth_call
ejecuta una nueva llamada de mensaje inmediatamente sin crear una transacción en la blockchain. Este método es perfecto para leer datos de contratos inteligentes sin gastar gas ni modificar el estado de la blockchain, lo que lo convierte en uno de los métodos más utilizados para el desarrollo de DApps.
Este método permite la interacción con contratos inteligentes desplegados en modo de solo lectura con anulaciones de estado opcionales. La función de anulación de estado es particularmente útil para probar escenarios "qué pasaría si".
El objeto de llamada de transacción que contiene los siguientes campos:
La dirección desde la que se envía la transacción
La dirección a la que se dirige la transacción
El entero de gas proporcionado para la ejecución de la transacción
El entero de gasPrice utilizado para cada gas pagado codificado como hexadecimal
El entero del valor enviado con esta transacción codificado como hexadecimal
El hash de la firma del método y los parámetros codificados. Para más información, consulte la descripción del ABI del Contrato en la documentación de Solidity
El número de bloque en formato hexadecimal o una de las etiquetas de cadena: latest, earliest, pending, safe o finalized (las etiquetas safe y finalized solo son compatibles con Ethereum, Gnosis, Arbitrum, Arbitrum Nova y Avalanche C-chain)
La opción State Override Set le permite cambiar el estado de un contrato antes de ejecutar la llamada
El saldo falso para establecer en la cuenta antes de ejecutar la llamada
El nonce falso para establecer en la cuenta antes de ejecutar la llamada
El bytecode EVM falso para inyectar en la cuenta antes de ejecutar la llamada
El mapeo falso de clave-valor para anular todos los slots en el almacenamiento de la cuenta antes de ejecutar la llamada
El mapeo falso de clave-valor para anular slots individuales en el almacenamiento de la cuenta antes de ejecutar la llamada
El valor de retorno del método del contrato ejecutado
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x00000000000000000000000000000000000000000000015af1d78b58c4000000"
}
Uno de los usos más comunes de eth_call
es verificar saldos de tokens ERC20. El campo data normalmente contiene la firma de la función seguida por los parámetros:
0x70a08231
+ dirección rellenada0x313ce567
0x95d89b41
0x18160ddd
La respuesta necesitará ser decodificada según el tipo de retorno esperado.