diff --git a/.gitmodules b/.gitmodules index dee05c7..70d07d3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "lib/ring-buffer-lib"] path = lib/ring-buffer-lib url = https://github.com/GenerationSoftware/ring-buffer-lib +[submodule "lib/uniform-random-number"] + path = lib/uniform-random-number + url = https://github.com/generationsoftware/uniform-random-number diff --git a/lib/uniform-random-number b/lib/uniform-random-number new file mode 160000 index 0000000..380d903 --- /dev/null +++ b/lib/uniform-random-number @@ -0,0 +1 @@ +Subproject commit 380d90359d6979bcd654bbc1bc8d77144afa3274 diff --git a/remappings.txt b/remappings.txt index 3ef092d..dbeb410 100644 --- a/remappings.txt +++ b/remappings.txt @@ -4,3 +4,4 @@ openzeppelin=lib/openzeppelin-contracts/contracts/ pt-v5-twab-controller/=lib/pt-v5-twab-controller/src/ ring-buffer-lib/=lib/ring-buffer-lib/src/ owner-manager-contracts/=lib/owner-manager-contracts/contracts/ +uniform-random-number/=lib/uniform-random-number/src/ \ No newline at end of file diff --git a/src/libraries/TierCalculationLib.sol b/src/libraries/TierCalculationLib.sol index cc4b68a..e8d060f 100644 --- a/src/libraries/TierCalculationLib.sol +++ b/src/libraries/TierCalculationLib.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.19; +import { UniformRandomNumber } from "uniform-random-number/UniformRandomNumber.sol"; import { E, SD59x18, sd, unwrap, convert, ceil } from "prb-math/SD59x18.sol"; import { UD60x18, convert as convertUD60x18 } from "prb-math/UD60x18.sol"; @@ -89,7 +90,7 @@ library TierCalculationLib { - Portion of prize that was contributed by the vault */ // first constrain the random number to be within the vault total supply - uint256 constrainedRandomNumber = _userSpecificRandomNumber % (_vaultTwabTotalSupply); + uint256 constrainedRandomNumber = UniformRandomNumber.uniform(_userSpecificRandomNumber, _vaultTwabTotalSupply); uint256 winningZone = calculateWinningZone(_userTwab, _vaultContributionFraction, _tierOdds); return constrainedRandomNumber < winningZone;