Created
March 2, 2021 12:06
-
-
Save nonseodion/db2dd2fe8a64ef515f000a8467c44095 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function deposit(address _lpToken, uint256 _amount) external override { | |
require(block.timestamp >= START_TIME , "Blacksmith: not started"); | |
require(_amount > 0, "Blacksmith: amount is 0"); | |
Pool memory pool = pools[_lpToken]; | |
require(pool.lastUpdatedAt > 0, "Blacksmith: pool does not exists"); | |
require(IERC20(_lpToken).balanceOf(msg.sender) >= _amount, "Blacksmith: insufficient balance"); | |
updatePool(_lpToken); | |
Miner storage miner = miners[_lpToken][msg.sender]; | |
BonusToken memory bonusToken = bonusTokens[_lpToken]; | |
_claimCoverRewards(pool, miner); | |
_claimBonus(bonusToken, miner); | |
miner.amount = miner.amount.add(_amount); | |
// update writeoff to match current acc rewards/bonus per token | |
miner.rewardWriteoff = miner.amount.mul(pool.accRewardsPerToken).div(CAL_MULTIPLIER); | |
miner.bonusWriteoff = miner.amount.mul(bonusToken.accBonusPerToken).div(CAL_MULTIPLIER); | |
IERC20(_lpToken).safeTransferFrom(msg.sender, address(this), _amount); | |
emit Deposit(msg.sender, _lpToken, _amount); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment