StakingPool
does not use IStakingPool
to set minimum requirements for the contract.
Since StakingPool
does not inherit the list of function definitions from IStakingPool
, there are two separate interfaces for the StakingPool
contract. One is "StakingPool.sol" itself and the other is "IStakingPool.sol". This may cause the following problems:
when changing one of the interfaces, remember to change the other one
any error or discrepancy between interfaces may disrupt interaction with the deployed StakingPool
contract
The PriorityPool
contract uses IStakingPool
to interact with StakingPool
. Any difference between these two interfaces can cause communication problems between contracts. It is known that there are the following discrepancies:
StakingPool: function getMaxDeposits() public view returns (uint256)
vs IStakingPool: function getMaxDeposits() external view returns (uint256)
StakingPool: function removeStrategy(uint256 _index,bytes memory _strategyUpdateData,bytes calldata _strategyWithdrawalData) external
vs IStakingPool: function removeStrategy(uint256 _index) external
StakingPool: function setPoolIndex
does not exist vs IStakingPool: function setPoolIndex(uint16 _poolIndex) external
StakingPool: function token()
is in StakingRewardsPool contract vs IStakingPool: function token() external view returns (address)
StakingPool: poolIndex
is private variable (deprecated) vs IStakingPool: function poolIndex() external view returns (uint16)
Manual review.
Leaving it this way will only make the problem worse in the future. Make sure StakingPool is IStakingPool
and correct any discrepancies according to the table above.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.