Как с помощью Solidity перевести токены ERC20 с текущего адреса на другой?

Как с помощью Solidity перевести токены ERC20 с текущего адреса на другой?

Это делается с помощью вызова или отправки? Остатки хранятся в контракте токена или на адресе, которому принадлежат токены?

Ответы (2)

Контракты токена ERC20 хранят балансы пользователей в своем состоянии. Точную спецификацию контрактов токенов ERC20 можно найти здесь: https://theethereum.wiki/w/index.php/ERC20_Token_Standard .

Функцию transferFromможно использовать для передачи токенов с одного адреса на другой.function transferFrom(address _from, address _to, uint _value) returns (bool success);

Эта функция должна вызываться как транзакция, чтобы внести изменения в баланс (т.е. состояние контракта). Разница между a callи a transactionподробно описана здесь. В чем разница между транзакцией и звонком?

Чтобы перенести токен EIP20 из другого контракта, используйте

EIP20 token = EIP20(_tokenAddr);

и вызвать функцию tansferFrom для передачи токенов с одного адреса на другой; нравиться;

token.transferFrom(msg.sender, this, _value);

Примечание. Прежде чем сделать это, вызовите функцию утверждения в контракте токена, чтобы разрешить thisконтракту использовать токены от вашего имени (или от имени msg.sender).

approve(this, _amount)
Как вызвать аппру с адреса отправителя?
Они оба должны быть вызваны отправителем токенов в две отдельные транзакции.
Должен ли EIP20быть конкретный контракт для этого токена или есть общий метод, который работает для всех токенов EIP20?