Guthaben und der erhobene Betrag erhöhen nicht das Konto des Absenders

Kann mir jemand einen Tipp geben oder korrigieren, was mit dem Code falsch ist. Vielleicht ist es offensichtlich, wo der Fehler liegt, aber ich sehe ihn nicht und ich stecke fest. Was macht man als nächstes ?. Der Code ist hier: https://ropsten.etherscan.io/address/0xc3ec072c279043ad2e56f4b5683b78337ed614d9

function () payable public {  }

function buy () payable public whenNotPaused beforeDeadline afterStartTime saleNotClosed {
    require(msg.value >= minContribution);

    // Update the sender's balance of wei contributed and the amount raised
    uint amount = msg.value;
    uint currentBalance = balanceOf[msg.sender];
    balanceOf[msg.sender] = currentBalance.add(amount);
    amountRaised = amountRaised.add(amount);

    // Compute the number of tokens to be rewarded to the sender
    // Note: it's important for this calculation that both wei
    // and PDT have the same number of decimal places (18)
    uint numTokens = amount.mul(rate);

    // Transfer the tokens from the crowdsale supply to the sender
    if (tokenReward.transferFrom(tokenReward.owner(), msg.sender, numTokens)) {
        FundTransfer(msg.sender, amount, true);
        // Check if the funding goal or cap have been reached
        // TODO check impact on gas cost
        checkFundingGoal();
        checkFundingCap();
    }
    else {
        revert();
    }
}

was tun um es zu beheben? (Remix Ropsten aktualisiert keine Senderbilanz).

Jede Hilfe wird sehr geschätzt.Robert

Wo überprüfen Sie den aktualisierten Kontostand?
Hallo, ich verwende Remix, um balanceOf anzurufen, und der Betrag ist gestiegen, nachdem ich einige Ether an den Crowdsale-Vertrag gesendet hatte, aber keine Aktualisierung des Kontostands. Irgendein Hinweis? Robert

Antworten (1)

Ich denke, das Problem liegt in der Tatsache, dass die Funktion function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; }einen Wert aus den Mapping-Salden zurückgibt, aber Sie verwenden und aktualisieren das Mapping mit dem Namen balanceOf. Sie könnten eine neue Funktion erstellen, die zurückkehrt, balanceOf[msg.sender]um zu überprüfen, ob sie funktioniert.

Hallo Gabe, ich sehe, Sie beziehen sich auf die Zeile 171 im Vertrag. (Vertrag BasicToken). Vertrag ERC20Basic Zeile 125 hat zu -Funktion balanceOf(adresse wer) öffentliche Ansicht gibt zurück (uint256); Wenn Sie etwas auf dem Herzen haben, wie die Funktion aussehen sollte, erleuchten Sie mich bitte! Ich bin kein Programmierer. Ich habe versucht, die folgende Zeile in meine Kauffunktion einzufügen; balanceOf[msg.sender] = balanceOf[msg.sender].add(amount); Leider ohne Erfolg.