infrastructure-upgrade/lib/v3-core/contracts/test/TickEchidnaTest.sol
T-Hax 735546619e
init
Signed-off-by: T-Hax <>
2023-04-08 18:46:18 +00:00

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);
}
}