mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
46 lines
1.2 KiB
Solidity
46 lines
1.2 KiB
Solidity
pragma solidity >=0.5.0;
|
|
|
|
library PoolAddress {
|
|
bytes32 internal constant POOL_INIT_CODE_HASH =
|
|
0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54;
|
|
|
|
struct PoolKey {
|
|
address token0;
|
|
address token1;
|
|
uint24 fee;
|
|
}
|
|
|
|
function getPoolKey(
|
|
address tokenA,
|
|
address tokenB,
|
|
uint24 fee
|
|
) internal pure returns (PoolKey memory) {
|
|
if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);
|
|
return PoolKey({token0: tokenA, token1: tokenB, fee: fee});
|
|
}
|
|
|
|
function computeAddress(address factory, PoolKey memory key)
|
|
internal
|
|
pure
|
|
returns (address pool)
|
|
{
|
|
require(key.token0 < key.token1);
|
|
pool = address(
|
|
uint160(
|
|
uint256(
|
|
keccak256(
|
|
abi.encodePacked(
|
|
hex"ff",
|
|
factory,
|
|
keccak256(
|
|
abi.encode(key.token0, key.token1, key.fee)
|
|
),
|
|
POOL_INIT_CODE_HASH
|
|
)
|
|
)
|
|
)
|
|
)
|
|
);
|
|
}
|
|
}
|