Я пытаюсь выполнить отладочную передачу для составного erc20, лежащего в основе
Я записываю видео с попытками моего процесса
https://youtu.be/JOZndbUUj_w
Мои действия просты
1) Получить базовый адрес ERC20 по адресу cToken
// get Underlying by Ctoken
function getCTokenUnderlying(address _cToken) public view returns(address){
return CToken(_cToken).underlying();
}
2) Перенос с базового адреса
/**
* @dev test transfer from underlying
*
* @param _amount amount of ERC20
* @param _cToken cToken address
*/
function transferFromUnderlying(uint256 _amount, address _cToken)
external
{
address underlyingAddress = getCTokenUnderlying(_cToken);
// check allowance
require(ERC20(underlyingAddress).allowance(msg.sender, address(this)) >= _amount,
"not correct approved amount");
// check ERC20 address (Underlying should be BAT )
require(underlyingAddress == address(0x9636246bf34E688c6652Af544418B38eB51D2c43),
"correct underlying address");
// check sender balance
require(ERC20(underlyingAddress).balanceOf(msg.sender) >= _amount,
"not enough balance");
// error here
ERC20(underlyingAddress).transferFrom(msg.sender, address(this), _amount);
}
Мой сбой tx:
https://ropsten.etherscan.io/tx/0xfebf0cc7e9b9fbc4d5df1aeb2dbbe9a14dc690567a35ed11ca562e6fe586564e