Size: a a a

2021 July 17

Q

Qox in Ethereum Russia
спасибо, пока, правда, трюфель не хочет ставиться, он ругался на какие-то депенденсис, предложил все под себя подстроить, я не согласился, потому что побоялся, что потом хардхет поломается
источник

Q

Qox in Ethereum Russia
тестирую по кусочкам, не понимаю, почему выдется 'TransferHelper: TRANSFER_FROM_FAILED'

contract SimpleSwap {
   function simpleswap(address router, uint amount,address[] calldata path) external {
       uint l = path.length;
       IERC20(path[0]).approve(router,amount);
       IUniswapV2Router02(router).swapExactTokensForTokens(amount, 0, path, address(this), now + 10 seconds);
       IERC20(path[l-1]).transfer(msg.sender, IERC20(path[l-1]).balanceOf(address(this)));
   }
}
источник

MD

Microwave Dev in Ethereum Russia
внутри swapExactAmount выполняется transferFrom
источник

Q

Qox in Ethereum Russia
да, но не понимаю, откуда берется ошибка, если баланса хватает и код такой простой
источник

MD

Microwave Dev in Ethereum Russia
ты заапрувил на роутер токены?
источник

Q

Qox in Ethereum Russia
так вот IERC20(path[0]).approve(router,amount);
источник

MD

Microwave Dev in Ethereum Russia
аа,ок, а на симпл свапе лежит достаточно токенов?
источник

Q

Qox in Ethereum Russia
хм, логично, я же не с кошелька меняю, а с контракта,
источник

MD

Microwave Dev in Ethereum Russia
источник

Q

Qox in Ethereum Russia
спасибо)
источник

Q

Qox in Ethereum Russia
IERC20(path[0]).approve(address(this),amount);
IERC20(path[0]).transferFrom(msg.sender, address(this), amount);

добавил такие две строчки в начале функции, почему-то пишет 'ERC20: transfer amount exceeds allowance'
источник

Q

Qox in Ethereum Russia
хотя первая строчка это фигня, видимо
источник

Q

Qox in Ethereum Russia
я разрешаю контракту самому с себя снимать
источник

A뭐

Alice 뭐 in Ethereum Russia
А msg.sender дал разрешение контракту тратить его токены?
источник

Q

Qox in Ethereum Russia
а как это сделать? IERC20(path[0]).approve(address(this),amount); - такая строчка бред, получается
источник

A뭐

Alice 뭐 in Ethereum Russia
Получается да. Тебе нужно с аккаунта msg.sender вызвать approve у токена
источник

A뭐

Alice 뭐 in Ethereum Russia
Через etherscan можешь например
источник

A뭐

Alice 뭐 in Ethereum Russia
И дать контракту разрешение на трату
источник

Q

Qox in Ethereum Russia
а кодом это не сделать никак, чтобы не задействовать эзерскан и тп
источник

Q

Qox in Ethereum Russia
?
источник