Con Solidity, ¿cómo puedo transferir tokens ERC20 de la dirección actual a otra?
¿Se hace usando llamar o enviar? ¿Los saldos se mantienen en el contrato de token o en la dirección a la que pertenecen los tokens?
Los contratos de Token ERC20 almacenan los saldos de los usuarios en su estado. La especificación exacta de los contratos de token ERC20 se puede encontrar aquí: https://theethereum.wiki/w/index.php/ERC20_Token_Standard
La transferFrom
función se puede utilizar para transferir tokens de una dirección a otra.function transferFrom(address _from, address _to, uint _value) returns (bool success);
Esta función debe llamarse como una transacción para realizar cambios en el saldo (es decir, el estado del contrato). La diferencia entre ay call
a transaction
se detalla aquí. ¿Cuál es la diferencia entre una transacción y una llamada?
Para transferir el token EIP20 de otro contrato, use
EIP20 token = EIP20(_tokenAddr);
y llame a la función tansferFrom para transferir tokens de una dirección a otra; como;
token.transferFrom(msg.sender, this, _value);
Nota: Antes de hacer esto, llame a la función de aprobación en el contrato de token para permitir que this
el contrato use tokens en su nombre (o en el de msg.sender).
approve(this, _amount)
CryptoScroller
Martín Tonev
mdornfe1
EIP20
Tiene que ser el contrato específico para ese token o hay un método general que funcione para todos los tokens EIP20?