Con Solidity, ¿cómo puedo transferir tokens ERC20 de la dirección actual a otra?

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?

Respuestas (2)

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 transferFromfunció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 calla transactionse 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 thisel contrato use tokens en su nombre (o en el de msg.sender).

approve(this, _amount)
¿Cómo llamar para aprobar desde la dirección de los remitentes?
Ambos deben ser llamados desde el remitente de los tokens en dos transacciones separadas.
¿ EIP20Tiene que ser el contrato específico para ese token o hay un método general que funcione para todos los tokens EIP20?