adding .gitattributes for GitHub syntax highlight;

rename synthetix_staking to staking;
Added getPosition to return balance and earned value;
added truffle-config.js for local contract compile;
This commit is contained in:
Lecky Lao 2020-07-19 21:58:24 +10:00
parent 25ac9cb464
commit b91bdda63b
4 changed files with 69 additions and 59 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.sol linguist-language=Solidity

View File

@ -0,0 +1,53 @@
pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
interface TokenInterface {
function decimals() external view returns (uint);
function totalSupply() external view returns (uint256);
function balanceOf(address) external view returns (uint);
}
interface IStakingRewards {
function balanceOf(address) external view returns (uint256);
function earned(address) external view returns (uint256);
}
interface Staking {
function getStakingData(string calldata stakingName)
external
view
returns (
IStakingRewards stakingContract,
TokenInterface stakingToken,
bytes32 stakingType
);
}
contract CurveStakingHelpers {
/**
* @dev Return mapping contract Address
*/
function getStakingAddr() internal virtual view returns (address) {
return 0x772590F33eD05b0E83553650BF9e75A04b337526;
}
}
contract Resolver is CurveStakingHelpers {
function getPosition(address user, string memory stakingPoolName) public view returns (
uint stakedBal,
uint rewardsEarned,
uint tokenBal
) {
Staking staking = Staking(getStakingAddr());
(IStakingRewards stakingContract, TokenInterface stakingToken, bytes32 stakingType) = staking.getStakingData(stakingPoolName);
stakedBal = stakingContract.balanceOf(user);
rewardsEarned = stakingContract.earned(user);
tokenBal = stakingToken.balanceOf(user);
}
}
contract InstaCurveStakingResolver is Resolver {
string public constant name = "Synthetix-Staking-Resolver-v1";
}

View File

@ -1,59 +0,0 @@
pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
interface TokenInterface {
function decimals() external view returns (uint);
function totalSupply() external view returns (uint256);
function balanceOf(address) external view returns (uint);
}
interface IStakingRewards {
function balanceOf(address) external view returns (uint256);
function earned(address) external view returns (uint256);
}
contract CurveStakingHelpers {
/**
* @dev Return Curve Token Address
*/
function getCurveTokenAddr() internal pure returns (address) {
return 0xC25a3A3b969415c80451098fa907EC722572917F;
}
/**
* @dev Return Curve sUSD Staking Address
*/
function getCurveStakingAddr() internal pure returns (address) {
return 0xDCB6A51eA3CA5d3Fd898Fd6564757c7aAeC3ca92;
}
/**
* @dev Return Synthetix Token address.
*/
function getSnxAddr() internal pure returns (address) {
return 0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F;
}
}
contract Resolver is CurveStakingHelpers {
function getStakingPosition(address user) public view returns (
uint curveBal,
uint stakedBal,
uint rewardsEarned,
uint snxBal
) {
curveBal = TokenInterface(getCurveTokenAddr()).balanceOf(user);
IStakingRewards stakingContract = IStakingRewards(getCurveStakingAddr());
stakedBal = stakingContract.balanceOf(user);
rewardsEarned = stakingContract.earned(user);
snxBal = TokenInterface(getSnxAddr()).balanceOf(user);
}
}
contract InstaCurveStakingResolver is Resolver {
string public constant name = "Curve-SUSD-Staking-Resolver-v1";
}

15
truffle-config.js Normal file
View File

@ -0,0 +1,15 @@
module.exports = {
// Configure your compilers
compilers: {
solc: {
version: "v0.6.2",
settings: {
optimizer: {
enabled: true,
},
// evmVersion: "istanbul"
}
}
}
}