Skip to content
This repository was archived by the owner on Mar 1, 2024. It is now read-only.

Stake shares on curve #354

Open
wants to merge 11 commits into
base: v0.3.0-backport
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 125 additions & 49 deletions contracts/staking/stakeManager/StakeManager.sol

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions contracts/staking/stakeManager/StakeManagerExtension.sol
Original file line number Diff line number Diff line change
Expand Up @@ -179,4 +179,8 @@ contract StakeManagerExtension is StakeManagerStorage, Initializable, StakeManag
}
return _eventsHub;
}

function setSharesK(uint256 k) external onlyGovernance {
sharesK = k.mul(SHARES_PRECISION);
}
}
3 changes: 3 additions & 0 deletions contracts/staking/stakeManager/StakeManagerStorage.sol
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ contract StakeManagerStorage is GovernanceLockable, RootChainable {
struct State {
uint256 amount;
uint256 stakerCount;
uint256 shares;
}

struct StateChange {
int256 amount;
int256 stakerCount;
int256 shares;
}

struct Validator {
Expand All @@ -49,6 +51,7 @@ contract StakeManagerStorage is GovernanceLockable, RootChainable {
uint256 constant MAX_COMMISION_RATE = 100;
uint256 constant MAX_PROPOSER_BONUS = 100;
uint256 constant REWARD_PRECISION = 10**25;
uint256 public constant SHARES_PRECISION = 10**12;
uint256 internal constant INCORRECT_VALIDATOR_ID = 2**256 - 1;
uint256 internal constant INITIALIZED_AMOUNT = 1;

Expand Down
10 changes: 10 additions & 0 deletions contracts/staking/stakeManager/StakeManagerStorageExtension.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
pragma solidity 0.5.17;

contract StakeManagerStorageExtension {
struct StakeSharesState {
uint256 sharesPool;
uint256 stakePool;
uint256 shares;
}

address public eventsHub;
uint256 public rewardPerStake;
address public extensionCode;
Expand All @@ -14,4 +20,8 @@ contract StakeManagerStorageExtension {
uint256 public maxRewardedCheckpoints;
// increase / decrease value for faster or slower checkpoints, 0 - 100%
uint256 public checkpointRewardDelta;
// constant for stake shares curve
uint256 public sharesK;
// validator Id => state
mapping(uint256 => StakeSharesState) public sharesState;
}
Loading