-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added ability to donate to the prizes #92
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -230,6 +230,8 @@ contract PrizePool is TieredLiquidityDistributor, Ownable { | |
/// @notice Records the last shutdown withdrawal for an account | ||
mapping(address vault => mapping(address user => uint24 drawId)) internal _lastShutdownWithdrawal; | ||
|
||
address public constant DONATOR = 0x000000000000000000000000000000000000F2EE; | ||
|
||
/// @notice The token that is being contributed and awarded as prizes. | ||
IERC20 public immutable prizeToken; | ||
|
||
|
@@ -343,7 +345,7 @@ contract PrizePool is TieredLiquidityDistributor, Ownable { | |
/// @param _prizeVault The address of the vault to contribute to | ||
/// @param _amount The amount of prize tokens to contribute | ||
/// @return The amount of available prize tokens prior to the contribution. | ||
function contributePrizeTokens(address _prizeVault, uint256 _amount) external returns (uint256) { | ||
function contributePrizeTokens(address _prizeVault, uint256 _amount) public returns (uint256) { | ||
uint256 _deltaBalance = prizeToken.balanceOf(address(this)) - accountedBalance(); | ||
if (_deltaBalance < _amount) { | ||
revert ContributionGTDeltaBalance(_amount, _deltaBalance); | ||
|
@@ -355,6 +357,11 @@ contract PrizePool is TieredLiquidityDistributor, Ownable { | |
return _deltaBalance; | ||
} | ||
|
||
function donatePrizeTokens(uint256 _amount) external { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. missing natspec |
||
prizeToken.transferFrom(msg.sender, address(this), _amount); | ||
contributePrizeTokens(DONATOR, _amount); | ||
} | ||
|
||
/// @notice Allows the Manager to allocate a reward from the reserve to a recipient. | ||
/// @param _to The address to allocate the rewards to | ||
/// @param _amount The amount of tokens for the reward | ||
|
@@ -579,7 +586,7 @@ contract PrizePool is TieredLiquidityDistributor, Ownable { | |
address _vault, | ||
uint24 _startDrawIdInclusive, | ||
uint24 _endDrawIdInclusive | ||
) external view returns (uint256) { | ||
) public view returns (uint256) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. doesn't need to be public |
||
return | ||
DrawAccumulatorLib.getDisbursedBetween( | ||
_vaultAccumulator[_vault], | ||
|
@@ -588,6 +595,22 @@ contract PrizePool is TieredLiquidityDistributor, Ownable { | |
); | ||
} | ||
|
||
/// @notice Returns the total prize tokens donated to the prize pool | ||
/// @param _startDrawIdInclusive Start draw id inclusive | ||
/// @param _endDrawIdInclusive End draw id inclusive | ||
/// @return The total prize tokens donated to the prize pool | ||
function getDonatedBetween( | ||
uint24 _startDrawIdInclusive, | ||
uint24 _endDrawIdInclusive | ||
) public view returns (uint256) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. doesn't need to be public |
||
return | ||
DrawAccumulatorLib.getDisbursedBetween( | ||
_vaultAccumulator[DONATOR], | ||
_startDrawIdInclusive, | ||
_endDrawIdInclusive | ||
); | ||
} | ||
|
||
/// @notice Computes the expected duration prize accrual for a tier. | ||
/// @param _tier The tier to check | ||
/// @return The number of draws | ||
|
@@ -960,6 +983,8 @@ contract PrizePool is TieredLiquidityDistributor, Ownable { | |
_endDrawIdInclusive | ||
); | ||
|
||
uint256 totalDonated = DrawAccumulatorLib.getDisbursedBetween(_vaultAccumulator[DONATOR], _startDrawIdInclusive, _endDrawIdInclusive); | ||
|
||
// vaultContributed / totalContributed | ||
return | ||
totalContributed != 0 | ||
|
@@ -971,7 +996,7 @@ contract PrizePool is TieredLiquidityDistributor, Ownable { | |
_endDrawIdInclusive | ||
) | ||
) | ||
).div(sd(SafeCast.toInt256(totalContributed))) | ||
).div(sd(SafeCast.toInt256(totalContributed - totalDonated))) | ||
: sd(0); | ||
} | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing natspec
Also would be nice to know why this address was chosen.