Контракт ERC20 отменен

Привет всем, я развернул контракт erc20 в основной сети, все работает нормально, но когда я отправляю эфир на адрес контракта, у меня возникает эта ошибка: Внимание! Ошибка при выполнении контракта [Отменено] я не понимаю, почему. TxHash: 0x835d9b4106c279e116f97cc6038c6e12004aaac5408ac862436b0d8fc07ea94f адрес контракта: 0xACdDb1b4a5527af01ED85C74F43F90ecD1276b8E

Спасибо,

Ответы (1)

Кажется, это условие не выполняется

require(balances[fundsWallet] >= amount);

Я проверил остальную часть кода контракта, и вы не принимаете во внимание нахождение msg.valueв Wei, а не в ETH.

Ваша функция покупки

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);                               
}

Следует учитывать, что msg.valueесть в Вэй

uint256 amount = msg.value * unitsOneEthCanBuy / 1000000000000000000;

И вам не нужно генерировать Transfer()событие, потому что оно уже генерировано в transfer()функции.

Таким образом, ваша функция должна быть

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);                               
}
Здравствуйте, спасибо за ваш ответ, я должен изменить свой контракт, даже если он находится в основной сети, и я отправил токен кому-то?
Или просто у владельца учетной записи токена должно быть больше эфира?
Я не понимаю логики этого условия. Чего вы пытаетесь достичь с его помощью?
проверить, получил ли владелец контракта эфира больше, чем сумма
Есть ли возможность изменить контракт?
Код контракта неизменяемый. Вам нужно развернуть другой контракт. Я предлагаю использовать тестовые сети для тестирования, чтобы вы не потеряли реальный ETH при развертывании и игре со своими контрактами.