update to use getMappingAddr instead of getStakingAddr to remove dependancy;

This commit is contained in:
Lecky Lao 2020-07-19 23:07:27 +10:00
parent 1f7e2984dd
commit d5f013b7d6

View File

@ -9,28 +9,34 @@ interface TokenInterface {
interface IStakingRewards { interface IStakingRewards {
function balanceOf(address) external view returns (uint256); function balanceOf(address) external view returns (uint256);
function totalSupply() external view returns (uint256) { function totalSupply() external view returns (uint256);
function earned(address) external view returns (uint256); function earned(address) external view returns (uint256);
} }
interface Staking { interface SynthetixMapping {
function getStakingData(string calldata stakingName) struct StakingData {
external address stakingPool;
view address stakingToken;
returns ( }
IStakingRewards stakingContract, function stakingMapping(bytes32) external view returns(StakingData memory);
TokenInterface stakingToken,
bytes32 stakingType
);
} }
contract CurveStakingHelpers { contract CurveStakingHelpers {
/** /**
* @dev Return mapping contract Address * @dev Return InstaDApp Staking Mapping Addresses
*/ */
function getStakingAddr() internal virtual view returns (address) { function getMappingAddr() internal virtual view returns (address) {
return 0x772590F33eD05b0E83553650BF9e75A04b337526; return 0x772590F33eD05b0E83553650BF9e75A04b337526; // InstaMapping Address
} }
function stringToBytes32(string memory str) internal pure returns (bytes32 result) {
require(bytes(str).length != 0, "string-empty");
// solium-disable-next-line security/no-inline-assembly
assembly {
result := mload(add(str, 32))
}
}
} }
contract Resolver is CurveStakingHelpers { contract Resolver is CurveStakingHelpers {
@ -42,16 +48,20 @@ contract Resolver is CurveStakingHelpers {
uint tokenBal, uint tokenBal,
uint tokenTotalSupply uint tokenTotalSupply
) { ) {
Staking staking = Staking(getStakingAddr()); bytes32 stakingType = stringToBytes32(stakingPoolName);
(IStakingRewards stakingContract, TokenInterface stakingToken, bytes32 stakingType) = staking.getStakingData(stakingPoolName); SynthetixMapping.StakingData memory stakingData = SynthetixMapping(getMappingAddr()).stakingMapping(stakingType);
require(stakingData.stakingPool != address(0) && stakingData.stakingToken != address(0), "Wrong Staking Name");
IStakingRewards stakingContract = IStakingRewards(stakingData.stakingPool);
TokenInterface stakingToken = TokenInterface(stakingData.stakingToken);
stakedBal = stakingContract.balanceOf(user); stakedBal = stakingContract.balanceOf(user);
stakedBal = stakingContract.totalSupply(); stakedBal = stakingContract.totalSupply();
rewardsEarned = stakingContract.earned(user); rewardsEarned = stakingContract.earned(user);
tokenBal = stakingToken.balanceOf(user); tokenBal = stakingToken.balanceOf(user);
tokenBal = stakingToken.totalSupply(); tokenBal = stakingToken.totalSupply();
} }
}
}
contract InstaCurveStakingResolver is Resolver { contract InstaCurveStakingResolver is Resolver {
string public constant name = "Synthetix-Staking-Resolver-v1"; string public constant name = "Synthetix-Staking-Resolver-v1";