Sync delegatedStakeToPoolByOwner whenever _withdrawAndSyncDelegatorRewards is called
This commit is contained in:
		| @@ -31,25 +31,13 @@ contract MixinStakingPoolRewards is | ||||
| { | ||||
|     using LibSafeMath for uint256; | ||||
|  | ||||
|     /// @dev Syncs rewards for a delegator. This includes transferring WETH | ||||
|     ///      rewards to the delegator, and adding/removing | ||||
|     ///      dependencies on cumulative rewards. | ||||
|     ///      This is used by a delegator when they want to sync their rewards | ||||
|     ///      without delegating/undelegating. It's effectively the same as | ||||
|     ///      delegating zero stake. | ||||
|     /// @dev Withdraws the caller's WETH rewards that have accumulated | ||||
|     ///      until the last epoch. | ||||
|     /// @param poolId Unique id of pool. | ||||
|     function withdrawDelegatorRewards(bytes32 poolId) | ||||
|         external | ||||
|     { | ||||
|         address member = msg.sender; | ||||
|  | ||||
|         _withdrawAndSyncDelegatorRewards( | ||||
|             poolId, | ||||
|             member | ||||
|         ); | ||||
|  | ||||
|         _delegatedStakeToPoolByOwner[member][poolId] = | ||||
|             _loadCurrentBalance(_delegatedStakeToPoolByOwner[member][poolId]); | ||||
|         _withdrawAndSyncDelegatorRewards(poolId, msg.sender); | ||||
|     } | ||||
|  | ||||
|     /// @dev Computes the reward balance in ETH of the operator of a pool. | ||||
| @@ -105,8 +93,8 @@ contract MixinStakingPoolRewards is | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /// @dev Syncs rewards for a delegator. This includes transferring rewards | ||||
|     ///      withdrawing rewards and adding/removing dependencies on cumulative rewards. | ||||
|     /// @dev Syncs rewards for a delegator. This includes withdrawing rewards | ||||
|     ///      rewards and adding/removing dependencies on cumulative rewards. | ||||
|     /// @param poolId Unique id of pool. | ||||
|     /// @param member of the pool. | ||||
|     function _withdrawAndSyncDelegatorRewards( | ||||
| @@ -128,6 +116,12 @@ contract MixinStakingPoolRewards is | ||||
|             0 | ||||
|         ); | ||||
|  | ||||
|         // Sync the delegated stake balance. This will ensure future calls of | ||||
|         // `_computeDelegatorReward` during this epoch will return 0,  | ||||
|         // preventing a delegator from withdrawing more than once an epoch. | ||||
|         _delegatedStakeToPoolByOwner[member][poolId] = | ||||
|             _loadCurrentBalance(_delegatedStakeToPoolByOwner[member][poolId]); | ||||
|  | ||||
|         // Withdraw non-0 balance | ||||
|         if (balance != 0) { | ||||
|             // Decrease the balance of the pool | ||||
|   | ||||
		Reference in New Issue
	
	Block a user