增加deposit时, cec质押数量的检查
This commit is contained in:
parent
8d32e0c1a8
commit
6f4fdaa135
@ -15,7 +15,6 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
|
|||||||
string public name;
|
string public name;
|
||||||
string public symbol;
|
string public symbol;
|
||||||
uint8 public decimals = 18;
|
uint8 public decimals = 18;
|
||||||
// remove?
|
|
||||||
uint256 public vestingDuration;
|
uint256 public vestingDuration;
|
||||||
address public esToken;
|
address public esToken;
|
||||||
address public pairToken;
|
address public pairToken;
|
||||||
@ -25,6 +24,7 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
|
|||||||
|
|
||||||
uint256 public override totalSupply;
|
uint256 public override totalSupply;
|
||||||
uint256 public pairSupply;
|
uint256 public pairSupply;
|
||||||
|
bool public needCheckStake;
|
||||||
|
|
||||||
mapping(address account => uint256 amount) public balances;
|
mapping(address account => uint256 amount) public balances;
|
||||||
mapping(address account => uint256 amount) public override pairAmounts;
|
mapping(address account => uint256 amount) public override pairAmounts;
|
||||||
@ -55,18 +55,17 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
|
|||||||
address _esToken,
|
address _esToken,
|
||||||
address _pairToken,
|
address _pairToken,
|
||||||
address _claimableToken,
|
address _claimableToken,
|
||||||
address _rewardTracker
|
address _rewardTracker,
|
||||||
|
bool _needCheckStake
|
||||||
) {
|
) {
|
||||||
name = _name;
|
name = _name;
|
||||||
symbol = _symbol;
|
symbol = _symbol;
|
||||||
|
|
||||||
vestingDuration = _vestingDuration;
|
vestingDuration = _vestingDuration;
|
||||||
|
|
||||||
esToken = _esToken;
|
esToken = _esToken;
|
||||||
pairToken = _pairToken;
|
pairToken = _pairToken;
|
||||||
claimableToken = _claimableToken;
|
claimableToken = _claimableToken;
|
||||||
|
|
||||||
rewardTracker = _rewardTracker;
|
rewardTracker = _rewardTracker;
|
||||||
|
needCheckStake = _needCheckStake;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setHandler(address _handler, bool _isActive) external onlyGov {
|
function setHandler(address _handler, bool _isActive) external onlyGov {
|
||||||
@ -122,6 +121,10 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
|
|||||||
emit Withdraw(account, claimedAmount, balance);
|
emit Withdraw(account, claimedAmount, balance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setRewardTracker(address _rewardTracker) external onlyGov {
|
||||||
|
rewardTracker = _rewardTracker;
|
||||||
|
}
|
||||||
|
|
||||||
function setCumulativeRewardDeductions(address _account, uint256 _amount) external override nonReentrant {
|
function setCumulativeRewardDeductions(address _account, uint256 _amount) external override nonReentrant {
|
||||||
_validateHandler();
|
_validateHandler();
|
||||||
cumulativeRewardDeductions[_account] = _amount;
|
cumulativeRewardDeductions[_account] = _amount;
|
||||||
@ -267,7 +270,6 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
|
|||||||
*/
|
*/
|
||||||
function _deposit(address _account, uint256 _amount) private {
|
function _deposit(address _account, uint256 _amount) private {
|
||||||
require(_amount > 0, "Vester: invalid _amount");
|
require(_amount > 0, "Vester: invalid _amount");
|
||||||
|
|
||||||
_updateVesting(_account);
|
_updateVesting(_account);
|
||||||
|
|
||||||
IERC20(esToken).safeTransferFrom(_account, address(this), _amount);
|
IERC20(esToken).safeTransferFrom(_account, address(this), _amount);
|
||||||
@ -283,7 +285,11 @@ contract Vester is IVester, IERC20, ReentrancyGuard, Governable {
|
|||||||
_mintPair(_account, pairAmountDiff);
|
_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);
|
uint256 maxAmount = getMaxVestableAmount(_account);
|
||||||
require(getTotalVested(_account) <= maxAmount, "Vester: max vestable amount exceeded");
|
require(getTotalVested(_account) <= maxAmount, "Vester: max vestable amount exceeded");
|
||||||
|
|
||||||
|
@ -59,6 +59,7 @@ describe('RewardRouter', function() {
|
|||||||
ZeroAddress,
|
ZeroAddress,
|
||||||
cec.target,
|
cec.target,
|
||||||
ZeroAddress,
|
ZeroAddress,
|
||||||
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
await stakedCecTracker.setInPrivateTransferMode(true)
|
await stakedCecTracker.setInPrivateTransferMode(true)
|
||||||
|
@ -29,6 +29,7 @@ describe("Vester", function () {
|
|||||||
ZeroAddress,
|
ZeroAddress,
|
||||||
cec.target,
|
cec.target,
|
||||||
ZeroAddress,
|
ZeroAddress,
|
||||||
|
false
|
||||||
);
|
);
|
||||||
await cec.mint(owner.address, expandDecimals(100000, 18));
|
await cec.mint(owner.address, expandDecimals(100000, 18));
|
||||||
await esCec.mint(owner.address, expandDecimals(100000, 18));
|
await esCec.mint(owner.address, expandDecimals(100000, 18));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user