corrrect commitment & redeem conditioning

This commit is contained in:
gozzy 2023-03-21 05:42:43 +00:00
parent 2969ace51b
commit f853f019d7
3 changed files with 19 additions and 10 deletions

View File

@ -60,9 +60,13 @@ contract DelegatedInstance {
delete _balance; delete _balance;
IGovernance(_governanceAddress).unlock(stake); if (reward > 0) {
IStaking(_stakingAddress).getReward(); IStaking(_stakingAddress).getReward();
IERC20(_tokenAddress).transfer(_spender, stake + reward); } if (stake > 0) {
IGovernance(_governanceAddress).unlock(stake);
} if (stake + reward > 0) {
IERC20(_tokenAddress).transfer(_spender, stake + reward);
}
} }
} }
@ -84,21 +88,25 @@ contract DelegatedVesting {
_governanceAddress = governanceAddress; _governanceAddress = governanceAddress;
} }
function isCommitment(address stakeholder) public view returns (bool) {
return _balances[stakeholder] > 0 && _commitments[stakeholder] > 0;
}
function isActiveCommitment(address stakeholder) public view returns (bool) { function isActiveCommitment(address stakeholder) public view returns (bool) {
return _balances[stakeholder] > 0 && _commitments[stakeholder] > block.timestamp; return _balances[stakeholder] > 0 && _commitments[stakeholder] > block.timestamp;
} }
function isDelegatedCommitment(address stakeholder) public view returns (bool) { function isDelegatedCommitment(address stakeholder) public view returns (bool) {
return isActiveCommitment(stakeholder) && _instances[stakeholder] != address(0x0); return isCommitment(stakeholder) && _instances[stakeholder] != address(0x0);
} }
function isFulfilledCommitment(address stakeholder) public view returns (bool) { function isFulfilledCommitment(address stakeholder) public view returns (bool) {
return _balances[stakeholder] > 0 && _commitments[stakeholder] < block.timestamp; return isCommitment(stakeholder) && _commitments[stakeholder] < block.timestamp;
} }
function makeCommitment(address stakeholder, uint256 amount, uint256 expiry) public { function makeCommitment(address stakeholder, uint256 amount, uint256 expiry) public {
require(block.timestamp < expiry, "INVALID EXPIRY TIMESTAMP"); require(block.timestamp < expiry, "INVALID EXPIRY TIMESTAMP");
require(_commitments[stakeholder] == 0, "ACTIVE VESTING"); require(!isCommitment(stakeholder), "IS ACTIVE COMMITMENT");
IERC20(_tokenAddress).transferFrom(msg.sender, address(this), amount); IERC20(_tokenAddress).transferFrom(msg.sender, address(this), amount);
@ -113,7 +121,7 @@ contract DelegatedVesting {
bytes32 r, bytes32 r,
bytes32 s bytes32 s
) public { ) public {
require(isActiveCommitment(msg.sender), "INVALID COMMITMENT"); require(isCommitment(msg.sender), "INVALID COMMITMENT");
if(isDelegatedCommitment(msg.sender)) { if(isDelegatedCommitment(msg.sender)) {
DelegatedInstance(_instances[msg.sender]).delegate(delegateAddress); DelegatedInstance(_instances[msg.sender]).delegate(delegateAddress);

View File

@ -22,7 +22,8 @@ contract Proposal {
uint256 AUCTION_WINDOW_LENGTH = 8 hours; uint256 AUCTION_WINDOW_LENGTH = 8 hours;
function executeProposal() external { function executeProposal() external {
RDA(auctionAddress).createAuction( IERC20(tokenAddress).approve(auctionAddress, AUCTION_RESERVE_AMOUNT);
IRDA(auctionAddress).createAuction(
vestingAddress, vestingAddress,
governanceAddress, governanceAddress,
tokenAddress, tokenAddress,

View File

@ -28,8 +28,8 @@ interface IRDA {
uint256 startingOriginPrice, uint256 startingOriginPrice,
uint256 startTimestamp, uint256 startTimestamp,
uint256 endTimestamp, uint256 endTimestamp,
uint256 vestingTimestamp, uint256 windowDuration,
uint256 windowDuration uint256 vestingDuration
) external returns (bytes memory); ) external returns (bytes memory);
function withdraw(bytes memory auctionId) external; function withdraw(bytes memory auctionId) external;