Skip to content

Commit

Permalink
erase legacy delegations
Browse files Browse the repository at this point in the history
  • Loading branch information
uprendis authored and quan8 committed Nov 18, 2020
1 parent 8da1982 commit 78c4425
Show file tree
Hide file tree
Showing 4 changed files with 2 additions and 234 deletions.
22 changes: 1 addition & 21 deletions contracts/sfc/Staker.sol
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,9 @@ contract Stakers is Ownable, StakersConstants, Version {
uint256 public slashedDelegationsTotalAmount;
uint256 public slashedStakeTotalAmount;

mapping(address => Delegation) public legacyDelegations; // delegator address -> delegation

uint256 private deleted0;

uint256 private deleted1;
uint256 private deleted2;

struct StashedRewards {
uint256 amount;
Expand Down Expand Up @@ -246,7 +244,6 @@ contract Stakers is Ownable, StakersConstants, Version {
event CreatedDelegation(address indexed delegator, uint256 indexed toStakerID, uint256 amount);

function _createDelegation(address delegator, uint256 to) internal {
_checkAndUpgradeDelegationStorage(delegator);
_checkActiveStaker(to);
require(msg.value >= minDelegation(), "insufficient amount");
require(delegations[delegator][to].amount == 0, "delegation already exists");
Expand Down Expand Up @@ -510,7 +507,6 @@ contract Stakers is Ownable, StakersConstants, Version {

function _claimDelegationRewards(uint256 maxEpochs, uint256 toStakerID, bool compound) internal {
address payable delegator = msg.sender;
_checkAndUpgradeDelegationStorage(delegator);
Delegation storage delegation = delegations[delegator][toStakerID];
_checkNotDeactivatedDelegation(delegator, toStakerID);
(_RewardsSet memory rewards, uint256 fromEpoch, uint256 untilEpoch) = _calcDelegationLockupRewards(delegator, toStakerID, 0, maxEpochs, compound);
Expand Down Expand Up @@ -696,7 +692,6 @@ contract Stakers is Ownable, StakersConstants, Version {
// prepareToWithdrawDelegation starts delegation withdrawal
function prepareToWithdrawDelegation(uint256 toStakerID) external {
address delegator = msg.sender;
_checkAndUpgradeDelegationStorage(delegator);
Delegation storage delegation = delegations[delegator][toStakerID];
_checkNotDeactivatedDelegation(delegator, toStakerID);
StakeTokenizer(stakeTokenizerAddress).checkAllowedToWithdrawStake(delegator, toStakerID);
Expand Down Expand Up @@ -735,7 +730,6 @@ contract Stakers is Ownable, StakersConstants, Version {
// prepareToWithdrawDelegation starts withdrawal for a part of delegation stake
function prepareToWithdrawDelegationPartial(uint256 wrID, uint256 toStakerID, uint256 amount) external {
address payable delegator = msg.sender;
_checkAndUpgradeDelegationStorage(delegator);
Delegation storage delegation = delegations[delegator][toStakerID];
_checkNotDeactivatedDelegation(delegator, toStakerID);
StakeTokenizer(stakeTokenizerAddress).checkAllowedToWithdrawStake(delegator, toStakerID);
Expand Down Expand Up @@ -785,7 +779,6 @@ contract Stakers is Ownable, StakersConstants, Version {
// withdrawDelegation finalises delegation withdrawal
function withdrawDelegation(uint256 toStakerID) external {
address payable delegator = msg.sender;
_checkAndUpgradeDelegationStorage(delegator);
Delegation memory delegation = delegations[delegator][toStakerID];
require(delegation.deactivatedTime != 0, "delegation wasn't deactivated");
if (stakers[toStakerID].stakeAmount != 0) {
Expand Down Expand Up @@ -914,7 +907,6 @@ contract Stakers is Ownable, StakersConstants, Version {
function lockUpDelegation(uint256 lockDuration, uint256 toStakerID) external {
require(isLockingFeatureActive(currentEpoch()), "feature was not activated");
address delegator = msg.sender;
_checkAndUpgradeDelegationStorage(delegator);
_checkExistDelegation(delegator, toStakerID);
_checkActiveStaker(toStakerID);
require(lockDuration >= minLockupDuration() && lockDuration <= maxLockupDuration(), "incorrect duration");
Expand Down Expand Up @@ -1021,16 +1013,4 @@ contract Stakers is Ownable, StakersConstants, Version {
require(fromEpoch <= currentSealedEpoch, "future epoch");
require(untilEpoch >= fromEpoch, "no epochs claimed");
}

function _checkAndUpgradeDelegationStorage(address delegator) internal {
if (legacyDelegations[delegator].amount != 0) {
delegations[delegator][legacyDelegations[delegator].toStakerID] = legacyDelegations[delegator];
delete legacyDelegations[delegator];
}
}

function _upgradeDelegationStorage(address delegator) external {
require(legacyDelegations[delegator].amount != 0, "doesn't exist or already upgraded");
_checkAndUpgradeDelegationStorage(delegator);
}
}
56 changes: 0 additions & 56 deletions contracts/test/LegacyStaker.sol

This file was deleted.

9 changes: 1 addition & 8 deletions contracts/test/UnitTestStakers.sol
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ contract UnitTestStakers is Stakers {
// Increase msg.sender's delegation by msg.value
function increaseDelegation(uint256 to) external payable {
address delegator = msg.sender;
_checkAndUpgradeDelegationStorage(delegator);
_checkNotDeactivatedDelegation(delegator, to);
// previous rewards must be claimed because rewards calculation depends on current delegation amount
_checkClaimedDelegation(delegator, to);
Expand Down Expand Up @@ -166,12 +165,6 @@ contract UnitTestStakers is Stakers {
}

function discardDelegationRewards(uint256 toStakerID) public {
if (legacyDelegations[msg.sender].amount != 0) {
legacyDelegations[msg.sender].paidUntilEpoch = currentSealedEpoch;
} else if (delegations[msg.sender][toStakerID].amount != 0) {
delegations[msg.sender][toStakerID].paidUntilEpoch = currentSealedEpoch;
} else {
revert("delegation doesn't exist");
}
delegations[msg.sender][toStakerID].paidUntilEpoch = currentSealedEpoch;
}
}
149 changes: 0 additions & 149 deletions test/MigrationState.js

This file was deleted.

0 comments on commit 78c4425

Please sign in to comment.