735546619e
Signed-off-by: T-Hax <>
37 lines
1.4 KiB
Solidity
37 lines
1.4 KiB
Solidity
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
pragma solidity =0.7.6;
|
|
|
|
import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';
|
|
import './PoolAddress.sol';
|
|
|
|
/// @notice Provides validation for callbacks from Uniswap V3 Pools
|
|
library CallbackValidation {
|
|
/// @notice Returns the address of a valid Uniswap V3 Pool
|
|
/// @param factory The contract address of the Uniswap V3 factory
|
|
/// @param tokenA The contract address of either token0 or token1
|
|
/// @param tokenB The contract address of the other token
|
|
/// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip
|
|
/// @return pool The V3 pool contract address
|
|
function verifyCallback(
|
|
address factory,
|
|
address tokenA,
|
|
address tokenB,
|
|
uint24 fee
|
|
) internal view returns (IUniswapV3Pool pool) {
|
|
return verifyCallback(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee));
|
|
}
|
|
|
|
/// @notice Returns the address of a valid Uniswap V3 Pool
|
|
/// @param factory The contract address of the Uniswap V3 factory
|
|
/// @param poolKey The identifying key of the V3 pool
|
|
/// @return pool The V3 pool contract address
|
|
function verifyCallback(address factory, PoolAddress.PoolKey memory poolKey)
|
|
internal
|
|
view
|
|
returns (IUniswapV3Pool pool)
|
|
{
|
|
pool = IUniswapV3Pool(PoolAddress.computeAddress(factory, poolKey));
|
|
require(msg.sender == address(pool));
|
|
}
|
|
}
|