#java #ethereum #geth #web3-java
#java #ethereum #geth #web3-java
Вопрос:
Я пытаюсь прочитать баланс адреса из контракта токена erc20 с помощью web3j. Я уже сгенерировал файл контракта, эквивалентный Java. В этом файле функция возвращает объект типа RemoteCall. Теперь, как проанализировать этот вывод, чтобы я мог просто получить число (большое целое значение)?
Когда я пытаюсь зарегистрировать вывод с помощью Android log, я получаю какой-то зашифрованный вывод —
org.web3j.protocol.core.RemoteCall@48c4d84
Теперь я совершенно запутался, что делать дальше?
public RemoteCall<BigInteger> balanceOf(String param0) {
final Function function = new Function(FUNC_BALANCEOF, Arrays.<Type>asList(new Address(param0)),
Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
return executeRemoteCallSingleValueReturn(function, BigInteger.class);
}
Ожидаемый результат имеет тип большого целого числа (остаток токена адреса).
Комментарии:
1. Этот вывод не закодирован.
org.web3j.protocol.core.RemoteCall@48c4d84
это просто имя класса и ссылка на память объекта. Это просто означает, чтоtoString()
это не реализовано на этом объекте.2. Вы читали какую-либо документацию по классу RemoteCall? Какие методы доступны?
3. Эта страница не найдена. Кроме того, я уже пробовал документацию web3j, но не получил никаких подробностей о том, как анализировать результаты.
4. github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/…
Ответ №1:
Вам нужно вызвать send()
экземпляр, RemoteCall<BigInteger>
который возвращается из balanceOf()
:
RemoteCall<BigInteger> remoteCall = someObject.balanceOf(someParameter);
BigInteger result = remoteCall.send();