增加deposit时, cec质押数量的检查

This commit is contained in:
CounterFire2023 2024-08-27 17:42:11 +08:00
parent 8d32e0c1a8
commit 6f4fdaa135
3 changed files with 15 additions and 7 deletions

View File

@ -15,7 +15,6 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
string public name;
string public symbol;
uint8 public decimals = 18;
// remove?
uint256 public vestingDuration;
address public esToken;
address public pairToken;
@ -25,6 +24,7 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
uint256 public override totalSupply;
uint256 public pairSupply;
bool public needCheckStake;
mapping(address account => uint256 amount) public balances;
mapping(address account => uint256 amount) public override pairAmounts;
@ -55,18 +55,17 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
address _esToken,
address _pairToken,
address _claimableToken,
address _rewardTracker
address _rewardTracker,
bool _needCheckStake
) {
name = _name;
symbol = _symbol;
vestingDuration = _vestingDuration;
esToken = _esToken;
pairToken = _pairToken;
claimableToken = _claimableToken;
rewardTracker = _rewardTracker;
needCheckStake = _needCheckStake;
}
function setHandler(address _handler, bool _isActive) external onlyGov {
@ -122,6 +121,10 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
emit Withdraw(account, claimedAmount, balance);
}
function setRewardTracker(address _rewardTracker) external onlyGov {
rewardTracker = _rewardTracker;
}
function setCumulativeRewardDeductions(address _account, uint256 _amount) external override nonReentrant {
_validateHandler();
cumulativeRewardDeductions[_account] = _amount;
@ -267,7 +270,6 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
*/
function _deposit(address _account, uint256 _amount) private {
require(_amount > 0, "Vester: invalid _amount");
_updateVesting(_account);
IERC20(esToken).safeTransferFrom(_account, address(this), _amount);
@ -283,7 +285,11 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
_mintPair(_account, pairAmountDiff);
}
}
if (needCheckStake && hasRewardTracker()) {
// if u want to transfer 100 esCec to cec, u need to have 100 cec in stake
uint256 cecAmount = IRewardTracker(rewardTracker).depositBalances(_account, claimableToken);
require(balances[_account] <= cecAmount, "Vester: insufficient cec balance");
}
uint256 maxAmount = getMaxVestableAmount(_account);
require(getTotalVested(_account) <= maxAmount, "Vester: max vestable amount exceeded");

View File

@ -59,6 +59,7 @@ describe('RewardRouter', function() {
ZeroAddress,
cec.target,
ZeroAddress,
false
);
await stakedCecTracker.setInPrivateTransferMode(true)

View File

@ -29,6 +29,7 @@ describe("Vester", function () {
ZeroAddress,
cec.target,
ZeroAddress,
false
);
await cec.mint(owner.address, expandDecimals(100000, 18));
await esCec.mint(owner.address, expandDecimals(100000, 18));