Contrato ERC20 revertido

Hola a todos, implementé un contrato erc20 en la red principal, todo funciona bien, pero cuando envío ether a la dirección del contrato, aparece este error: ¡Advertencia! Error encontrado durante la ejecución del contrato [Revertido] No entendí por qué. TxHash: 0x835d9b4106c279e116f97cc6038c6e12004aaac5408ac862436b0d8fc07ea94f dirección del contrato: 0xACdDb1b4a5527af01ED85C74F43F90ecD1276b8E

Gracias,

Respuestas (1)

Parece que esta condición no se cumple

require(balances[fundsWallet] >= amount);

Revisé el resto del código del contrato y no tomas en cuenta el msg.valueestar en Wei, no en ETH.

Tu función de compra

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

Habría que tener en cuenta que msg.valueestá en Wei

uint256 amount = msg.value * unitsOneEthCanBuy / 1000000000000000000;

Y no necesita emitir el Transfer()evento porque ya está emitido en la transfer()función.

Por lo tanto, su función debe ser

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);                               
}
Hola gracias por su respuesta, tengo que cambiar mi contrato aunque sea en la red principal y he enviado token a alguna gente?
¿O simplemente el propietario de la cuenta del token debería tener más éter?
No entiendo la lógica de la condición allí. ¿Qué estás tratando de lograr con él?
verificar si el propietario del contrato obtuvo ether más de la cantidad
¿Hay alguna posibilidad de modificar el contrato?
El código del contrato es inmutable. Necesita implementar otro contrato. Sugiero usar las redes de prueba para probar, para que no pierda ETH real al implementar y jugar con sus contratos.