Error de solidez al codificar argumentos para consultar el mapeo público

Mientras desarrollo un contrato inteligente con Solidity en Remix , después de crear el contrato, intento consultar un mapeo público:

mapping (address => uint256) public balanceOf;

pero cuando llamo balanceOfpara la dirección 0x9b9731b07b9b5f982289bab87097eade6a4bc25darroja el siguiente error:

Argumentos de codificación de error: SyntaxError: token x inesperado en JSON en la posición 2

¿Alguna idea de cómo puedo llamar correctamente balanceOf?

Funciona bien cuando la entrada es un número entero como 0, 1, 2, ... y la respuesta también está bien, dando el equilibrio correcto. El problema es que la entrada no puede ser una dirección y esto es lo que debería ser.

Respuestas (3)

La dirección debe estar rodeada de comillas. "0xca35b7d915458ef540ade6068dfe2f44e8fa733c" debería funcionar.

La dirección debe proporcionarse con comillas. Justo como dijo Huafu. Debe ser comillas dobles "". No va a funcionar con qutoes individuales. En Javascript no importa y estaba tratando de descubrir qué estaba haciendo mal.

Esto funciona: "0xca35b7d915458ef540ade6068dfe2f44e8fa733c"

esto no funciona '0xca35b7d915458ef540ade6068dfe2f44e8fa733c'

contract MyToken
    mapping (address => uint256) public balances;

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    ...
}

Referencia - The DAO , versión 1.0 con el error de $50 millones.

Thx, usando una función de consulta, pero ¿cuál es el punto de definir el mapeo como público? Pensé que ser público significaba que cualquiera podía preguntar por sus valores directamente, ¿verdad?
Después de crear la función balanceOf, aparece el mismo error: Error al codificar argumentos: SyntaxError: Token inesperado...
¿Has puesto comillas alrededor de la dirección?
¡Gracias! Ahora funciona: "0xca35b7d915458ef540ade6068dfe2f44e8fa733c"