Error de RPC "valor no válido o faltante para los parámetros" al llamar a funciones de anulación constante del contrato

Mi contrato tiene una función definida así:

{"constant":true,"inputs":[],"name":"queryNumEscrows","outputs":
[{"name":"","type":"uint256"}],"payable":false,"type":"function"}

No tener entradas. Su código fuente de Solidity es bastante simple:

function queryNumEscrows() constant returns (uint) {
    return numEscrows;
}

¿Cómo lo llamo desde JSON RPC? He intentado esto:

endpoint = "queryNumEscrows()" 
web3_sha3(endpoint) = 0x0127efc52bcbe2b7f6d6a1ee29a7acd32c5f2e824b791cd7c97b9c57981bc5ac
no arguments...
data = 0x0127efc5

y al realizar la consulta:

eth_call([{"from": "0xf28dafbfeb41bf32869c9d498da0d651d0206ed4", "to":
"0x27c042342c9ba937214117e11a4970a6145034cb", "data": "0x0127efc5"}])

este es el error que arroja:

-32602: valor inválido o faltante para params[1]

Entonces, supongo que probablemente haya algo mal al codificar parámetros vacíos en datos. ¿Cómo debo hacer eso?

Por cierto, usé esta gran explicación: Cómo llamar a un método de contrato usando la API eth_call JSON-RPC como referencia.

Respuestas (1)

Resumen

Agregar el número de bloque a los eth_callparámetros de llamada JSON-RPC como sugiere el error cerrado eth_call requiere bloque como último parámetro #2472 funcionará.



Detalles

Creé un contrato usando Browser Solidity como se muestra en la siguiente captura de pantalla:ingrese la descripción de la imagen aquí

Y aquí está mi resultado:

Iota:ESE bok$ curl localhost:8545 -X POST --header 'Content-type: application/json' --data '{"jsonrpc":"2.0", "method":"eth_call", "params":[{"to": "0xb82020341122e7c8c4ba6551fd25950681af3570", "data": "0x0127efc5"}, "latest"], "id":1}'
{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000007b"}

Referencia El parámetro de bloque predeterminado y eth_call.

eth_callsin el parámetro de bloque trabajado anteriormente. Actualicé mis antiguas preguntas y respuestas de ESE sobre el eth_calluso para agregar una nota sobre este nuevo requisito.

¡Muchas gracias! ¡Ahora funciona perfectamente!