ERC20-Vertrag rückgängig gemacht

Hallo allerseits, ich habe einen erc20-Vertrag im Hauptnetzwerk bereitgestellt, alles funktioniert einwandfrei, aber wenn ich Ether an die Vertragsadresse sende, erhalte ich diesen Fehler: Warnung! Fehler während der Vertragsausführung [Zurückgekehrt] Ich habe nicht verstanden, warum. TxHash: 0x835d9b4106c279e116f97cc6038c6e12004aaac5408ac862436b0d8fc07ea94f Vertragsadresse: 0xACdDb1b4a5527af01ED85C74F43F90ecD1276b8E

Danke,

Antworten (1)

Diese Bedingung scheint nicht erfüllt zu sein

require(balances[fundsWallet] >= amount);

Ich habe den Rest des Vertragscodes überprüft und Sie berücksichtigen nicht, dass Sie msg.valuesich in Wei befinden, nicht in ETH.

Ihre Kauffunktion

function() payable{
    totalEthInWei = totalEthInWei + msg.value;
    uint256 amount = msg.value * unitsOneEthCanBuy;
    require(balances[fundsWallet] >= amount);

    balances[fundsWallet] = balances[fundsWallet] - amount;
    balances[msg.sender] = balances[msg.sender] + amount;

    Transfer(fundsWallet, msg.sender, amount); // Broadcast a message to the blockchain

    //Transfer ether to fundsWallet
    fundsWallet.transfer(msg.value);                               
}

Sollte berücksichtigen, dass msg.valuein Wei ist

uint256 amount = msg.value * unitsOneEthCanBuy / 1000000000000000000;

Und Sie müssen das Ereignis nicht ausgeben, Transfer()da es bereits in der transfer()Funktion ausgegeben wird.

So sollte Ihre Funktion sein

function() payable{
    totalEthInWei = totalEthInWei + msg.value;
    uint256 amount = msg.value * unitsOneEthCanBuy / 1000000000000000000;
    require(balances[fundsWallet] >= amount);

    balances[fundsWallet] = balances[fundsWallet] - amount;
    balances[msg.sender] = balances[msg.sender] + amount;

    //Transfer ether to fundsWallet
    fundsWallet.transfer(msg.value);                               
}
Hallo, danke für Ihre Antwort, ich muss meinen Vertrag ändern, auch wenn er im Hauptnetzwerk ist und ich Token an einige Leute gesendet habe?
Oder sollte nur der Kontoinhaber von Token mehr Ether haben?
Ich verstehe die Logik der Bedingung dort nicht. Was versuchst du damit zu erreichen?
Überprüfen Sie, ob der Vertragsinhaber mehr als den Betrag erhalten hat
Ist das eine Möglichkeit, den Vertrag zu ändern?
Der Vertragscode ist unveränderlich. Sie müssen einen anderen Vertrag bereitstellen. Ich schlage vor, die Testnetze zum Testen zu verwenden, damit Sie die echte ETH nicht verlieren, wenn Sie Ihre Verträge einsetzen und mit ihnen spielen