Skip to content

Commit

Permalink
eliminated DrawLib
Browse files Browse the repository at this point in the history
  • Loading branch information
Aodhgan committed Oct 6, 2021
1 parent b98d3e0 commit 692078f
Show file tree
Hide file tree
Showing 13 changed files with 57 additions and 86 deletions.
1 change: 0 additions & 1 deletion contracts/DrawBeacon.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import "@pooltogether/owner-manager-contracts/contracts/Ownable.sol";

import "./interfaces/IDrawBeacon.sol";
import "./interfaces/IDrawHistory.sol";
import "./libraries/DrawLib.sol";

/**
* @title PoolTogether V4 DrawBeacon
Expand Down
23 changes: 11 additions & 12 deletions contracts/DrawCalculator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import "./interfaces/ITicket.sol";
import "./interfaces/IDrawHistory.sol";
import "./interfaces/IDrawBeacon.sol";
import "./interfaces/IPrizeDistributionHistory.sol";
import "./libraries/DrawLib.sol";
import "./libraries/DrawRingBufferLib.sol";

/**
Expand Down Expand Up @@ -75,8 +74,8 @@ contract DrawCalculator is IDrawCalculator, Ownable {
// READ list of IDrawBeacon.Draw using the drawIds from drawHistory
IDrawBeacon.Draw[] memory draws = drawHistory.getDraws(_drawIds);

// READ list of DrawLib.PrizeDistribution using the drawIds
DrawLib.PrizeDistribution[] memory _prizeDistributions = prizeDistributionHistory
// READ list of IPrizeDistributionHistory.PrizeDistribution using the drawIds
IPrizeDistributionHistory.PrizeDistribution[] memory _prizeDistributions = prizeDistributionHistory
.getPrizeDistributions(_drawIds);

// The userBalances are fractions representing their portion of the liquidity for a draw.
Expand Down Expand Up @@ -118,7 +117,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
returns (uint256[] memory)
{
IDrawBeacon.Draw[] memory _draws = drawHistory.getDraws(_drawIds);
DrawLib.PrizeDistribution[] memory _prizeDistributions = prizeDistributionHistory
IPrizeDistributionHistory.PrizeDistribution[] memory _prizeDistributions = prizeDistributionHistory
.getPrizeDistributions(_drawIds);

return _getNormalizedBalancesAt(_user, _draws, _prizeDistributions);
Expand All @@ -134,7 +133,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
drawIds[0] = _drawId;

IDrawBeacon.Draw[] memory _draws = drawHistory.getDraws(drawIds);
DrawLib.PrizeDistribution[] memory _prizeDistributions = prizeDistributionHistory
IPrizeDistributionHistory.PrizeDistribution[] memory _prizeDistributions = prizeDistributionHistory
.getPrizeDistributions(drawIds);

uint256[] memory userBalances = _getNormalizedBalancesAt(
Expand Down Expand Up @@ -192,7 +191,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
bytes32 _userRandomNumber,
IDrawBeacon.Draw[] memory _draws,
uint64[][] memory _pickIndicesForDraws,
DrawLib.PrizeDistribution[] memory _prizeDistributions
IPrizeDistributionHistory.PrizeDistribution[] memory _prizeDistributions
) internal pure returns (uint256[] memory) {
uint256[] memory prizesAwardable = new uint256[](_normalizedUserBalances.length);

Expand Down Expand Up @@ -223,7 +222,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
* @return The number of picks a user gets for a Draw
*/
function _calculateNumberOfUserPicks(
DrawLib.PrizeDistribution memory _prizeDistribution,
IPrizeDistributionHistory.PrizeDistribution memory _prizeDistribution,
uint256 _normalizedUserBalance
) internal pure returns (uint256) {
return (_normalizedUserBalance * _prizeDistribution.numberOfPicks) / 1 ether;
Expand All @@ -239,7 +238,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
function _getNormalizedBalancesAt(
address _user,
IDrawBeacon.Draw[] memory _draws,
DrawLib.PrizeDistribution[] memory _prizeDistributions
IPrizeDistributionHistory.PrizeDistribution[] memory _prizeDistributions
) internal view returns (uint256[] memory) {
uint32[] memory _timestampsWithStartCutoffTimes = new uint32[](_draws.length);
uint32[] memory _timestampsWithEndCutoffTimes = new uint32[](_draws.length);
Expand Down Expand Up @@ -292,7 +291,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
uint256 _totalUserPicks,
bytes32 _userRandomNumber,
uint64[] memory _picks,
DrawLib.PrizeDistribution memory _prizeDistribution
IPrizeDistributionHistory.PrizeDistribution memory _prizeDistribution
) internal pure returns (uint256) {
// prizeCounts stores the number of wins at a distribution index
uint256[] memory prizeCounts = new uint256[](DISTRIBUTIONS_LENGTH);
Expand Down Expand Up @@ -395,7 +394,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
* @param _prizeDistribution The PrizeDistribution to use to calculate the masks
* @return An array of bitmasks
*/
function _createBitMasks(DrawLib.PrizeDistribution memory _prizeDistribution)
function _createBitMasks(IPrizeDistributionHistory.PrizeDistribution memory _prizeDistribution)
internal
pure
returns (uint256[] memory)
Expand All @@ -420,7 +419,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
* @return returns the fraction of the total prize (fixed point 1e9)
*/
function _calculatePrizeDistributionFraction(
DrawLib.PrizeDistribution memory _prizeDistribution,
IPrizeDistributionHistory.PrizeDistribution memory _prizeDistribution,
uint256 _distributionIndex
) internal pure returns (uint256) {

Expand All @@ -443,7 +442,7 @@ contract DrawCalculator is IDrawCalculator, Ownable {
* @return returns an array of prize distributions fractions
*/
function _calculatePrizeDistributionFractions(
DrawLib.PrizeDistribution memory _prizeDistribution,
IPrizeDistributionHistory.PrizeDistribution memory _prizeDistribution,
uint8 _maxWinningDistributionIndex
) internal pure returns (uint256[] memory) {
uint256[] memory prizeDistributionFractions = new uint256[](
Expand Down
1 change: 0 additions & 1 deletion contracts/DrawHistory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ pragma solidity 0.8.6;
import "@pooltogether/owner-manager-contracts/contracts/Manageable.sol";

import "./interfaces/IDrawHistory.sol";
import "./libraries/DrawLib.sol";
import "./libraries/DrawRingBufferLib.sol";

/**
Expand Down
2 changes: 1 addition & 1 deletion contracts/DrawPrize.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import "@pooltogether/owner-manager-contracts/contracts/Ownable.sol";

import "./interfaces/IDrawPrize.sol";
import "./interfaces/IDrawCalculator.sol";
import "./libraries/DrawLib.sol";


/**
* @title PoolTogether V4 DrawPrize
Expand Down
21 changes: 10 additions & 11 deletions contracts/PrizeDistributionHistory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ pragma solidity 0.8.6;

import "@pooltogether/owner-manager-contracts/contracts/Manageable.sol";

import "./libraries/DrawLib.sol";
import "./libraries/DrawRingBufferLib.sol";
import "./interfaces/IPrizeDistributionHistory.sol";

Expand All @@ -25,7 +24,7 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
event Deployed(uint8 cardinality);

/// @notice PrizeDistribution ring buffer history.
DrawLib.PrizeDistribution[MAX_CARDINALITY] internal _prizeDistributionsRingBuffer;
IPrizeDistributionHistory.PrizeDistribution[MAX_CARDINALITY] internal _prizeDistributionsRingBuffer;

/// @notice Ring buffer data (nextIndex, lastDrawId, cardinality)
DrawRingBufferLib.Buffer internal _prizeDistributionsRingBufferData;
Expand All @@ -49,7 +48,7 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
external
view
override
returns (DrawLib.PrizeDistribution memory)
returns (IPrizeDistributionHistory.PrizeDistribution memory)
{
return _getPrizeDistribution(_prizeDistributionsRingBufferData, _drawId);
}
Expand All @@ -59,10 +58,10 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
external
view
override
returns (DrawLib.PrizeDistribution[] memory)
returns (IPrizeDistributionHistory.PrizeDistribution[] memory)
{
DrawRingBufferLib.Buffer memory buffer = _prizeDistributionsRingBufferData;
DrawLib.PrizeDistribution[] memory _prizeDistributions = new DrawLib.PrizeDistribution[](
IPrizeDistributionHistory.PrizeDistribution[] memory _prizeDistributions = new IPrizeDistributionHistory.PrizeDistribution[](
_drawIds.length
);

Expand Down Expand Up @@ -96,7 +95,7 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
external
view
override
returns (DrawLib.PrizeDistribution memory prizeDistribution, uint32 drawId)
returns (IPrizeDistributionHistory.PrizeDistribution memory prizeDistribution, uint32 drawId)
{
DrawRingBufferLib.Buffer memory buffer = _prizeDistributionsRingBufferData;

Expand All @@ -111,7 +110,7 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
external
view
override
returns (DrawLib.PrizeDistribution memory prizeDistribution, uint32 drawId)
returns (IPrizeDistributionHistory.PrizeDistribution memory prizeDistribution, uint32 drawId)
{
DrawRingBufferLib.Buffer memory buffer = _prizeDistributionsRingBufferData;

Expand All @@ -135,15 +134,15 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
/// @inheritdoc IPrizeDistributionHistory
function pushPrizeDistribution(
uint32 _drawId,
DrawLib.PrizeDistribution calldata _prizeDistribution
IPrizeDistributionHistory.PrizeDistribution calldata _prizeDistribution
) external override onlyManagerOrOwner returns (bool) {
return _pushPrizeDistribution(_drawId, _prizeDistribution);
}

/// @inheritdoc IPrizeDistributionHistory
function setPrizeDistribution(
uint32 _drawId,
DrawLib.PrizeDistribution calldata _prizeDistribution
IPrizeDistributionHistory.PrizeDistribution calldata _prizeDistribution
) external override onlyOwner returns (uint32) {
DrawRingBufferLib.Buffer memory buffer = _prizeDistributionsRingBufferData;
uint32 index = buffer.getIndex(_drawId);
Expand All @@ -164,7 +163,7 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
function _getPrizeDistribution(DrawRingBufferLib.Buffer memory _buffer, uint32 _drawId)
internal
view
returns (DrawLib.PrizeDistribution memory)
returns (IPrizeDistributionHistory.PrizeDistribution memory)
{
return _prizeDistributionsRingBuffer[_buffer.getIndex(_drawId)];
}
Expand All @@ -176,7 +175,7 @@ contract PrizeDistributionHistory is IPrizeDistributionHistory, Manageable {
*/
function _pushPrizeDistribution(
uint32 _drawId,
DrawLib.PrizeDistribution calldata _prizeDistribution
IPrizeDistributionHistory.PrizeDistribution calldata _prizeDistribution
) internal returns (bool) {

require(_drawId > 0, "DrawCalc/draw-id-gt-0");
Expand Down
2 changes: 1 addition & 1 deletion contracts/interfaces/IDrawBeacon.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ pragma solidity 0.8.6;

import "@pooltogether/pooltogether-rng-contracts/contracts/RNGInterface.sol";
import "./IDrawHistory.sol";
// import "../libraries/DrawLib.sol";


interface IDrawBeacon {

Expand Down
2 changes: 1 addition & 1 deletion contracts/interfaces/IDrawCalculator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import "./ITicket.sol";
import "./IDrawHistory.sol";
import "../PrizeDistributionHistory.sol";
import "../DrawPrize.sol";
import "../libraries/DrawLib.sol";


/**
* @title PoolTogether V4 DrawCalculator
Expand Down
1 change: 0 additions & 1 deletion contracts/interfaces/IDrawHistory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

pragma solidity 0.8.6;

import "../libraries/DrawLib.sol";
import "./IDrawBeacon.sol";

interface IDrawHistory {
Expand Down
2 changes: 1 addition & 1 deletion contracts/interfaces/IDrawPrize.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "./IDrawHistory.sol";
import "./IDrawCalculator.sol";
import "./IDrawBeacon.sol";
import "../libraries/DrawLib.sol";


interface IDrawPrize {
/**
Expand Down
38 changes: 29 additions & 9 deletions contracts/interfaces/IPrizeDistributionHistory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,30 @@

pragma solidity 0.8.6;

import "../libraries/DrawLib.sol";
import "./IDrawBeacon.sol";

interface IPrizeDistributionHistory {

///@notice PrizeDistribution struct created every draw
///@param bitRangeSize Decimal representation of bitRangeSize
///@param matchCardinality The number of numbers to consider in the 256 bit random number. Must be > 1 and < 256/bitRangeSize.
///@param startTimestampOffset The starting time offset in seconds from which Ticket balances are calculated.
///@param endTimestampOffset The end time offset in seconds from which Ticket balances are calculated.
///@param maxPicksPerUser Maximum number of picks a user can make in this draw
///@param numberOfPicks Number of picks this draw has (may vary across networks according to how much the network has contributed to the Reserve)
///@param distributions Array of prize distributions percentages, expressed in fraction form with base 1e9. Ordering: index0: grandPrize, index1: runnerUp, etc.
///@param prize Total prize amount available in this draw calculator for this draw (may vary from across networks)
struct PrizeDistribution {
uint8 bitRangeSize;
uint8 matchCardinality;
uint32 startTimestampOffset;
uint32 endTimestampOffset;
uint32 maxPicksPerUser;
uint136 numberOfPicks;
uint32[16] distributions;
uint256 prize;
}

/**
* @notice Emit when a new draw has been created.
* @param drawId Draw id
Expand All @@ -17,11 +37,11 @@ interface IPrizeDistributionHistory {
/**
* @notice Emitted when the PrizeDistribution are set/updated
* @param drawId Draw id
* @param prizeDistributions DrawLib.PrizeDistribution
* @param prizeDistributions IPrizeDistributionHistory.PrizeDistribution
*/
event PrizeDistributionsSet(
uint32 indexed drawId,
DrawLib.PrizeDistribution prizeDistributions
IPrizeDistributionHistory.PrizeDistribution prizeDistributions
);

/**
Expand All @@ -33,7 +53,7 @@ interface IPrizeDistributionHistory {
function getNewestPrizeDistribution()
external
view
returns (DrawLib.PrizeDistribution memory prizeDistribution, uint32 drawId);
returns (IPrizeDistributionHistory.PrizeDistribution memory prizeDistribution, uint32 drawId);

/**
* @notice Read the oldest PrizeDistribution from the prize distributions ring buffer.
Expand All @@ -44,7 +64,7 @@ interface IPrizeDistributionHistory {
function getOldestPrizeDistribution()
external
view
returns (DrawLib.PrizeDistribution memory prizeDistribution, uint32 drawId);
returns (IPrizeDistributionHistory.PrizeDistribution memory prizeDistribution, uint32 drawId);

/**
* @notice Gets array of PrizeDistributions for drawIds
Expand All @@ -53,7 +73,7 @@ interface IPrizeDistributionHistory {
function getPrizeDistributions(uint32[] calldata drawIds)
external
view
returns (DrawLib.PrizeDistribution[] memory);
returns (IPrizeDistributionHistory.PrizeDistribution[] memory);

/**
* @notice Gets the PrizeDistributionHistory for a drawId
Expand All @@ -62,7 +82,7 @@ interface IPrizeDistributionHistory {
function getPrizeDistribution(uint32 drawId)
external
view
returns (DrawLib.PrizeDistribution memory);
returns (IPrizeDistributionHistory.PrizeDistribution memory);

/**
* @notice Gets the number of PrizeDistributions stored in the prize distributions ring buffer.
Expand All @@ -81,15 +101,15 @@ interface IPrizeDistributionHistory {
*/
function pushPrizeDistribution(
uint32 drawId,
DrawLib.PrizeDistribution calldata prizeDistribution
IPrizeDistributionHistory.PrizeDistribution calldata prizeDistribution
) external returns (bool);

/**
* @notice Set existing Draw in prize distributions ring buffer with new parameters.
* @dev Updating a Draw should be used sparingly and only in the event an incorrect Draw parameter has been stored.
* @return Draw.drawId
*/
function setPrizeDistribution(uint32 drawId, DrawLib.PrizeDistribution calldata draw)
function setPrizeDistribution(uint32 drawId, IPrizeDistributionHistory.PrizeDistribution calldata draw)
external
returns (uint32); // maybe return drawIndex
}
42 changes: 0 additions & 42 deletions contracts/libraries/DrawLib.sol

This file was deleted.

Loading

0 comments on commit 692078f

Please sign in to comment.