Skip to content

Commit e3e5cda

Browse files
Add method to get max user stake
1 parent 8b5fb95 commit e3e5cda

File tree

6 files changed

+350
-12
lines changed

6 files changed

+350
-12
lines changed

.openzeppelin/unknown-30746.json

Lines changed: 334 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1541,6 +1541,340 @@
15411541
}
15421542
}
15431543
}
1544+
},
1545+
"fb03629654350fce2bef831cd33ff1d614c70cc6f0d4d17fd17025e845fb64aa": {
1546+
"address": "0x95DCF0d9e69A75B93cE420d5B13dDAA397bF7958",
1547+
"txHash": "0xcf9ca95d4ad3e4afa695b240d7a0b6271fe3abee24eccaf795f91dca89f091e8",
1548+
"layout": {
1549+
"solcVersion": "0.8.17",
1550+
"storage": [
1551+
{
1552+
"label": "_initialized",
1553+
"offset": 0,
1554+
"slot": "0",
1555+
"type": "t_uint8",
1556+
"contract": "Initializable",
1557+
"src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63",
1558+
"retypedFrom": "bool"
1559+
},
1560+
{
1561+
"label": "_initializing",
1562+
"offset": 1,
1563+
"slot": "0",
1564+
"type": "t_bool",
1565+
"contract": "Initializable",
1566+
"src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68"
1567+
},
1568+
{
1569+
"label": "_roles",
1570+
"offset": 0,
1571+
"slot": "1",
1572+
"type": "t_mapping(t_bytes32,t_struct(RoleData)3267_storage)",
1573+
"contract": "AccessControl",
1574+
"src": "@openzeppelin/contracts/access/AccessControl.sol:56"
1575+
},
1576+
{
1577+
"label": "active",
1578+
"offset": 0,
1579+
"slot": "2",
1580+
"type": "t_bool",
1581+
"contract": "LimitedTokenPool",
1582+
"src": "contracts/staking/token/LimitedTokenPool.sol:54"
1583+
},
1584+
{
1585+
"label": "lockKeeper",
1586+
"offset": 1,
1587+
"slot": "2",
1588+
"type": "t_contract(LockKeeper)7997",
1589+
"contract": "LimitedTokenPool",
1590+
"src": "contracts/staking/token/LimitedTokenPool.sol:56"
1591+
},
1592+
{
1593+
"label": "rewardsBank",
1594+
"offset": 0,
1595+
"slot": "3",
1596+
"type": "t_contract(RewardsBank)10670",
1597+
"contract": "LimitedTokenPool",
1598+
"src": "contracts/staking/token/LimitedTokenPool.sol:57"
1599+
},
1600+
{
1601+
"label": "mainConfig",
1602+
"offset": 0,
1603+
"slot": "4",
1604+
"type": "t_struct(MainConfig)17728_storage",
1605+
"contract": "LimitedTokenPool",
1606+
"src": "contracts/staking/token/LimitedTokenPool.sol:59"
1607+
},
1608+
{
1609+
"label": "limitsConfig",
1610+
"offset": 0,
1611+
"slot": "11",
1612+
"type": "t_struct(LimitsConfig)17745_storage",
1613+
"contract": "LimitedTokenPool",
1614+
"src": "contracts/staking/token/LimitedTokenPool.sol:60"
1615+
},
1616+
{
1617+
"label": "info",
1618+
"offset": 0,
1619+
"slot": "19",
1620+
"type": "t_struct(Info)17756_storage",
1621+
"contract": "LimitedTokenPool",
1622+
"src": "contracts/staking/token/LimitedTokenPool.sol:61"
1623+
},
1624+
{
1625+
"label": "stakers",
1626+
"offset": 0,
1627+
"slot": "24",
1628+
"type": "t_mapping(t_address,t_struct(Staker)17769_storage)",
1629+
"contract": "LimitedTokenPool",
1630+
"src": "contracts/staking/token/LimitedTokenPool.sol:63"
1631+
}
1632+
],
1633+
"types": {
1634+
"t_address": {
1635+
"label": "address",
1636+
"numberOfBytes": "20"
1637+
},
1638+
"t_bool": {
1639+
"label": "bool",
1640+
"numberOfBytes": "1"
1641+
},
1642+
"t_bytes32": {
1643+
"label": "bytes32",
1644+
"numberOfBytes": "32"
1645+
},
1646+
"t_contract(LockKeeper)7997": {
1647+
"label": "contract LockKeeper",
1648+
"numberOfBytes": "20"
1649+
},
1650+
"t_contract(RewardsBank)10670": {
1651+
"label": "contract RewardsBank",
1652+
"numberOfBytes": "20"
1653+
},
1654+
"t_mapping(t_address,t_bool)": {
1655+
"label": "mapping(address => bool)",
1656+
"numberOfBytes": "32"
1657+
},
1658+
"t_mapping(t_address,t_struct(Staker)17769_storage)": {
1659+
"label": "mapping(address => struct LimitedTokenPool.Staker)",
1660+
"numberOfBytes": "32"
1661+
},
1662+
"t_mapping(t_bytes32,t_struct(RoleData)3267_storage)": {
1663+
"label": "mapping(bytes32 => struct AccessControl.RoleData)",
1664+
"numberOfBytes": "32"
1665+
},
1666+
"t_string_storage": {
1667+
"label": "string",
1668+
"numberOfBytes": "32"
1669+
},
1670+
"t_struct(Info)17756_storage": {
1671+
"label": "struct LimitedTokenPool.Info",
1672+
"members": [
1673+
{
1674+
"label": "totalStake",
1675+
"type": "t_uint256",
1676+
"offset": 0,
1677+
"slot": "0"
1678+
},
1679+
{
1680+
"label": "totalDeposit",
1681+
"type": "t_uint256",
1682+
"offset": 0,
1683+
"slot": "1"
1684+
},
1685+
{
1686+
"label": "totalRewards",
1687+
"type": "t_uint256",
1688+
"offset": 0,
1689+
"slot": "2"
1690+
},
1691+
{
1692+
"label": "lastInterestUpdate",
1693+
"type": "t_uint256",
1694+
"offset": 0,
1695+
"slot": "3"
1696+
},
1697+
{
1698+
"label": "totalRewardsDebt",
1699+
"type": "t_uint256",
1700+
"offset": 0,
1701+
"slot": "4"
1702+
}
1703+
],
1704+
"numberOfBytes": "160"
1705+
},
1706+
"t_struct(LimitsConfig)17745_storage": {
1707+
"label": "struct LimitedTokenPool.LimitsConfig",
1708+
"members": [
1709+
{
1710+
"label": "minDepositValue",
1711+
"type": "t_uint256",
1712+
"offset": 0,
1713+
"slot": "0"
1714+
},
1715+
{
1716+
"label": "minStakeValue",
1717+
"type": "t_uint256",
1718+
"offset": 0,
1719+
"slot": "1"
1720+
},
1721+
{
1722+
"label": "fastUnstakePenalty",
1723+
"type": "t_uint256",
1724+
"offset": 0,
1725+
"slot": "2"
1726+
},
1727+
{
1728+
"label": "unstakeLockPeriod",
1729+
"type": "t_uint256",
1730+
"offset": 0,
1731+
"slot": "3"
1732+
},
1733+
{
1734+
"label": "stakeLockPeriod",
1735+
"type": "t_uint256",
1736+
"offset": 0,
1737+
"slot": "4"
1738+
},
1739+
{
1740+
"label": "maxTotalStakeValue",
1741+
"type": "t_uint256",
1742+
"offset": 0,
1743+
"slot": "5"
1744+
},
1745+
{
1746+
"label": "maxStakePerUserValue",
1747+
"type": "t_uint256",
1748+
"offset": 0,
1749+
"slot": "6"
1750+
},
1751+
{
1752+
"label": "stakeLimitsMultiplier",
1753+
"type": "t_uint256",
1754+
"offset": 0,
1755+
"slot": "7"
1756+
}
1757+
],
1758+
"numberOfBytes": "256"
1759+
},
1760+
"t_struct(MainConfig)17728_storage": {
1761+
"label": "struct LimitedTokenPool.MainConfig",
1762+
"members": [
1763+
{
1764+
"label": "name",
1765+
"type": "t_string_storage",
1766+
"offset": 0,
1767+
"slot": "0"
1768+
},
1769+
{
1770+
"label": "limitsMultiplierToken",
1771+
"type": "t_address",
1772+
"offset": 0,
1773+
"slot": "1"
1774+
},
1775+
{
1776+
"label": "profitableToken",
1777+
"type": "t_address",
1778+
"offset": 0,
1779+
"slot": "2"
1780+
},
1781+
{
1782+
"label": "rewardToken",
1783+
"type": "t_address",
1784+
"offset": 0,
1785+
"slot": "3"
1786+
},
1787+
{
1788+
"label": "rewardTokenPrice",
1789+
"type": "t_uint256",
1790+
"offset": 0,
1791+
"slot": "4"
1792+
},
1793+
{
1794+
"label": "interest",
1795+
"type": "t_uint256",
1796+
"offset": 0,
1797+
"slot": "5"
1798+
},
1799+
{
1800+
"label": "interestRate",
1801+
"type": "t_uint256",
1802+
"offset": 0,
1803+
"slot": "6"
1804+
}
1805+
],
1806+
"numberOfBytes": "224"
1807+
},
1808+
"t_struct(RoleData)3267_storage": {
1809+
"label": "struct AccessControl.RoleData",
1810+
"members": [
1811+
{
1812+
"label": "members",
1813+
"type": "t_mapping(t_address,t_bool)",
1814+
"offset": 0,
1815+
"slot": "0"
1816+
},
1817+
{
1818+
"label": "adminRole",
1819+
"type": "t_bytes32",
1820+
"offset": 0,
1821+
"slot": "1"
1822+
}
1823+
],
1824+
"numberOfBytes": "64"
1825+
},
1826+
"t_struct(Staker)17769_storage": {
1827+
"label": "struct LimitedTokenPool.Staker",
1828+
"members": [
1829+
{
1830+
"label": "stake",
1831+
"type": "t_uint256",
1832+
"offset": 0,
1833+
"slot": "0"
1834+
},
1835+
{
1836+
"label": "deposit",
1837+
"type": "t_uint256",
1838+
"offset": 0,
1839+
"slot": "1"
1840+
},
1841+
{
1842+
"label": "rewardsDebt",
1843+
"type": "t_uint256",
1844+
"offset": 0,
1845+
"slot": "2"
1846+
},
1847+
{
1848+
"label": "claimableRewards",
1849+
"type": "t_uint256",
1850+
"offset": 0,
1851+
"slot": "3"
1852+
},
1853+
{
1854+
"label": "lockedWithdrawal",
1855+
"type": "t_uint256",
1856+
"offset": 0,
1857+
"slot": "4"
1858+
},
1859+
{
1860+
"label": "stakedAt",
1861+
"type": "t_uint256",
1862+
"offset": 0,
1863+
"slot": "5"
1864+
}
1865+
],
1866+
"numberOfBytes": "192"
1867+
},
1868+
"t_uint256": {
1869+
"label": "uint256",
1870+
"numberOfBytes": "32"
1871+
},
1872+
"t_uint8": {
1873+
"label": "uint8",
1874+
"numberOfBytes": "1"
1875+
}
1876+
}
1877+
}
15441878
}
15451879
}
15461880
}

contracts/staking/token/LimitedTokenPool.sol

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,10 @@ contract LimitedTokenPool is Initializable, AccessControl, IOnBlockListener {
333333
return rewardsAmount + stakers[user].claimableRewards - stakers[user].rewardsDebt;
334334
}
335335

336+
function getMaxUserStakeValue(address user) public view returns (uint) {
337+
return _maxUserStakeValue(user);
338+
}
339+
336340
// INTERNAL METHODS
337341
function _addInterest() internal {
338342
if (info.lastInterestUpdate + mainConfig.interestRate > block.timestamp) return;

0 commit comments

Comments
 (0)