28 lines
966 B
Solidity
28 lines
966 B
Solidity
// 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);
|
|
}
|
|
}
|