Problema con el contrato autónomo que llama a la transferencia del token erc20 por el monto aprobado

Intentando transferir fondos usando el identificador de token ERC20 y llamando a 'transferFrom'. Suponga que el monto específico está aprobado previamente por la cuenta del propietario para la dirección del contrato 'MyContract'.

contract StandardToken {
  function transferFrom(address from, address to, uint value);
}

contract MyContract{
  address _addrToken;
  function MyContract(address addrToken){
    _addrToken = addrToken;
  }

  event FundAcquired(address owner, uint256 amount);

  function acquireFund(address owner, uint256 amount){
    StandardToken token = StandardToken(tokenAddr);
    token.transferFrom(owner, this, amount);
    FundAcquired(owner, amount);
  }
}

Al llamar a través de web3js, los resultados de la función 'acquireFund' seguirán el error.

Excepción: Error: Excepción de máquina virtual al procesar la transacción: revertir

Alguien me puede orientar con cual es el problema?

No veo ninguna definición de tokenAddr. ¿ Debería decir eso _addrTokenen su lugar? (Pero esa no puede ser la causa del error que está viendo, ya que sería un problema de tiempo de compilación). De manera similar, no veo una definición para ownernada.
propietario es un parámetro de entrada para esta función. Este código fallará durante la compilación, por lo que sería genial si pudiéramos obtener un código de trabajo para el análisis y también ver el código javascript. No veo nada malo en este problema de código (excepto tokenAddr). ¿Quizás el propietario no tiene suficientes fichas?

Respuestas (2)

Cambiar tokenAddra _addrToken.

Fallaría en la compilación. El código obviamente es incorrecto, pero no se compilará, así que supongo que tenemos un código incorrecto para analizar.

Creo que debería ejecutar primero Token.Approve(MyContract.address) para establecer la asignación, de modo que el contrato pueda gastar tokens del propietario.