GoodCompoundStaking V2 (DAI)
Supporters / stakers can stake their DAI which is sent to permissionless protocols which earn interest. The FundManager has permissions to collect interest-earned from this contract.
Emitted when
staker
stake value
tokens of token
.Parameter name | Annotation |
---|---|
staker | The address of the staker. |
token | The address of the staking token. |
value | The value to be staked. |
event Staked(address indexed staker, address token, uint256 value);
Emitted when
staker
withdraws their stake value
tokens of token
.Parameter name | Annotation |
---|---|
staker | The address of the staker. |
token | The address of the staking token that beign withdrawn. |
value | The value to be withdrawn. |
event StakeWithdraw(address indexed staker, address token, uint256 value);
Emitted when fundmanager transfers interest collected from DeFi protrocol.
Parameter name | Annotation |
---|---|
recipient | The recipient address of the interest |
iTokenGains | The amount of intereset accrued. |
tokenGains | The amount of interest worth in underlying token value. |
actualTokenRedeemed | Actual token redeemed in Uniswap V2 (max 0.3% of liquidity) to token (in this case DAI). |
actualRewardTokenEarned | Actual amount of reward tokens earned. |
interestCollectedInDAI | Actual DAI amount sent to the reserve as interest from converting token and optionally reward token in Uniswap V2. |
event InterestCollected(
address recipient,
uint256 iTokenGains,
uint256 tokenGains,
uint256 actualTokenRedeemed,
uint256 actualRewardTokenEarned,
uint256 interestCollectedInDAI
);
View function to get protocol management fees.
Returns: a tuple of
_collectInterestGasCost
and _compCollectGasCost
which represents the gas cost fee for collecting interest from the contract and gas cost fee for collecting COMP rewards.function getSettings() external view returns (uint32 _collectInterestGasCost, uint32 _compCollectGasCost);
Function that calculates current interest gains of this staking contract.
Parameter name | Annotation |
---|---|
_returnTokenBalanceInUSD | Determine return token balance of staking contract in USD. |
_returnTokenGainsInUSD | Determine return token gains of staking contract in USD. |
Return parameter name | Annotation |
---|---|
iTokenGains | Gains in iToken (in this case cDAI). |
tokenGains | Gains in token (in this case DAI). |
tokenBalance | Total tokens locked. |
balanceInUSD | Locked tokens worth in USD. |
tokenGainsInUSD | Gains in USD. |
function currentGains(
bool _returnTokenBalanceInUSD,
bool _returnTokenGainsInUSD
)
public
view
override
returns (
uint256 iTokenGains,
uint256 tokenGains,
uint256 tokenBalance,
uint256 balanceInUSD,
uint256 tokenGainsInUSD
);
Allows a staker to deposit Tokens (in this case DAI). Notice that
approve
is needed to be executed before the execution of this method.Parameter name | Annotation |
---|---|
_amount | The amount of Token (in this case DAI) or iToken (in this case cDAI) to stake (it depends on _inInterestToken parameter). |
_donationPer | The % of interest staker want to donate. |
_inInterestToken | Specificy if stake in iToken (in this case cDAI) or Token (in this case DAI). |
Can be executed only when the contract is not paused.
function stake(
uint256 _amount,
uint256 _donationPer,
bool _inInterestToken
) external virtual;
Withdraws the sender staked Token (in this case DAI).
Parameter name | Annotation |
---|---|
_amount | Amount to withdraw in Token (in this case DAI) or iToken (in this case cDAI). |
_inInterestToken | If true _amount is in iToken (in this case cDAI) and also returned in iToken otherwise use Token (in this case DAI). |
Can be executed only when the contract is not paused.
function withdrawStake(uint256 _amount, bool _inInterestToken) external virtual;
Withdraw staker G$ rewards + GDAO (GOOD) rewards to the caller (staker).
function withdrawRewards() external;
Withdraw staker GDAO (GOOD) rewards to the caller (staker).
function claimReputation() public;
Collects gained interest (in G$) by fundmanager.
Parameter name | Annotation |
---|---|
_recipient | The recipient of iToken (in this case cDAI) gains. |
Return parameter name | Annotation |
---|---|
actualTokensRedeemed | Collected interest from token. |
actualRewardTokenRedeemed | Collected interest from reward token. |
actualDai | Total Token (in this case DAI) received from swapping token + reward token. |
function collectUBIInterest(address _recipient)
public
virtual
returns (
uint256 actualTokenRedeemed,
uint256 actualRewardTokenRedeemed,
uint256 actualDai
);
The function is to calculate Token (in this case DAI) price in USD.
Parameter name | Annotation |
---|---|
_oracle | Chainlink oracle usd/token oralce. |
_amount | Amount of Token to calculate worth of it. |
_decimals | Decimals of Token. |
Returns: worth of Tokens in USD, the decimals are 8.
function getTokenValueInUSD(
address _oracle,
uint256 _amount,
uint256 _decimals
) public view returns (uint256);
The function that can provide information about minted and pending rewards in G$ of the
_staker
.Parameter name | Annotation |
---|---|
_staker | Account to get rewards status for. |
Returns: The first element of the tuple is Minted value and the second is Pending value in G$; 2 decimals.
function getUserMintedAndPending(address _staker)
external
view
returns (uint256, uint256);
Last modified 1yr ago