save progress

This commit is contained in:
Ricardo Guilherme Schmidt 2023-05-24 10:25:52 -03:00
parent a692d32516
commit 254afe9932
No known key found for this signature in database
GPG Key ID: 3F95A3AD0B607030
2 changed files with 49 additions and 10 deletions

View File

@ -9,6 +9,10 @@ contract StakeManager is ERC20 {
address stakedToken; address stakedToken;
bytes32 vaultCodehash; bytes32 vaultCodehash;
uint256 mp_supply = 0;
uint256 public constant MP_APY = 1;
uint256 public constant STAKE_APY = 1;
uint256 public constant MAX_BOOST = 1;
mapping (address => Account) account; mapping (address => Account) account;
@ -18,7 +22,7 @@ contract StakeManager is ERC20 {
} }
function join(uint256 amount) external onlyVault { function join(uint256 amount) external onlyVault {
stakedToken.transferFrom(msg.sender, )
} }
function lock(uint256 amount, uint256 time) external onlyVault { function lock(uint256 amount, uint256 time) external onlyVault {
@ -33,6 +37,14 @@ contract StakeManager is ERC20 {
} }
function getRewardsEmissions() public view returns(uint256){
}
function increase_mp(uint256 amount) {
}

View File

@ -12,21 +12,21 @@ contract StakeVault {
ERC20 stakedToken; ERC20 stakedToken;
uint256 balance; uint256 balance;
uint256 locked; uint256 locked;
uint256 unlockTime;
uint256 lockedPeriod;
uint256 multiplierPoints; uint256 multiplierPoints;
//uint256 constant FACTOR = 1;
uint256 constant MP_APY = 1;
uint256 constant MAX_MP = 1;
function join(uint256 amount) external { function join(uint256 amount) external {
stakedToken.transferFrom(msg.sender, address(this), amount); _join(amount);
} }
function lock(uint256 amount, uint256 time) external { function lock(uint256 amount, uint256 time) external {
_lock(amount,time);
} }
function joinAndLock(uint256 amount, uint256 time) external { function joinAndLock(uint256 amount, uint256 time) external {
_join(amount);
_lock(amount,time);
} }
@ -34,14 +34,41 @@ contract StakeVault {
} }
function getMaxMultiplierPoints() public view returns(uint256) {
return balance * (stakeManager.MAX_BOOST() + lockup + 1);
}
function _join(uint256 amount) internal {
stakedToken.transferFrom(msg.sender, address(this), amount);
}
function _lock(uint256 amount, uint256 time) internal {
require(time > 0, "Invalid lock time");
lockedPeriod = time;
unlockTime = now() + time;
locked = amount;
multiplierPoints += amount * (time + 1);
}
function mintMultiplierPoints() internal { function mintMultiplierPoints() internal {
uint256 new_mp = multiplierPoints + (balance * stakeManager.MP_APY()); uint256 new_mp = multiplierPoints + (balance * stakeManager.MP_APY());
uint256 max_mp = stakeManager.MAX_MP(); uint256 max_mp = getMaxMultiplierPoints();
multiplierPoints = new_mp > max_mp ? max_mp : new_mp; multiplierPoints = new_mp > max_mp ? max_mp : new_mp;
} }
function distriuteRewards() internal {
uitn256 stakeApy = stakeManager.STAKE_APY()
if(stakeApy > 0){
return stake_apy * (balance + multiplierPoints)
} else {
uint256 cs = balance + multiplierPoints
uint256 rewards = stakeManager.getRewardEmissions();
if(cs > 0){
return = rewards * (balance + multiplierPoints) / cs
}
}
}
} }