Hello all I've recently starting diving into solidity development and I'm having trouble with ERC20 token interactions.
What I want to accomplish is sending ERC20 tokens to a smart contract that I created.
pragma solidity ^0.5.0;
contract ERC20 {
function totalSupply() public view returns (uint supply);
function balanceOf(address _owner) public view returns (uint balance);
function transfer(address _to, uint _value) public returns (bool success);
function transferFrom(address _from, address _to, uint _value) public returns (bool success);
function approve(address _spender, uint _value) public returns (bool success);
function allowance(address _owner, address _spender) public view returns (uint remaining);
function decimals() public view returns(uint digits);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
contract MySmartContract {
function approveDeposit(address tokenAddress) public {
ERC20 token = ERC20(tokenAddress);
token.approve(address(this), token.balanceOf(msg.sender));
}
function depositToken(address tokenAddress) public {
ERC20 token = ERC20(tokenAddress);
uint tokenAmount = token.balanceOf(msg.sender);
token.transferFrom(msg.sender, address(this), tokenAmount);
}
}
In my wallet I have BAT tokens. After calling the approveDeposit function with the BAT token address, I try calling depositToken but it returns an error.
What am I doing wrong?