Según la especificación ERC20, la transferencia devuelve bool:
function transfer(address _to, uint256 _value) returns (bool success);
Preferiría que mi transferencia de contrato de token () se revierta en caso de falla y devuelva verdadero en caso de éxito. De esta manera, no tendría que preocuparme de que ninguno de mis contratos que dependen de mi ERC20 esté funcionando correctamente.require(myToken.transfer(...))
¿Causaría esto algún problema para los contratos/aplicaciones de terceros? ¿Hay alguno que dependa de una transferencia que falle pero que aún quiera realizar algo?
Una alternativa sería crear una función safeTransfer adicional que llama a la transferencia internamente con require pero complica el tokenContract.
Hay implementaciones de tokens ERC20 existentes que arrojan y otras que devuelven false. Sin embargo, la filosofía rectora de las transacciones atómicas es "si falla, falla pronto y falla rápido", por lo que las preferencias estándar arrojan/revierten en condiciones falsas.
De la norma ...
La función DEBERÍA lanzar si el saldo de la cuenta _from no tiene suficientes tokens para gastar.
Nota Las transferencias de valores 0 DEBEN tratarse como transferencias normales y activar el evento Transfer.
ismael