Как с помощью Solidity перевести токены ERC20 с текущего адреса на другой?
Это делается с помощью вызова или отправки? Остатки хранятся в контракте токена или на адресе, которому принадлежат токены?
Контракты токена 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)
Криптоскроллер
Мартин Тонев
мдорнфе1
EIP20
быть конкретный контракт для этого токена или есть общий метод, который работает для всех токенов EIP20?