//SPDX-License-Identifier:MIT
pragma solidity ^0.8.6;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
contract staking{
IERC20 public s_stakingToken;
IERC20 public s_rewardsToken;
constructor(address stakingToken, address rewardsToken){
s_stakingToken=IERC20(stakingToken);
s_rewardsToken=IERC20(rewardsToken);
}
}
can anyone explain the working of the above code snippet?
- why interface name is given as a variable type?
IERC20 public s_stakingToken;
- how inside constructor,
IERC20(stakingToken)
will work? - Is
IERC20()
a constructor? as per my knowledge there is no constructor allowed in interfaces.