Ich habe eine einfache Methode, bei der ich zähle, wie oft eine bestimmte Adresse die Smart-Contract-Methode aufgerufen hat. Hier ist Code:
mapping (address => uint) countTotal;
function countSends() public returns(uint retClicks) {
clicksTotal[msg.sender]++;
return countTotal[msg.sender];
}
Offensichtlich erwarte ich, dass ich beim ersten Senden 1 bekomme, dann 2, dann 3 ...
Aber aus irgendeinem Grund bekomme ich web3js
einen Hexadezimalwert wie 0xea6166fd3f8249c3dd3ed1dcbb3af9989aebdcf9f5eb079fc6d570296e6f4509
. Wie kann ich eine reguläre Ganzzahl ohne Vorzeichen erhalten?
BEARBEITEN: Doppelte Kindermädchen im Zusammenhang mit theoretischer Diskussion ... dies erklärt viel besser, was Sie tun müssen: Wie erhält man Werte, die von nicht konstanten Transaktionsfunktionen zurückgegeben werden?
Ich vermute, du hast einen Tippfehler. Statt clicksTotal [msg.sender]++; ändern Sie es in countTotal [msg.sender]++;
Versuche dies.
mapping (address => uint) countTotal;
function countSends() public returns(uint retClicks) {
countTotal[msg.sender]++;
return countTotal[msg.sender];
}
Benutzer19510
call
Transaktionen haben nicht wirklich Rückgabewerte ... wenn Sie den Zustand ändern und einen Wert "zurückgeben" möchten, werden Sie wahrscheinlich ein Ereignis oder ein nach der Transaktion verwenden .nikib3ro
Benutzer19510
eth