Получение hex вместо uint через сопоставление [дубликат]

У меня есть простой метод, в котором я подсчитываю, сколько раз определенный адрес вызывал метод смарт-контракта. Вот код:

mapping (address => uint) countTotal;

function countSends() public returns(uint retClicks) {
    clicksTotal[msg.sender]++;
    return countTotal[msg.sender];
}

Очевидно, я ожидаю, что при первой отправке я получу 1, затем 2, затем 3...

Но по какой-то причине я получаю обратно web3jsшестнадцатеричное значение, например 0xea6166fd3f8249c3dd3ed1dcbb3af9989aebdcf9f5eb079fc6d570296e6f4509. Как я могу получить обычное целое число без знака?

EDIT: повторяющиеся няни, связанные с теоретическим обсуждением... это намного лучше объясняет, что вам нужно делать: как получить значения, возвращаемые непостоянными функциями транзакций?

Пожалуйста, поделитесь своим кодом. Но мое предположение: это хэш транзакции. Транзакции на самом деле не имеют возвращаемых значений... если вы хотите изменить состояние и "вернуть" значение, вы, вероятно, в конечном итоге будете использовать событие или после транзакции call.
@smarx Да, просто изучил это ... кажется, мне нужно дождаться подтверждения транзакции, чтобы вернуть правильный счет.
Что ж, вам нужно дождаться завершения транзакции до того, как произойдет изменение, но возвращаемого значения все равно не будет.
Простой пример использования события для получения возвращаемого значения: ethereum.stackexchange.com/questions/6380/…

Ответы (1)

Полагаю, у вас опечатка. Вместо clicksTotal [msg.sender]++; измените его на countTotal [msg.sender]++;

Попробуй это.

mapping (address => uint) countTotal;

function countSends() public returns(uint retClicks) {
    countTotal[msg.sender]++;
    return countTotal[msg.sender];
}