forked from Uniswap/v3-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTickEchidnaTest.sol
27 lines (21 loc) · 966 Bytes
/
TickEchidnaTest.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.7.6;
import '../libraries/Tick.sol';
contract TickEchidnaTest {
function checkTickSpacingToParametersInvariants(int24 tickSpacing) external pure {
require(tickSpacing <= TickMath.MAX_TICK);
require(tickSpacing > 0);
int24 minTick = (TickMath.MIN_TICK / tickSpacing) * tickSpacing;
int24 maxTick = (TickMath.MAX_TICK / tickSpacing) * tickSpacing;
uint128 maxLiquidityPerTick = Tick.tickSpacingToMaxLiquidityPerTick(tickSpacing);
// symmetry around 0 tick
assert(maxTick == -minTick);
// positive max tick
assert(maxTick > 0);
// divisibility
assert((maxTick - minTick) % tickSpacing == 0);
uint256 numTicks = uint256((maxTick - minTick) / tickSpacing) + 1;
// max liquidity at every tick is less than the cap
assert(uint256(maxLiquidityPerTick) * numTicks <= type(uint128).max);
}
}