The checks implemented in _acceptAdmin do not implement the comment pendingAdmin ≠ address(0). It should be || pendingAdmin == address(0). Either way, the second check is not needed and only if (msg.sender != pendingAdmin) is enough as msg.sender can never be the zero address.
The UniswapTwapOracle does never actually check if _tokens[i] is one of the tokens of _pools[i], only WETH is checked. Also add this check.
The UniswapTwapOracle is-supported check _pools[i] != address(0) does not make sense in the constructor. If _pools[i] == 0, then it would already have reverted in require(_isWEthPool(_pools[i], _wethAddress). Furthermore, it's the first initialization of these pools, so there should never be a reason to disable a pool at this point. Consider setting isSupportedPool[_pools[i]] = true; in constructor.
QA
_acceptAdmin
do not implement the commentpendingAdmin ≠ address(0)
. It should be|| pendingAdmin == address(0)
. Either way, the second check is not needed and onlyif (msg.sender != pendingAdmin)
is enough asmsg.sender
can never be the zero address.UniswapTwapOracle
does never actually check if_tokens[i]
is one of the tokens of_pools[i]
, only WETH is checked. Also add this check.UniswapTwapOracle
is-supported check_pools[i] != address(0)
does not make sense in the constructor. If_pools[i] == 0
, then it would already have reverted inrequire(_isWEthPool(_pools[i], _wethAddress)
. Furthermore, it's the first initialization of these pools, so there should never be a reason to disable a pool at this point. Consider settingisSupportedPool[_pools[i]] = true;
in constructor.