Ошибка Solidity при кодировании аргументов для запроса общедоступного сопоставления

При разработке смарт-контракта с Solidity на Remix после создания контракта я пытаюсь запросить общедоступное сопоставление:

mapping (address => uint256) public balanceOf;

но когда я звоню balanceOfпо адресу 0x9b9731b07b9b5f982289bab87097eade6a4bc25d, он выдает следующую ошибку:

Аргументы кодирования ошибки: SyntaxError: неожиданный токен x в JSON в позиции 2

Любая идея, как я могу правильно позвонить balanceOf?

Он работает нормально, когда ввод представляет собой целое число, такое как 0, 1, 2, ..., и ответ тоже в порядке, обеспечивая правильный баланс. Проблема в том, что ввод не может быть адресом, и это то, что должно быть.

Ответы (3)

Адрес должен быть заключен в кавычки. "0xca35b7d915458ef540ade6068dfe2f44e8fa733c" должно работать.

Адрес должен быть указан с кавычками. Как сказал Хуафу. Должны быть двойные кавычки "". Он не будет работать с одиночными квотами. В Javascript это не имеет значения, и я пытался понять, что я делаю неправильно.

Это работает: "0xca35b7d915458ef540ade6068dfe2f44e8fa733c"

Это не работает. '0xca35b7d915458ef540ade6068dfe2f44e8fa733c'

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

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

    ...
}

Ссылка — The DAO , версия 1.0 с ошибкой на 50 миллионов долларов.

Спасибо, используя функцию запроса, но какой смысл определять отображение как общедоступное? Я думал, что публичность означает, что любой может запросить ее значения напрямую, верно?
После создания функции balanceOf появляется та же ошибка: Аргументы ошибки кодирования: SyntaxError: Unexpected token...
Вы поставили адрес в кавычки?
Спасибо! Теперь работает: "0xca35b7d915458ef540ade6068dfe2f44e8fa733c"